1 GoldenGate简要说明
GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一。
GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步。
1.1 Golden Gate技术结构
GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicate进程,下面对其一一说明:
Manager进程是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程, 告错误及时间,分配数据存储空间,发布阀值 告等。
Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,我们重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。
Pump进程运行在数据库源端,其作用非常简单。如果源端使用了本地trail文件,那么Pump进程就会把Trail文件以数据块的形式通过TCP/IP协议发送到目标端,我们下面的配置都是这种方式。Pump进程本质是Extract进程的一种特殊形式,如果不使用Trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。
与Pump进程相对应的叫Server Collector进程,这个进程不需要引起我们关注,因为在实际操作过程中无需对其进行任何配置,它运行在目标端,任务就是把Extract/Pump进程投递过来的数据块重新组装成Trail文件。
Replicate进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。
1.2 Golden Gate拓扑结构
GoldenGate提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑结构,
根据实际需求情况,我们需要进行的是一对一复制,且只是复制部分表数据,所以这里仅探讨一对一复制的安装配置,而且对于DDL复制的支持这里也不做研究。
2 单机à单机复制配置
2.1 环境简介
性质 |
IP |
系统 |
ORACLE版本 |
源端 |
192.168.100.3 |
RHEL6.5 |
11.2.0.4 |
目标端 |
192.168.100.4 |
RHEL6.5 |
11.2.0.4 |
2.2 源端安装GoldenGate
创建GoldenGate安装目录并解压安装文件(oracle用户)
mkdir /home/oracle/ogg
unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
注意:使用的安装包一定要与平台一致
检查必须的lib包,gg在Linux和unix下安装,需要oracle的lib环境以及$ORACLE_HOME/lib下的几个包,所以必须安装在oracle之后,且确保在环境变量中加入:
export GGATE_HOME=/u01/oracle/ogg
export LD_LIBRARY_PATH=$GGATE_HOME:$ORACLE_HOME/lib
AIX中为LIBPATH
注意:添加后需使参数文件生效
. .bash_profile
解压路径下: ldd ggsci
安装GoldenGate
进入OGG控制台创建OGG工作目录
然后在安装目录下执行 ./ggsci 进入OGG控制台
执行命令 create subdirs创建工作目录,显示如下:
GGSCI (single1) 1> create subdirs
Creating subdirectories under current directory /home/oracle/ogg
Parameter files /home/oracle/ogg/dirprm: already exists
Report files /home/oracle/ogg/dirrpt: created
Checkpoint files /home/oracle/ogg/dirchk: created
Process status files /home/oracle/ogg/dirpcs: created
SQL script files /home/oracle/ogg/dirsql: created
Database definitions files /home/oracle/ogg/dirdef: created
Extract data files /home/oracle/ogg/dirdat: created
Temporary files /home/oracle/ogg/dirtmp: created
Stdout files /home/oracle/ogg/dirout: created
2.3 目标端安装GoldenGate
建立OGG安装目录,然后将压缩包解压到目录中,进入cmd控制台,创建工作目录,
操作步骤显示如下:
2.4 配置源端数据库
数据库模式配置
源端数据库必须开启归档模式
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 4
Next log sequence to archive 6
Current log sequence 6
如果没有开启:
Alter databasearchivelog;
开启最小附加日志
select supplemental_log_data_min from v$database;
如果没有开启:
Alter database add supplemental log data;
源端数据库创建GoldenGate数据库用户并授权:(我们这里以ogg为例,使用其他亦可)
create user ogg identified by oracle;
grant connect,resource,unlimited tablespace to ogg;
grant execute on utl_file to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on DBMS_FLASHBACK to ogg;
添加表级transdata
GGSCI (single1) 2> dblogin userid ogg,password oracle
Successfully logged into database.
GGSCI (single1) 3> add trandata lm.*
2015-10-31 22:49:14 WARNING OGG-00869 No unique key is defined for table ‘LM_T1’. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
Logging of supplemental redo data enabled for table LM.LM_T1.
add trandata:
2.5 配置源端进程组
配置管理进程mgr:
GGSCI(NDSCDB1) 1> edit param mgr
(粘贴下面这段配置)
PORT 7839
DYNAMICPORTLIST 7840-7939
–AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
MANAGER进程参数配置说明:
PORT:指定服务监听端口;这里以7839为例,默认端口为7809
DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口;
COMMENT:注释行,也可以用—来代替;
AUTOSTART:指定在管理进程启动时自动启动哪些进程;
AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。
LAGREPORT、LAGINFO、LAGCRITICAL:
定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。
启动管理进程:
GGSCI (single1) 12> start mgr
Manager started.
查看进程状态可发现 MANAGER状态为 RUNNING:
GGSCI (single1) 13> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNIN
配置抽取进程:
GGSCI (single1) 4> add extract extnd,tranlog ,begin now
EXTRACT added.
GGSCI (single1) 5> add exttrail ./dirdat/nd,extract extnd,megabytes 100
EXTTRAIL added.
Megabytes:指定队列大小,本处设置表示100M。
GGSCI (single1) 6> edit param extnd
(粘贴下面这段配置)
EXTRACT extnd
setenv(NLS_LANG = “AMERICAN_AMERICA.UTF8”) 从哪里来br>
SETENV(ORACLE_HOME = “/u01/oracle/oracle/product/10.2.0/db_1”)
SETENV(ORACLE_SID = “single1”)
USERID ogg, PASSWORD oracle
–GETTRUNCATES
REPORTCOUNT EVERY 1 MINUTES, RATE
DISCARDFILE ./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024
–THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000
DBOPTIONS ALLOWUNUSEDCOLUMN
WARNLONGTRANS 2h,CHECKINTERVAL 3m
EXTTRAIL ./dirdat/nd
–TRANLOGOPTIONSEXCLUDEUSER USERNAME
FETCHOPTIONS NOUSESNAPSHOT
TRANLOGOPTIONS CONVERTUCS2CLOBS
TABLE lm.lm_t1;
添加传输进程,配置参数
GGSCI (single1) 8> add extract dpend,exttrailsource ./dirdat/nd
EXTRACT added.
GGSCI (single1) 9> add rmttrail /home/oracle/ogg/dirdat/nd.extrat dpend
ERROR: file portion must be two characters. ——存文件的路径必须是两个字符。
GGSCI (single1) 11> add rmttrail /home/oracle/ogg/dirdat/nd,extract dpend
RMTTRAIL added.
GGSCI(NDSCDB1) 4> edit params dpend
(粘贴下面这段配置)
EXTRACT dpend
SETENV(NLS_LANG = “AMERICAN_AMERICA.UTF8”)
USERID ogg, PASSWORD oracle
PASSTHRU
RMTHOST 192.168.100.4, MGRPORT 7839, compress
RMTTRAIL /home/oracle/ogg/dirdat/nd
TABLE lm.lm_t1;
抽取进程和传输进程其实都是EXTRACT进程,也可以配置在一个进程完成这两个功能,但是当 络传输有问题时,这样抽取也就不能继续运行了,所以推荐分开配置为两个进程;
EXTRACT进程参数配置说明:
SETENV:配置系统环境变量
USERID/ PASSWORD:指定OGG连接数据库的用户名和密码,这里使用3.4部分中创建的数据库用户OGG;
COMMENT:注释行,也可以用—来代替;
TABLE:定义需复制的表,后面需以;结尾
TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:
是否在队列中写入后影像,缺省复制
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:
是否在队列中写入前影像,缺省不复制
GETUPDATES|IGNOREUPDATES:
是否复制UPDATE操作,缺省复制
GETDELETES|IGNOREDELETES:
是否复制DELETE操作,缺省复制
GETINSERTS|IGNOREINSERTS:
是否复制INSERT操作,缺省复制
GETTRUNCATES|IGNORETRUNDATES:
是否复制TRUNCATE操作,缺省不复制;
RMTHOST:指定目标系统及其GoldengateManager进程的端口 ,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输;
RMTTRAIL:指定写入到目标断的哪个队列;
EXTTRAIL:指定写入到本地的哪个队列;
SQLEXEC:在extract进程运行时首先运行一个SQL语句;
PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程;
REPORT:定义自动定时 告;
STATOPTIONS:定义每次使用stat时统计数字是否需要重置;
REPORTCOUNT: 告已经处理的记录条数统计数字;
TLTRACE:打开对于数据库日志的跟踪日志;
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
DBOPTIONS:指定对于某种特定数据库所需要的特殊参数;
TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0
WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;
2.6 配置目标数据库
目标库创建GoldenGate数据库用户并授权:
create user ogg identified by oracle default tablespace DATA_OL;
grant connect,resource,unlimited tablespace to ogg;
grant execute on utl_file to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on DBMS_FLASHBACK to ogg;
grant insert any table to ogg;
grant delete any table to ogg;
grant update any table to ogg;
添加checkpoint表
SQL> create table lm_t1(id number);
然后在参数文件中输入
GGSCHEMA ogg
CHECKPOINT TABLE lm2.lm_t1
2.7 配置目标端进程组
配置管理进程
配置复制进程
REPLICAT进程参数配置说明:
ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;
SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。
MAP:用于指定源端与目标端表的映射关系;
MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;
REPERROR:定义出错以后进程的响应,一般可以定义为两种:
ABEND,即一旦出现错误即停止复制,此为缺省配置;
DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
SQLEXEC:在进程运行时首先运行一个SQL语句;
GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。
MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。
2.8 启动进程进行数据同步
启动源端进程组
启动抽取进程和传输进程:
start extnd
start dpend
启动后使用info all查看进程状态,正常status应该RUNNING,显示如下:
GGSCI (NDSCDB1)11> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPEND 00:00:00 00:15:32
EXTRACT RUNNING EXTND 00:00:00 00:00:04
启动目标端进程
start repnd
显示如下:
到此OGG的安装配置就完成了,可以进行数据同步测试了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 RACà单机复制配置
3.1 环境简介
性质 |
IP |
系统 |
ORACLE版本 |
源端 |
10.123.112.201/10.123.112.202 |
LINUX rhel5 64位 |
10.2.0.1 |
目标端 |
10.123.112.235 |
LINUX rhel5 32位 |
10.2.0.1 |
3.2 源端安装OCFS2集群文件系统
RAC环境中为了实现高可用性,需将OGG安装在集群文件系统中,这样OGG可以访问RAC中的所有节点,我们这里测试采用OCFS2文件系统。
从http://oss.oracle.com下载与LINUX内核相符的OCFS2 RPM包
LINUX下执行uname –r查看系统内核版本 eg:
[oracle@node2ocfs]$ uname -r
2.6.18-92.el5
使用ROOT用户安装OCFS2的RPM包
[root@node1ocfs]# rpm -ivh ocfs2-tools-1.2.7-1.el5.x86_64.rpm
ocfs2console-1.2.7-1.el5.x86_64.rpm
ocfs2-2.6.18-92.el5-1.2.9-1.el5.x86_64.rpm
进入OCFS2控制台界面
[root@node1 ~]#ocfs2console
在出现的窗体中选择[Clucster]-[ConfigureNodes]在”NodeConfiguration”对话框中,输入2个专用互连的节点名、IP 地址、端口 后,选择 [Clucster]-[PropagateCluster Configuration] ,提示”Finished”。
配置后的信息显示如下:
在集群中的所有节点上以 root 用户帐户的身份运行以下命令
export PATH=$PATH:/sbin:/usr/sbin
/etc/init.d/o2cb enable
创建ocfs2文件系统,其中-N选项用于指明最多允许多少个节点同时使用此文件系统:
# mkfs -t ocfs2-N 2 /dev/sdh1
挂载分区:
# mount /dev/sdh1/ggate
配置启动自动载入(所有节点):
export PATH=$PATH:/sbin:/usr/sbin
chkconfig –add o2cb
/etc/init.d/o2cb configure
在/etc/rc.local增加入下内容:
chown -Roracle:dba /ggate
chmod -R 775 /ggate
3.3 源端安装GoldenGate
在GoldenGate安装目录(OCFS2目录/ggate)解压安装文件
unzipogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip
tar–xvf fbo_ggs_Linux_x64_ora10g_64bit.tar
设置环境变量
在用户参数文件中添加以下内容:
exportGGATE_HOME=/ggate
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!