应用更新的调度同步复制将连续的递送更新。当源数据发生改变,它将临时存储起来,继而转送到目标。只有更改已经复制到目标数据库,源数据库才进行提交。这种类型的复制也称之为实时复制。
异步复制将分阶段递送更新。当源数据发生改变,它将在事先设定的时间间隔内临时存储起来,而后再继续转送到目标。时间间隔可以用时间(秒、分、时)
度量或用指定的事件(午夜,或一天中的其它时间)来度量。如果更改没能被应用于目标数据库(例如,目标数据库或者网络停机),它们将被存储起来稍后再被应
用,应用的顺序将按照在源数据库上的发生顺序。这种复制类型提供了比同步复制更多的好处:更好的利用网络资源,更少的数据库连接,在数据到达目标数据库之
前有机会提高数据。
例子
以下操作或命令主要在DB2的控制中心或命令控制台中进行(红色部分根据具体情况调整),相关命令更详细的使用参见DB2帮助文档。
建立复制环境
先创建文件夹C:\示例以存放一些脚本文件
1.创建源数据库
DB2CREATE DB DB_S
2.将数据库日志改为归档日志Capture
DB2UPDATE DB CFG FOR DB_S USING LOGRETAIN Capture
3.根据需要调整日志大小(如果需要的话)
4.备份数据库(改为归档日志的数据库必须先备份才能对其进行操作)
DB2BACKUP DB DB_S
5.创建源表
DB2CONNECT TO DB_S USER UserName USING Password
DB2CREATE TABLE TAB_1_S (COL_1 VARCHAR(20) NOT NULL, COL_2 VARCHAR(20), PRIMARY KEY(COL_1))
6.定义复制源
在控制中心左边树型列表中数据库DB_S下选中表,右边列表列出了所有的表,用右键点击表TAB_1_S,在弹出的菜单中选
中定义为复制源—>定制,接受默认选项,点击确定,弹出现在运行还是保存窗口,接受默认的保存设置,点击确定,弹出选择系统名窗口,选择数据库所在
系统,点击确定,弹出文件浏览器,把当前目录定位到C:\示例,在路径中输入文件名tab_1_replscr.sql,点击确定。保存成功后可以用文本
编辑器查看tab_1_replscr.sql中的内容,可以发现里边主要是生成CD表,和注册复制源(通过往表
ASN.IBMSNAP_REGISTER中插入记录)的SQL语句。
7.运行复制源
用右键点击控制中心左边树型列表中数据库DB_S下的复制源,在弹出菜单中选择运行SQL文件…,弹出选择系统名窗口,选择
数据库所在系统名,确定,在弹出的文件浏览器中选择tab_1_replscr.sql后确定,如果成功,用右键进行刷新,将显示出新定义的复制源
TAB_1_S。
8.将捕捉程序与源数据库绑定(注意:必须转跳到DB2的SQLLIB\bnd目录下)
CD C:\Program Files\SQLLIB\bnd
DB2CONNECT TO DB_S USER UserName USING Password
DB2BIND @CAPTURE.LST ISOLATION UR BLOCKING ALL
DB2BIND @APPLYUR.LST ISOLATION UR BLOCKING ALL
DB2BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL
9.创建目标数据库
DB2CREATE DB DB_T
10.定义复制预订
在控制中心左边树型列表中数据库DB_S下选中复制源,右边列表列出了所有的复制源,用右键点击复制源TAB_1_S,
在弹出的菜单中选中定义预订…,在预订名中输入TAB_1_SUB,目标服务器中选择DB_T,应用限定符中输入TAB_1_QUAL,在列表中选中创建
表。
点击高级…,弹出高级预订定义窗口,点击目标列标签页,在COL_1列中选中主关键字,切换到行数标签页,输入过滤条件COL_1 <> '00',确定返回定义复制预订窗口。
点
击SQL…,弹出SQL窗口,点击添加…,在SQL语句或调用过程中输入DELETE FROM ASN.IBMSNAP_APPLYTRAIL
WHERE LASTRUN < (CURRENT TIMESTAMP - 7
DAYS),在SQLSTATE中输入02000,点击添加,以接受” row not
found”错误,确定返回SQL窗口,确定返回定义复制预订窗口。该步可忽略,这里主要是演示如何在复制过程中根据需要执行一些SQL语句,此处示例的
DELETE语句主要是删除部分应用跟踪信息,已防止该表过于庞大,影响性能。
点击计时…,弹出预订计时窗口,将分钟改为1,小时改为0,确定返回定义复制预订窗口。
确
定后弹出现在运行还是保存窗口,指定存储预订控制信息的数据库为DB_T后,点击确定,弹出选择系统名窗口,选择数据库所在系统,点击确定,弹出文件浏览
器,把当前目录定位到C:\示例,在路径中输入文件名tab_1_sub.sql。保存成功后可以用文本编辑器查看tab_1_sub.sql中的内容,
可以发现里边主要是生成目标表(如果选中了创建表的话),和注册复制预订(通过往控制表中插入记录)等的SQL语句。
12.运行复制预订
用右键点击控制中心左边树型列表中数据库DB_S下的复制预订,在弹出菜单中选择运行SQL文件…,弹出选择系统名窗
口,选择数据库所在系统名,确定,在弹出的文件浏览器中选择tab_1_sub.sql后确定,如果成功,用右键进行刷新,将显示出新定义的复制预订
TAB_1_SUB。
13.将应用程序与目标数据库绑定(注意:必须转跳到DB2的SQLLIB\bnd目录下)
CD C:\Program Files\SQLLIB\bnd
DB2CONNECT TO DB_T USER UserName USING Password
DB2BIND @APPLYUR.LST ISOLATION UR BLOCKING ALL
DB2BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL
14.创建密码文件
打开文件夹C:\示例,新建一个文本文件,在文件中输入以下两行(注意:用户名和密码区分大小写)
SERVER=DB_S USER=UserName PWD=Password
SERVER=DB_T USER=UserName PWD=Password
将文件保存为tab_1_qual.pwd
(命名约定:密码文件命名为应用限定符.pwd)
15.启动捕捉程序(注意:必须转跳到C:\示例目录下)
CD C:\示例
ASNCCP DB_S COLD NOPRUNE
提示:该命令中参数COLD指定的是冷启动,它会将CD表和UOW表中的内容删除,一般只有在刚建立起复制环境时使用,而如果在复制环境已经启动,但又添加新的复制源,一般指定WARM参数采用热启动。
捕
捉程序启动后,控制台不会有任何提示,但系统会自动创建一个*.ccp文件,以跟踪捕捉程序的运行(相当于日志文件),可用文本编辑其查看其内容。捕捉程
序启动后只是简单的做一些初始化工作,而不会捕捉任何更改信息,除非你启动应用程序且应用程序完成了初始化的全更新拷贝。
16.启动应用程序(注意:必须转跳到C:\示例目录下,应用限定符区分大小写)
CD C:\示例
ASNAPPLY TAB_1_QUAL DB_T
应
用程序启动后,控制台不会有任何提示,但系统会自动创建tab_1_qual.app文件,以跟踪捕捉程序的运行(相当于日志文件),可用文本编辑其查看
其内容。也可通过查看数据库DB_T中的应用跟踪表ASN.IBMSNAP_APPLYTRAIL来跟踪应用程序执行的一些信息。
测试复制环境
至此,复制环境启动结束,下面我们通过更新源表来验证复制环境是否正常运行:
1.在源表中插入记录
DB2CONNECT TO DB_S USER UserName USING Password
DB2INSERT INTO TAB_1_S ( COL_1, COL_2 ) VALUES ( '00', '00' )
DB2INSERT INTO TAB_1_S ( COL_1, COL_2 ) VALUES ( '11', '11' )
DB2INSERT INTO TAB_1_S ( COL_1, COL_2 ) VALUES ( '22', '22' )
插入成功后查看该复制源对应的CD表,会发现对源表的更改被记录了下来
2.在目标表中查看数据是否已同步更新
DB2CONNECT TO DB_T USER UserName USING Password
DB2SELECT * FROM TAB_1_S
停止捕捉、应用程序
ASNCMD DB_S STOP
ASNASTOP TAB_1_QUAL
参考资料:DB2信息中心-书籍-Replication Guide and Reference