DB2-InfoSphere CDC(InfoSphere Data Replication Change Data Capture)数据复制简叙及安装使用
InfoSphere CDC
CDC 主要采用基于日志的变更数据捕获技术以实现对关键业务系统的实时数据复制,同时不影响业务系统性能。CDC 最大优点在于其对异构数据库的支持和与 IBM 产品的集成,为客户在数据迁移,整合,同步,动态数据仓库等应用中提供了卓越的解决方案。支持非DB2数据库,提供监控及管理环境,包括BigData架构或环境。
介绍
InfoSphere 数据复制软件不使用触发器或对数据库执行查询,而是通过读取本机数据库日志来捕获更改。对于批处理窗口缩小或过度使用应用的企业而言,这种基于日志的更改数据捕获方法有助于确保即使是在源系统上运行的要求最苛刻的任务关键型应用,其性能也不会受到不利影响。
Change Data Capture(CDC) 的前身是 DataMirror,2007 年由 IBM 收购后正式更名为 CDC,并发布了收购后的第一个版本 V6.3,现在最新的版本为 V10.2。IBM InfoSphere Data Replication 包括 InfoSphere RS(Replication Server)和 InfoSphere CDC(Change Data Capture)两个产品。该类方案均为基于数据库日志实现对数据源变化的实时捕获,并且实时传输到目标端。
1、IBM® InfoSphere® Data Replication 提供基于日志的更改数据捕获,且具有事务完整性,从而支持大规模的数据集成和整合、仓储和分析计划。它提供了在各种异构源和目标之间复制数据的灵活性。它还支持零宕机数据迁移和升级。
2、IBM InfoSphere Data Replication 还可以提供持续可用性,用于维护远程位置中的数据库副本,这样您仅需数秒而非数小时就可以将工作负载切换到这些副本。
架构及部署
基本环境需要三个组件:
(1)CDC实例引擎,简称IIDR,用于连接目标数据库进行数据捕获或数据落实的组件,可以安装在DB的本地或通过REMOTE(JDBC)的方式连接DB;
(2)Access Server,简称AS,用于连接及管理CDC引擎,配置完成后CDC引擎间会自行进行通讯,即使AS宕机也不影响CDC的正常复制(暂时没有验证过);
(3)Management Console,简称MC,用于操作AS的UI工具,可以代替AS中的命令行操作。
Access Server(AS):
用户配置和监控 CDC 引擎的安全管理工具,支持图形化界面(V6.5 之后集成在 MC 中)及命令行。当用户登录 Management Console,就会连接到 AS。在客户端关闭 AS,不会影响源服务器到目标服务器到数据复制。
Management Console(MC):
CDC 的图形化界面工具,允许用户配置、监控和管理在多个不同服务器上到数据复制,可以在客户端上指定复制的参数,初始化刷新和镜像。MC 也允许用户监控复制操作、延迟、事件消息和其他源和目标 datastore 支持的统计数据。
源端引擎:
读取源端数据库的日志文件捕获变更数据,经过行列过滤,字符编码转换后由 TCP/IP 发送给目标端。
目标端引擎:
接收源端发送的变更数据,经过数值转换,字符编码转换,冲突检测后将变更数据应用到目标数据库。
Metadata:
存储 CDC 实例的配置信息,包括数据库连接信息,预定信息以及表的映射信息等,同时记录当前的复制进行状态
源和目标 Datastore(数据存储器):
存储的是数据文件和数据复制需要的 InfoSphere CDC 实例信息。每个 datastore 代表了一个用户要连接的数据库,存储要复制的表。数据存储器是表示 InfoSphere CDC 实例的抽象概念。它保存有关复制所需的数据库和数据文件的信息。InfoSphere CDC Management Console 和 CHCCLP 命令行界面通过连接至仅一个数据存储器以与数据库进行交互。
Command Line 命令行界面:
使用 CHCCLP 从命令行完成 InfoSphere CDC Management Console 任务。可按交互方式运行 CHCCLP(类似以交互方式运行 DB2 CLP),或按批处理方式运行 CHCCLP。
InfoSphere CDC 实例:
InfoSphere CDC 实例是复制引擎的实例。
预订:
预订是表映射的容器。它在逻辑上链接源和目标数据存储器,并包含用于确定复制行为的各种参数。应将该预订标记为持久,这能够提高复制被破坏时的故障容错性。
表映射:
表映射包含有关如何将源数据存储器中的各表(或表列)复制到目标数据存储器的信息。对于目标表,可以进行带有一对一表映射的标准复制。对于目标表键,请指定对应表的主键的唯一索引,以提供一对一表映射和性能改进。添加、修改或删除属于预订的表映射之前,必须结束复制。
复制:
复制是维护源表与目标表的内容之间的当前同步的过程。它是将源表中的更改发送至目标表的过程。传输数据的方法是刷新和镜像。
镜像:
镜像是将源表中的已更改数据复制到目标表的过程。复制方法如果是连续镜像,这会将在源表中进行更改时将这些更改连续复制到目标表。复制则通过启动镜像显式启动的。可对特定预订启动或停止镜像。
刷新:
刷新是将源表及目标标的当前内容同步的过程。标准刷新先清除目标表中的所有行,然后从源表装入所有数据。创建表映射后,第一次启动镜像会自动执行刷新以填充目标表。
支持数据库类型
与DB2-Q复制(Q Replication)相比,支持非DB2类型的数据迁移。如下图所示
应用场景
配置
注意:
1.IIDR版本有DB2版本要求
2.时钟同步
准备
1、准备群及用户
groupadd cdcusr
useradd -g cdcusr -G db2inst1 -m -d "/home/cdcusr" cdcusr
usermod -a -G cdcusr db2inst1
passwd cdcusr
2、数据库权限
db2 connect to sample
db2 grant dbadm on database to user cdcuser
3、准备安装目录
mkdir -p /data/IBM/InfoSphereDataReplication
chown cdcusr:cdcusr /data/IBM/InfoSphereDataReplication
mkdir /data/db2inst1/refresh
chown cdcusr:cdcusr /data/db2inst1/refresh
机器清单
源数据库 source 192.168.0.11 安装IIDR
目标数据库 target 192.168.0.12 安装IIDR
操作机 opr 192.168.1.22 安装AS及MC
安装AC
1、target上安装,target上切换到cdcusr用户
2、执行如下命令
sh iidraccess-x.x.x-xxxx-linux-x86-setup.bin
3、在控制台的交互界面中选择或输入
Choose Install Folder:
/data/IBM/InfoSphereDataReplication/AccessServer
Enable LDAP Configuration:
None
TCP/IP port for Access Server:
10101
Configure User Data Folder:
/data/IBM/InfoSphereDataReplication/AccessServer
4、启动
nohup /data/IBM/InfoSphereDataReplication/AccessServer/bin/dmaccessserver &
5、增加AS管理员用户
/data/IBM/InfoSphereDataReplication/AccessServer/bin/dmcreateuser cdcusr cdcadminstrator system_administrator cdcusr SYSADMIN TRUE FALSE TRUE
/data/IBM/InfoSphereDataReplication/AccessServer/bin/dmlistusers
安装IIDR
1、source及target切换到cdcusr用户
2、执行如下命令
sh setup-iidr-x.x.x.x-xxxx-linux-x86.bin
3、在控制台的交互界面中选择或输入
Choose Install Folder:
/data/IBM/InfoSphereDataReplication/ReplicationEngineforIBMDB2
Choose Instance Folder:
/home/cdcusr
4、source安装完成后,会提示是否启动配置工具。
在source选择Yes启动配置工具
Enter the name of the new instance: source
Enter the server port number [10901]:10901
Enter the Staging Store Disk Quota for this instance (GB) [100]: 2
Enter the Maximum Memory Allowed for this instance (MB) [1024]: 128
Select an encryption profile [Default]:Default
Select y to use JMS or TCP/IP engine communication connection, select n to use TCP only engine communication connection (y/n) [n]:n
Do you wish to establish a JDBC type 4 connection to the database? [n]:n
Select a DB2 Instance [db2inst1]:db2inst1
Select a database name: 1
Would you like to configure advanced parameters (y/n) [y]: n
Would you like to retrieve database login credentials from an external secret store through a Java user exit? (y/n) [n]:
Enter the username: db2inst1
Enter the password:db2inst1
Enter a database schema for metadata tables: CDC
Would you like to specify a refresh loader path (y/n):y
Enter the refresh loader path:/data/db2inst1/refresh
Would you like to START instance SOURCE now (y/n)?n
手动启动
cd /data/IBM/InfoSphereDataReplication/ReplicationEngineforIBMDB2/bin/
nohup ./dmts64 -I source &
手动停止
cd /data/IBM/InfoSphereDataReplication/ReplicationEngineforIBMDB2/bin/
./dmshutdown -I source
5、target安装完成后,会提示是否启动配置工具。
在target选择Yes启动配置工具
Enter the name of the new instance: source
Enter the server port number [10901]:10901
Enter the Staging Store Disk Quota for this instance (GB) [100]: 2
Enter the Maximum Memory Allowed for this instance (MB) [1024]: 128
Select an encryption profile [Default]:Default
Select y to use JMS or TCP/IP engine communication connection, select n to use TCP only engine communication connection (y/n) [n]:n
Do you wish to establish a JDBC type 4 connection to the database? [n]:n
Select a DB2 Instance [db2inst2]:db2inst2
Select a database name: 1
Would you like to configure advanced parameters (y/n) [y]: n
Would you like to retrieve database login credentials from an external secret store through a Java user exit? (y/n) [n]:
Enter the username: db2inst2
Enter the password:db2inst2
Enter a database schema for metadata tables: CDC
Would you like to specify a refresh loader path (y/n):y
Enter the refresh loader path:/data/db2inst2/refresh
Would you like to START instance TARGET now (y/n)?n
手动启动
cd /data/IBM/InfoSphereDataReplication/ReplicationEngineforIBMDB2/bin/
nohup ./dmts64 -I target &
手动停止
cd /data/IBM/InfoSphereDataReplication/ReplicationEngineforIBMDB2/bin/
./dmshutdown -I target
7、可以查看状态,在dmconfigurets中选择"1. List Current Instances"
/data/IBM/InfoSphereDataReplication/ReplicationEngineforIBMDB2/bin/dmconfigurets
安装MC
opr1上window平台全图形界面,安装iidr-mc,文件如下
iidrmc-xx.x-xxxx-setup.exe
可以用图形界面创建订阅等等。
创建订阅
注意:
1、source及target上IIDR实例已经创建,并已经启动agent;
2、source上AS已经正常启动;并创建管理员账号、密码;
1、在opr1上准备CHCCLP脚本定义文件
vi chcclp_test.txt
chcclp session set to cdc;
set verbose;
set variable name "ACCESS_HOSTNAME" value "192.168.0.11";
set variable name "ACCESS_PORT" value "10101";
set variable name "ACCESS_USERNAME" value "cdcusr";
set variable name "ACCESS_PASSWORD" value "cdcusr";
set variable name "SOURCE_DATASTORE" value "source";
set variable name "TARGET_DATASTORE" value "target";
set variable name "SUBSCRIPTION" value "CDCTEST1";
connect server
hostname "%ACCESS_HOSTNAME%"
port "%ACCESS_PORT%"
username "%ACCESS_USERNAME%"
password "%ACCESS_PASSWORD%";
#add access user name cdcusr password cdcusr manager yes changepassword no;
add access datastore name source hostname 192.168.0.11 10901;
add access datastore name target hostname 192.168.0.12 10901;
add access connection username cdcusr datastore source dbuser db2inst1 dbpassword db2inst1;
add access connection username cdcusr datastore target dbuser db2inst2 dbpassword db2inst2;
connect datastore name "%SOURCE_DATASTORE%";
connect datastore name "%TARGET_DATASTORE%";
select datastore name "%SOURCE_DATASTORE%" context source;
select datastore name "%TARGET_DATASTORE%" context target;
add subscription name "%SUBSCRIPTION%";
lock subscription;
add table mapping
sourceSchema "QREP"
sourceTable "EMPLOYEE"
targetSchema "QREP"
targetTable "EMPLOYEE";
mark capture point;
add table mapping
sourceSchema "QREP"
targetSchema "QREP"
mark capture point;
unlock subscription;
disconnect datastore name "%SOURCE_DATASTORE%";
disconnect datastore name "%TARGET_DATASTORE%";
disconnect server;
exit;
2、执行命令
在opr1上执行。也可以在source上作为AS执行。
./chcclp -f chcclp_test.txt HOSTNAME:192.168.0.11 PORT:10101 USERNAME:cdcusr PASSWORD:cdcusr
3、启动复制
在opr1上执行。也可以在source上作为AS执行。
./chcclp HOSTNAME:192.168.0.11 PORT:10101 USERNAME:cdcusr PASSWORD:cdcusr
start mirroring;
monitor subscription refresh;
也可以用MC中图形界面创建并管理
测试
测试
插入数据检查数据是否复制到对端
检查sorce及target端条数
db2 "select count(*) from qrep.employee"
source插入数据
db2 "insert into qrep.employee values(200,'a','aa'),(201,'b','bb')";
db2 commit;
检查sorce及target端条数
db2 "select count(*) from qrep.employee"
参考资源
推荐:IBM Data Replication Community Wiki
https://www.ibm.com/support/pages/ibm-data-replication-community-wiki
此链接中包括很多资源链接,各种technote以及sample,
CHCCLP Tutorials
https://www.ibm.com/support/pages/chcclp-tutorials