注册
DMHS原理学习+操作记录
专栏/技术分享/ 文章详情 /

DMHS原理学习+操作记录

贺磊 2025/08/29 7 0 0
摘要

一、装载模块
1、在进行增量数据同步之前,需要完成数据及字典表的初始装载。日志中有记录:
image.png
2、从dict目录中也可以看到装载的字典信息文件:

image.png
image.png

二、离线字典
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)。
image.png

1、离线字典信息的修改
日志中每个记录表的DDL信息都会引起字典信息的修改,新的表字典信息会追加到该字典信息的末尾。
image.png
image.png

image.png

image.png

三、捕获模块
CPT模块启动时,会利用NET模块,像备端发送LSN的命令,CPT模块找到起始LSN的位置,从该位置进行分析。表示LSN之前的所有事务都已经同步到备端。
1、CPT模块启动时,备端日志信息:
image.png
2、当离线字典被删除或改名时,同步会继续,重启HS服务之后,异常的离线字典对应的表的同步就会异常。
但是日志记录不会有异常,还是会正常记录。

image.png

四、CPT模块基本配置
1、对应dmhs.hs中对应cpt元素信息

image.png

五、执行模块EXEC
1、对CPT捕获的数据进行入库。当启动时,会初始化一些列辅助表
image.png

2、DMHS_TRXID_TABLE
记录源端入库信息,如果被exec模块入库,不管是成功还是失败,都会在该表中记录对应的LSN号、事务ID等。

image.png
3、DMHS_ERROR_TSK_TABLE
错误事务日志表,当执行模块入库时,如果某个事务入库报错,就会在表中记录信息,
image.png

4、DMHS_TABLE_SEQID
装载信息登记表,源端使用copy进行初始化装载时,成功的表会记录在表中,
image.png

5、DMHS_DTYPE_MAP
类型映射表,DMHS运行在异构环境下时,同步表的ALTER 和 CREATE 时候,源库和目标库的定义存在差异,就会涉及到类型的转换。

image.png

六、新增同步用户
1、当需要新增同步用户t_he时,源端日志会过滤掉此用户的同步信息。
image.png

2、需要停止捕获进程,修改dmhs.hs配置文件参数,初始化需要新同步得用户t_he,启动捕获进程。
当在参数文件设置黑名单时,
image.png

需要将t_he加入到白名单中。

3、当目标端没有对应的用户时,需要手动创建。
image.png

4、当在原端重新执行加载命令copy时,目标端会删除对应的对象:
image.png

5、当正常加载时,源端日志会显示:
image.png
生成对应表的字典信息。
6、在源端copy加载数据时,注意对应用户大小写。
小写时,不会加载,大写才会。
image.png

image.png

遇到的问题:
在进行DDL同步测试时,源端进行alter table add column操作时,备库不会应用,日志中会记录:
image.png
说明备库已经接收到来自主库的信息。继续往上排查日志,发现
image.png
查看配置文件中siteid的值,发现主库备库都是1,将备库修改之后,DDL可以正常同步。
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服