GoldenGate 双向复制解决方案

本文介绍了一种使用GoldenGate实现数据库双向复制的方法。通过详细步骤展示了如何设置源和目标数据库,包括用户配置、Extract和Replicat的创建及启动过程。测试表明,此配置能有效确保两个数据库间的实时数据同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双向复制方案简介

在双向复制(Bidirectional)方案中,可以采用以下两种部署方式:

方式一:配置源和目标数据库可以同时保持Active 状态,同时进行应用系统的事务处理,

此时需由应用系统进行控制,避免对同一记录进行处理产生的冲突。

方式二:配置源为Active,目标为Standing-by,在源出现故障时,切换到目标数据库。

在源端和目标端都需要配置Extract 和Replicat 来实现双向复制。在双向复制方案中最重要的避免循环,即在由源数据库向目标端插入数据的时候,不应该再产生Trail(CDC 数据),否则将进入一个死循环。GoldenGate 采用排除同步时用户的方式来实现双向复制。

双向复制方案实现过程

在双向复制的过程中,每个数据库既是源数据库又是目标数据库,为便于理解,在下面的描述中,我们将左面的数据库称为“源数据库”,右面的数据库称为“目标数据库”。

2.1 同步表说明

本文以“TCUSTMER”表作为同步的数据库表。建表脚本如下:

CREATE TABLE tcustmer

(

cust_code VARCHAR2(4),

name VARCHAR2(30),

city VARCHAR2(20),

state CHAR(2),

PRIMARY KEY (cust_code)

USING INDEX

);

2.2 用户配置

2.2.1 同步用户

该用户用于在GoldenGate 中将源数据库中的数据同步到目标数据库,该用户必须能够访问源数据库用户和目标数据库用户下面的所有数据。

本文中以“gg_bi”作为同步用户。

2.2.2 源数据库用户

本文中以“gg_src”作为源数据库用户。

2.2.3 目标数据库用户

本文中以“gg_tgt”作为目标数据库用户。

2.3 源数据库端配置

2.3.1 增加Extract

GGSCI > ADD EXTRACT EXTBI, TRANLOG, BEGIN NOW, THREADS 1

EXTRACT added.

GGSCI > EDIT PARAMS EXTBI

EXTRACT EXTBI

USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户

TRANLOGOPTIONS EXCLUDEUSER gg_bi ――将同步用户进行排除,避免循

RMTHOST <TARGET HOST>, MGRPORT 10002

RMTTRAIL ./dirdat/bi

TABLE gg_src.TCUSTMER; ――这里为实际要同步的用户及其数据库表

GGSCI > ADD RMTTRAIL ./dirdat/bi, EXTRACT EXTBI,MEGABYTES 5

GGSCI > START EXTRACT EXTBI

2.3.2 增加Replicat

下面是增加Check Point,如果已经配置检查点,则不用再次执行

GGSCI> EDIT PARAMS ./GLOBALS

增加下面一行

CHECKPOINTTABLE gg_src.ggschkpt

GGSCI> EXIT ――重新登录以激活global 参数

Shell> ggsci

GGSCI> DBLOGIN USERID gg_src, PASSWORD gg_src

GGSCI> ADD CHECKPOINTTABLE

GGSCI > ADD REPLICAT REPBI, EXTTRAIL ./dirdat/bi

REPLICAT added.

GGSCI > EDIT PARAM REPBI

REPLICAT REPBI

USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/REPBI.DSC, PURGE

MAP gg_tgt.tcustmer, TARGET gg_src.tcustmer;

GGSCI > START REPLICAT REPBI

2.3.3 检查启动状态

查看Extract 和Replicat 状态,确保都正常运行

GGSCI > info all

Program Status Group Lag Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING EXTBI 00:00:00 00:00:09

REPLICAT RUNNING REPBI 00:00:00 00:00:04

2.4 目标数据库配置

2.4.1 增加Extract

GGSCI > ADD EXTRACT EXTBI, TRANLOG, BEGIN NOW, THREADS 1

EXTRACT added.

GGSCI > EDIT PARAMS EXTBI

EXTRACT EXTBI

USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户

TRANLOGOPTIONS EXCLUDEUSER gg_bi ――将同步用户进行排除,避免循

RMTHOST <SOURCE HOST>, MGRPORT 10001

RMTTRAIL ./dirdat/bi

TABLE gg_tgt.TCUSTMER;

GGSCI > ADD RMTTRAIL ./dirdat/bi, EXTRACT EXTBI,MEGABYTES 5

GGSCI > START EXTRACT EXTBI

2.4.2 增加Replicat

建立Check Point,同上,这里省略。

GGSCI > ADD REPLICAT REPBI, EXTTRAIL ./dirdat/bi

REPLICAT added.

GGSCI > EDIT PARAM REPBI

REPLICAT REPBI

USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/REPBI.DSC, PURGE

MAP gg_src.tcustmer, TARGET gg_tgt.tcustmer;

GGSCI > START REPLICAT REPBI

2.4.3 检查启动状态

查看Extract 和Replicat 状态,确保都正常运行

GGSCI > info all

Program Status Group Lag Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING EXTBI 00:00:00 00:00:03

REPLICAT RUNNING REPBI 00:00:00 00:00:01

测试

以gg_src 登录源数据库,执行insert 操作:

INSERT INTO tcustmer VALUES('WILL','BG SOFTWARE CO.','SEATTLE','WA');

以gg_tgt 登录目标数据库,执行insert 操作:

INSERT INTO tcustmer VALUES('JANE','ROCKY FLYER INC.','DENVER','CO');

在源数据库和目标数据库查看tcustomer 表,都应该包含新插入的两条记录。

在源数据库和目标数据库进行其它操作测试,测试后源数据库和目标数据库数据应保持一致。

 

转载于:https://www.cnblogs.com/liang545621/p/7529153.html

第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、付费专栏及课程。

余额充值