1. 首页
  2. IT资讯

OGG双向同步配置(DDL+DML双向同步实施方案)

GoldenGate简介

GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库实时同步(real-time data synchronize)、双活(active-active high availability)。GoldenGate软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制。

一、双向同步配置架构图

123

二、双向同步配置注意点

1.防止数据循环

双向复制中,最主要的问题是需要防止数据的循环应用。在GoldenGate中,需要从两方面进行预防:

(1)防止Extract进程抓取Replicat进程的SQL操作。

在默认配置下,GoldenGate的Extract进程会忽略捕获由Replicat执行的SQL操作(Teradata除外,需要进行额外配置),所以这部分一般不需要额外设置。

(2)使Extract进程识别本地Replicat执行的DML事务,并进行忽略。

这步在Oracle(10g and later)中的配置为在Extract进程加入参数:

TRANLOGOPTIONS EXCLUDEUSER <user name>进行排除。

e.g: TRANLOGOPTIONS EXCLUDEUSER ogg

不同的数据库这里需要配置的参数不同。如果是Oracle9i或之前的版本,需要配置tracetable。

2.防止数据冲突

由于是双向复制,那么当两端都对同一数据进行操作时,就会发生冲突。比如同时对某行数据进行修改,修改的操作将会被覆盖(视LAG以及事务的先后);又比如两端插入或删除相同键值的数据。

对于这类数据冲突,最好是在业务应用层解决。比如,可以划分两端数据库应用的业务范围,一部分数据只在一端修改维护,另一端则修改维护其他数据;在两端定义不同的键值生成策略;关注同步表上的触发器和on delete cascade约束。也可以借助GoldenGate的映射和过滤功能,对于两端同步的数据进行区分。

总之,在配置双向复制环境时,需要综合考虑当时业务情况,一般都需要在应用层进行适当的修改,以防止数据冲突带来的数据丢失和不一致。

三、方案实施

服务器名

IP

ORACLE

系统

ORACLE_SID

Master

192.168.30.27

Oracle11g

Centos 6.3

64 bit

Oggtest

Backup

192.168.30.28

Oracle11g

Centos 6.3

64 bit

testw

3.1 环境准备及ogg安装

3.1.1. 下载OGG软件并解压安装

下载ogg并解压就完成了安装J

服务端:

[oracle@Test-DB01 ora11g]$ mkdir -p /opt/ora11g/ogg

[oracle@Test-DB01 ora11g]$ cd /opt/ora11g/ogg

[oracle@Test-DB01 ora11g]$ tar –xvf fbo_ggs_Linux_x64_ora10g_64bit.tar

[oracle@Test-DB01 ora11g]$ chown -R oracle:oinstall /opt/ora11g/ogg 客户端(目录不一样):

[oracle@Test-DB01 ora11g]$ mkdir -p /opt/oracle/ogg

[oracle@Test-DB01 ora11g]$ cd /opt/ oracle /ogg

[oracle@Test-DB01 ora11g]$ tar –xvf fbo_ggs_Linux_x64_ora10g_64bit.tar

[oracle@Test-DB01 ora11g]$ chown -R oracle:oinstall /opt/ oracle /ogg

3.1.2. 准备OGG环境

l 主备服务器上都要配置:

[oracle@Test-DB01 ora11g]$ vi /home/oracle/.bash_profile

增加如下两行:

export GGATE=$ORACLE_BASE/ogg

export LD_LIBRARY_PATH_64=$ORACLE_HOME/lib

生效环境变量 [oracle@Test-DB01 ora11g]$ source /home/oracle/.bash_profile

3.1.3. Oracle归档日志设置

l主备服务器上都要配置(在单向环境下从无需配置)

1) 查看归档日志模式:

sqlplus / as sysdba select log_mode,supplemental_log_data_min,force_logging from v$database;

2) 更改归档模式(在生产环境下一般都开启了归档模式,不执行)

shutdown immediate; startup mount; alter database archivelog; alter database open; alter system set log_archive_dest_1=’location=/opt/ora11g/flash_recovery_area/ORCL/archivelog’ scope=both;

3) 配置日志模式(打开强制规档与补充日志模式)

alter database add supplemental log data; alter database force logging;

4) 查看配置结果:

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;

5) 切换归档日志:

SQL> alter system switch logfile;

3.1.4. 创建ogg用户帐号

l主备服务器上都要配置(在单向环境下从无需配置)

su – oracle sqlplus /nolog conn / as sysdba;

create user ogg identified by ogg default tablespace users temporary tablespace TEMP; grant connect,resource to ogg; grant create session,alter session 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;

3.1.5. 配置GoldenGate软件

su – oracle cd /opt/ora11g/ogg ./ggsci

–如果找不到.so文件,注意检查$LD_LIBRARY_PATH(和系统自带的不同)环境变量

GGSCI (test) 1> create subdirs

3.1.6. 配置主从一致

数据泵的方式进行倒数据

export ORACLE_SID=orcl

expdp system/oracle directory=data_pump_dir SCHEMAS=SVD,CTR,PAL,YLWL,PST,MSG,CTS,SND,SAL,PORTAL,BIL,ITD,OPRT,MESSAGER,STAT dumpfile=expdp_orcl02.dmp logfile=expdp_orcl02.log

scp -P 99 /opt/ora11g/admin/orcl/dpdump/expdp_orcl02.dmp oracle@172.16.3.63:/opt/ora11g/admin/orcl/dpdump/expdp_orcl02.dmp

=====================================================================

export ORACLE_SID=orcl

impdp system/oracle directory=data_pump_dir dumpfile=expdp_orcl02.dmp PARALLEL=12 logfile=impdp_orcl02.log

3.2 主从配置

3.2.1. 相关进程说明

Mgr 主进程:负责端口监听,以及进程守护

Extract 抽取进程:负责抽取指定的语句,并写入到本地的文件里

Pump 发送进程:负责把本地的文件发送到远端服务器

检查表 :复制进程需要的表

Replicat 复制进程: 复制进程,把主过来的文件复制到本地数据库

3.2.2. Oracle相关配置

l主备服务器上都要配置(此配置为DDL配置,如DML无需配置)

SQL> grant dba to ogg; SQL> @marker_setup 说明: 均指定用户ogg SQL> @ddl_setup 说明: 11.1.1.2需要手动输入 ogg (INITIALSETUP,yes) SQL> @role_setup SQL> grant GGS_GGSUSER_ROLE to ogg; SQL> @ddl_enable SQL> @marker_status.sql

SQL> @?/rdbms/admin/dbmspool.sql

SQL> @ddl_pin.sql ogg

注1: 执行dbmspool包将在数据库中创建DBMS_SHARED_POOL包,之后ddl_pin包需要用到

注2: 执行ddl_pin.sql通过dbms_shared_pool.keep存储过程将DDLReplication相关对象keep在共享池中,以保证这些对象不要RELOAD,提升性能。

3.2.3. OGG相关配置

进入控制台进行配置

/opt/ora11g/ogg/ggsci

A. 配置mgr主进程组

edit params mgr

port 7809 /*mgr所用端口号*/

dynamicportlist 7800-8000 /*mgr可用的端口范围*/

autostart extract * /*自动启动抽取进程*/

autorestart extract *, waitminutes 2, resetminutes 5 /*自动重启抽取进程*/

lagreporthours 1 /*每隔1小时检查延迟报告*/

laginfominutes 3 /* 每隔3分钟检查延迟,如果超过延迟阈值,将写入错误日志*/

lagcriticalminutes 5 /*延迟阈值5分钟*/

purgeoldextracts /opt/ora11g/ogg/dirdat/rt*, usecheckpoints, minkeepdays 3

/*队列传递结束后,依然保留本地队列3天*/

配置完成后启动mgr进程

start mgr

B. 配置Extract进程组

配置抓取进程eora

edit params eora

extract eora

dynamicresolution

setenv (ORACLE_SID=testw)

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid ogg,password ogg

exttrail /opt/ora11g/ogg/dirdat/et

tranlogoptions excludeuser ogg

ddl include all

ddloptions addtrandata, report

table hr.*;

添加抽取进程

add extract eora, tranlog,begin now

添加本地trail文件

add exttrail /opt/ora11g/ogg/dirdat/et,extract eora

启动服务

start extract eora

C. 配置pump进程组

edit params pump_so

extract pump_so

dynamicresolution

passthru

rmthost 192.168.30.41,mgrport 7809,compress

rmttrail /opt/oracle/ogg/dirdat/pt

table hr.*;

添加pump进程

add extract pump_so,exttrailsource /opt/ora11g/ogg/dirdat/et

添加远程trail文件

add rmttrail /opt/oracle/ogg/dirdat/pt,extract pump_so

说明: 指定远程trail文件

启动pump进程

start extract pump_so

D. 添加检查表

编辑全局配置文件

edit params ./GLOBALS CHECKPOINTTABLE ogg.checkpoint

exit

export ORACLE_SID=test

./ggsci

GGSCI (slave) 1> dblogin userid ogg,password ogg Successfully logged into database.

GGSCI (slave) 2> add checkpointtable ogg.checkpoint Successfully created checkpoint table OGG.CHECKPOINT.

E. 配置replicat进程组

edit params repl

replicat repl

setenv (ORACLE_SID=testw)

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid ogg,password ogg

assumetargetdefs

reperror default,discard

discardfile /opt/oracle/ogg/dirrpt/repl.dsc,append,megabytes 50

dynamicresolution DBOPTIONS SUPPRESSTRIGGERS

DBOPTIONS DEFERREFCONST map hr.*, target hr.*;

2) 添加复制进程 add replicat repl,exttrail /opt/oracle/ogg/dirdat/pt, CHECKPOINTTABLE ogg.checkpoint

3) 启动进程 start repl

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29578568/viewspace-2138128/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/195097.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code