GoldenGate_Oracle灾备_双业务解决方案——双向复制配置

本文介绍Oracle GoldenGate双向复制方案,实现两数据库间的数据同步及故障转移,确保业务连续性和负载均衡。讨论了配置过程中的关键点,如防止数据循环与冲突,以及具体的实施步骤。

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 <user name> 进行排除。

不同的数据库这里需要配置的参数不同。如果是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

 

开启所有进程,双向复制开始。

第1章 GoldenGate概述 5 1.1 GoldenGate技术原理 5 1.2 GoldenGate可靠的复制 8 1.3 GoldenGate支持操作系统和数据库类型 8 第2章 安装GoldenGate 9 2.1 安装GoldenGate环境 9 2.2 分别在源数据库,目标数据库安装GoldenGate 9 2.2.1 下载GoldenGate 9 2.2.2 解压 10 2.2.3 安装GoldenGate 10 2.2.4 同时在目标数据库安装GoldenGate 11 第3章 把源数据库的数据同步到目标数据库中 11 3.1 设置ORACLE_HOME,ORACLE_SID环境变量 11 3.2 在源数据库ora01上打开归档日志及其辅助日志 12 3.3 在源数据库,目标数据库创建GoldenGate GLOBALS参数文件 13 3.3.1 在源数据库创建 13 3.3.2 创建Goldengate manager服务 13 3.3.3 在目标数据库安装上面步骤创建manager 14 3.4 在源数据库,目标数据库配置mgr,启动manager进程 14 3.4.1 配置manager服务的mgr配置文件 14 3.4.2 启动mgr 15 3.4.3 同样在目标数据库配置mgr文件 15 3.5 测试把源数据库数据同步到目标数据库数据库上 16 3.5.1 在源数据库创建test01数据库用户 16 3.5.2 执行GoldenGate的测试脚本,创建表 16 3.5.3 插入数据脚本 17 3.5.4 在goldengate中用oracle用户登陆数据库 17 3.5.5 增加需要传输的用户表 18 3.5.6 在目标数据库创建用户及其表结构 18 3.6 用goldengate中的direct load方式导入数据到目标数据库的test02用户表上 19 3.6.1 在源数据库配置一个extract进程 eini01 19 3.6.2 在目标数据库端配置一个replicat进程 19 3.6.3 在源数据库执行初始化过程 20 3.6.4 验证目标数据库端的test02用户表数据是否和源数据库一样 20 第4章 把源数据库的修改数据同步到目标数据库中 21 4.1 在源数据库配置一个EXTRACT进程及配置其文件 21 4.1.1 配置EXTRACT文件 21 4.1.2 在GGSCI.exe增加一个EXTRACT进程 22 4.2 配置data pump 23 4.2.1 在源数据库端添加一个pump进程 23 4.2.2 在源数据库的ggsci中增加extract进程 24 4.2.3 在源数据库执行RMTTRAIL 24 4.3 启动data pump capture process 24 4.4 在目标数据库端配置change delivery 26 4.5 在目标数据库中创建goldengate专属用户及其表 26 4.6 在目标数据库配置replicat进程 27 4.6.1 在ggsci增加一个replicat进程 27 4.6.2 编辑配置replicat文件 27 4.7 启动replicat进程 28 4.8 测试检查同步结果 28 4.8.1 在源数据库执行插入数据 28 第5章 把源数据库的DDL(表结构)修改同步到目标数据库中 32 5.1 在源数据库端关闭数据库的回收站 32 5.2 编辑源数据库参数文件GLOBALS 32 5.3 在源数据库创建goldengate01用户,并创建goldengate所需要的表 33 5.4 检查源数据库上的表是否安装好 35 5.5 修改源数据库配置extract文件 35 5.6 重新启动extract进程 36 5.7 验证源数据库是否可以同步表结构到目标数据库中 36 第6章 配置源数据库、目标数据库的双向数据传输 36 6.1 关闭目标数据库回收站,打开数据库辅助日志 37 6.2 在源数据库端添加checkpoint表,实现一致性 37 6.3 在源数据库增加一个replicat进程 38 6.4 在源数据库创建一个checkpoint表 38 6.5 编辑配置replicat进程 39 6.6 在目标数据库端配置GLOBALS文件 39 6.7 在目标数据库安装goldengate用户需要的表 39 6.8 在目标数据库配置一个extract进程 40 6.9 在目标数据库端配置一个pump进程 40 6.10 在源数据库端启动replicat进程 42 6.11 在目标数据库中启动extract、replicat的进程 42 6.12 目标数据库可以把数据、表结构的修过同步到源数据库服务器上 42 第7章 备注: 44 7.1 Oracle官网的下载地址 44 7.2 GoldenGate的GLOBALS配置文件内容 44 7.3 GoldenGate的eiex01配置文件内容 44 7.4 GoldenGate的epmp01配置文件内容 44 7.5 GoldenGate的rora01配置文件内容 45 7.6 GoldenGate的eiexbb配置文件内容 45 7.7 GoldenGate的epmpbb配置文件内容 45 7.8 GoldenGate的rorabb配置文件内容 45 7.9 更改GoldenGate复制时间点 46 7.10 查看GoldenGate命令格式 46 7.11 查看manager,extract,replicat是否运行 47 7.12 查看goldengate进程的错误 48
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值