Oracle GoldenGate 容灾、双业务解决方案
两单机、RAC集群服务器之间在非计划停机时保持业务连续性,在高可用基础上分担业务负载。
优点:
1.当任何一端挂起或崩溃时,快速回复和切换到另一端,不影响用户正常使用。
2.应急备份,支持断点续传,最小化数据损失。
3.负载均衡,提高系统整体性能。
缺点:必须区分两端数据库的业务,否则任何一端数据被更改对系统都会受影响,
双向复制系统架构如下:
1.防止数据循环
双向复制中,最主要的问题是需要防止数据的循环应用。在GoldenGate中,需要从两方面进行预防:
(1)防止Extract进程抓取Replicat进程的SQL操作。
在默认配置下,GoldenGate的Extract进程会忽略捕获由Replicat执行的SQL操作(Teradata除外,需要进行额外配置),所以这部分一般不需要额外设置。
(2)使Extract进程识别本地Replicat执行的DML事务,并进行忽略。
这步在Oracle(10g andlater)中的配置为在Extract进程加入参数:
TRANLOGOPTIONSEXCLUDEUSER
不同的数据库这里需要配置的参数不同。如果是Oracle9i或之前的版本,需要配置tracetable。
2.防止数据冲突
由于是双向复制,那么当两端都对同一数据进行操作时,就会发生冲突。比如同时对某行数据进行修改,修改的操作将会被覆盖(视LAG以及事务的先后);又比如两端插入或删除相同键值的数据。
对于这类数据冲突,最好是在业务应用层解决。比如,可以划分两端数据库应用的业务范围,一部分数据只在一端修改维护,另一端则修改维护其他数据;在两端定义不同的键值生成策略;关注同步表上的触发器和on delete cascade约束。也可以借助GoldenGate的映射和过滤功能,对于两端同步的数据进行区分。
总之,在配置双向复制环境时,需要综合考虑当时业务情况,一般都需要在应用层进行适当的修改,以防止数据冲突带来的数据丢失和不一致。
这个示例中,gatedba用户作为GoldenGate专用用户,gate01和gate02分别为两端数据库需要同步的schema(也可以同名,这里是为了便于区别),通过在两端Extract中配置排除gatedba的操作防止循环应用。以下gate01结尾的进程均在gate01用户所在数据库,gate02结尾的进程均在gate02用户所在数据库。
软件准备:
1.Oracle10.2.0.1
2.ggs_Windows_x86_ora10g_32bit
3.wls1033_win32
4.gg-director-serversetup_win_v11_1_1_1_0_001
5.gg-director-clientsetup_win_v11_1_1_1_0_001
==============================
Oracle DataaBase
添加用户
Oracle GoldenGate DirectorServer11.1.1.1.0_001 专用
database user: ggserver/ggserver11
配置
alter database add supplemental log data;
alter database add supplemental log data(primary key,unique,foreign key) columns;
GoldenGate
专用
gatedba/gatedba
测试用户
gate01/gate01
=====================
步骤:
1.安装ggs_Windows_x86_ora10g_32bit
2.
***************Gate01 服务器 添加GoldenGate 进程***************
dblogin userid gatedba,password gatedba
start mgr
edit param extgate1
/***
extract extgate1
userid gatedba,password gatedba
exttrailC:\ggs_Windows_x86_ora10g_32bit\dirdat\e1
tranlogoptions excludeuser gatedba
dynamicresolution
gettruncates
TABLE gate01.*;
***/
add extract extgate1,tranlog,begin now
add exttrailC:\ggs_Windows_x86_ora10g_32bit\dirdat\e1, extract extgate1
edit param ppgate1
/***
extract ppgate1
userid gatedba,password gatedba
rmthost 192.168.64.101,mgrport7809,compress, COMPRESSTHRESHOLD 0
rmttrailC:\ggs_Windows_x86_ora10g_32bit\dirdat\rep\e1
PASSTHRU
gettruncates
table gate01.*;
***/
add extract ppgate1,exttrailsource C:\ggs_Windows_x86_ora10g_32bit\dirdat\e1,beginnow
add rmttrail C:\ggs_Windows_x86_ora10g_32bit\dirdat\rep\e1, extract ppgate1
edit param repgate2
/***
replicat repgate2
userid gatedba,password gatedba
ASSUMETARGETDEFS
reperror default,discard
discardfileC:\ggs_Windows_x86_ora10g_32bit\dirrpt\repgate2.dsc,append,megabytes 200
gettruncates
HANDLECOLLISIONS
MAP gate02.*, TARGET gate01.*;
***/
add replicat repgate2,exttrailC:\ggs_Windows_x86_ora10g_32bit\dirdat\rep\e2, nodbcheckpoint
***************Gate02 服务器 添加GoldenGate 进程********************
dblogin userid gatedba,password gatedba
start mgr
edit param extgate2
/***
extract extgate2
userid gatedba,password gatedba
exttrailC:\ggs_Windows_x86_ora10g_32bit\dirdat\e2
tranlogoptions excludeuser gatedba
dynamicresolution
gettruncates
TABLE gate02.*;
***/
add extract extgate2,tranlog,begin now
add exttrailC:\ggs_Windows_x86_ora10g_32bit\dirdat\e2, extract extgate2
edit param ppgate2
/***
extract ppgate2
userid gatedba,password gatedba
rmthost 192.168.64.100,mgrport7809,compress, COMPRESSTHRESHOLD 0
rmttrail C:\ggs_Windows_x86_ora10g_32bit\dirdat\rep\e2
PASSTHRU
gettruncates
table gate02.*;
***/
add extract ppgate2,exttrailsourceC:\ggs_Windows_x86_ora10g_32bit\dirdat\e2,begin now
add rmttrail C:\ggs_Windows_x86_ora10g_32bit\dirdat\rep\e2, extract ppgate2
edit param repgate1
/***
replicat repgate1
userid gatedba,password gatedba
ASSUMETARGETDEFS
reperror default,discard
discardfile C:\ggs_Windows_x86_ora10g_32bit\dirrpt\repgate1.dsc,append,megabytes200
gettruncates
HANDLECOLLISIONS
MAP gate01.*, TARGET gate02.*;
***/
add replicat repgate1,exttrailC:\ggs_Windows_x86_ora10g_32bit\dirdat\rep\e1, nodbcheckpoint
===============================
3.安装Oracle Golden Gatedirector Server
oracle database :
ggserver/ggserver11
4.安装Oracle Golden Gatedirector client
配置框架如下图所示:
登陆帐户:
username:admin
password:admin
server: 192.168.64.100:7001
5.配置Oracle GDSC AdminTool
登陆帐户:
username:admin
password:admin
添加DataSource
host identity:
fully qualified domain name:192.168.64.100
manager port: 7809
data source name gate01--自定义别名,用来区分数据库
GoldenGate info:
Host operating system:WU
Database:ORA
Goldengate version:11.1.1.1
Default DB Credentials:
DSN: --没有Host解析不填
Username: gatedba --专用
password: gatedba
Access Control
owner: admin
Host is observale: yes
开启所有进程,双向复制开始。