一、装载模块
1、在进行增量数据同步之前,需要完成数据及字典表的初始装载。日志中有记录:
2、从dict目录中也可以看到装载的字典信息文件:
二、离线字典
DMHS通过日志实现获取数据库的增量变化的,使用一个标识也就是对象ID来代表操作的对象。CPT模块分析日志时,通过对象ID来获取对象定义。
主要作用就是为了CPT模块提供准确的表定义信息,默认存放在DICT目录中,修改参数值也可以修改路劲。以表为单位进行保存,文件名为0_ID.dct。在DICT目录中除了存放表定义信息之外,还有2个文件:0_disable.obj。,0_disable.txt
查看内容得知:0_disable.obj 存放不进行数据同步的对象ID,0_disable.txt存放不进行数据同步的对应名(ID)。
1、离线字典信息的修改
日志中每个记录表的DDL信息都会引起字典信息的修改,新的表字典信息会追加到该字典信息的末尾。
三、捕获模块
CPT模块启动时,会利用NET模块,像备端发送LSN的命令,CPT模块找到起始LSN的位置,从该位置进行分析。表示LSN之前的所有事务都已经同步到备端。
1、CPT模块启动时,备端日志信息:
2、当离线字典被删除或改名时,同步会继续,重启HS服务之后,异常的离线字典对应的表的同步就会异常。
但是日志记录不会有异常,还是会正常记录。
四、CPT模块基本配置
1、对应dmhs.hs中对应cpt元素信息
五、执行模块EXEC
1、对CPT捕获的数据进行入库。当启动时,会初始化一些列辅助表
2、DMHS_TRXID_TABLE
记录源端入库信息,如果被exec模块入库,不管是成功还是失败,都会在该表中记录对应的LSN号、事务ID等。
3、DMHS_ERROR_TSK_TABLE
错误事务日志表,当执行模块入库时,如果某个事务入库报错,就会在表中记录信息,
4、DMHS_TABLE_SEQID
装载信息登记表,源端使用copy进行初始化装载时,成功的表会记录在表中,
5、DMHS_DTYPE_MAP
类型映射表,DMHS运行在异构环境下时,同步表的ALTER 和 CREATE 时候,源库和目标库的定义存在差异,就会涉及到类型的转换。
六、新增同步用户
1、当需要新增同步用户t_he时,源端日志会过滤掉此用户的同步信息。
2、需要停止捕获进程,修改dmhs.hs配置文件参数,初始化需要新同步得用户t_he,启动捕获进程。
当在参数文件设置黑名单时,
需要将t_he加入到白名单中。
3、当目标端没有对应的用户时,需要手动创建。
4、当在原端重新执行加载命令copy时,目标端会删除对应的对象:
5、当正常加载时,源端日志会显示:
生成对应表的字典信息。
6、在源端copy加载数据时,注意对应用户大小写。
小写时,不会加载,大写才会。
遇到的问题:
在进行DDL同步测试时,源端进行alter table add column操作时,备库不会应用,日志中会记录:
说明备库已经接收到来自主库的信息。继续往上排查日志,发现
查看配置文件中siteid的值,发现主库备库都是1,将备库修改之后,DDL可以正常同步。
文章
阅读量
获赞