目录
一、环境信息
|-----------|------------------------------------------------------------------------------------------------------------------------------|
| 名称 | 值 |
| CPU | 12th Gen Intel(R) Core(TM) i7-12700H |
| 操作系统 | CentOS Linux release 7.9.2009 (Core) |
| 内存 | 4G |
| 逻辑核数 | 4 |
| Oracle端IP | 192.168.139.10 |
| Dm端IP | 192.168.139.11 |
| Oracle版本 | Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production |
| DM版本 | 1 DM Database Server 64 V8 2 DB Version: 0x7000d 3 03134284336-20250218-260144-20132 4 Msg Version: 32 5 Gsu level(5) cnt: 0 |
| Drs版本 | V5.2.4.3-Build(2025.09.02-198770_trunc_sp1)_64 |
二、介绍
异构增量同步工具在国产化替代项目中,经常会用到,其参数也复杂多样,我们来对于一些实用性的参数进行介绍,方便大家更好的使用此工具。
此文参考并引用了官方文档。
三、DRS相关文章
|----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 编号 | 链接 |
| 1 | 达梦数据库-学习-32-异构数据库同步工具DmDrs(Oracle同步至达梦) |
| | |
四、参数介绍
Manager模块是DMDRS服务(包括源DMDRS服务、目标DMDRS服务和DMDSS服务)的管理模块。在各DMDRS服务的XML配置文件中,Manager模块参数对应<base></base>元素,包括Manager模块的端口号和站点号等参数。
1、mgr_dir
(1)参数含义
DMDRS所有日志文件和数据文件(除临时生成的文件)的存储目录。
(2)参数说明
当该参数与模块的module_dir参数同时配置,且路径不同时,优先按照module_dir参数指定的路径保存模块的数据文件,其它模块的数据文件仍按照该参数指定的位置存储。
(3)参数值
默认值为程序的当前工作目录。
(4)参数语法
<mgr_dir></mgr_dir>
(5)参数示例
<mgr_dir>/home/dmdrs/dmdrs5/bin</mgr_dir>
2、mgr_port
(1)参数含义
Manager模块的端口号。
(2)参数说明
DMDRS服务的Manager模块的端口号,根据DMDRS服务的配置,加载服务中的CPT模块、DSS模块、EXEC模块或SCHED模块。服务启动后,会监听该端口上的连接,用于执行客户端发送的命令和接收统计信息。
注意
不同的服务如果部署在同一台服务器上,必须确保不同服务的Manager模块的端口号的唯一性,否则将无法对Manager模块唯一标识,导致服务无法正常启动。建议不使用默认值。
(3)参数值
取值范围:1000~65534,默认值为5345。
(4)参数语法
<mgr_port></mgr_port>
(5)参数示例
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>qwer1234S</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>
3、name
(1)参数含义
DMDRS服务的名称。
(2)参数说明
用于标识DMDRS服务在数据传输链路中的名称。
(3)参数值
默认值为本地主机的主机名前48个字符。
(4)参数语法
<name></name>
(5)参数示例
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>qwer1234S</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>
4、siteid
(1)参数含义
站点号。
(2)参数说明
DMDRS服务在数据传输链路中的唯一标识,配置时请确保唯一性,如果重复,会造成链路中数据复制的混乱。
配置DMDRS主备服务时,需要保证主节点和备节点的站点号一致,如果不一致,会造成主备链路中数据复制的混乱。
配置DMDSS集群服务时,需要保证集群内各节点的站点号一致,如果不一致,会造成集群失效。
(3)参数值
取值范围:1~65535。
(4)参数语法
<siteid></siteid>
(5)参数示例
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>qwer1234S</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>
5、core_dump_flag
(1)参数含义
DMDRS在异常情况下生成核心转储文件的方式。
(2)参数说明
仅支持Linux平台。
(3)参数值
-
0:不生成核心转储文件。
-
1:生成精简版核心转储文件。默认值为1。
-
2:生成完整核心转储文件。
-
3:生成包含共享内存的核心转储文件。
(4)参数语法
<core_dump_flag></core_dump_flag>
(5)参数示例
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
<core_dump_flag>2</core_dump_flag>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>qwer1234S</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>
6、enable_arbiter
(1)参数含义
是否启用主备决策DMDRS服务。
(2)参数说明
该参数的原名为is_arbiter。
当目标数据库为Kafka,使用目标DMDRS主备服务时需要配置该参数。主备决策DMDRS服务可以持久化目标DMDRS主备节点信息,处理目标DMDRS主备存取主备节点信息的请求
(3)参数值
-
0:禁用。默认值为0。
-
1:启用。
(4)参数语法
<enable_arbiter></enable_arbiter>
(5)参数示例
<enable_arbiter>1</enable_arbiter>
7、enable_pwd_encipher
(1)参数含义
是否启用数据库登录密码的加密功能。
(2)参数说明
该参数的原名为pwd_encipher。
-
禁用数据库登录密码的加密功能后,数据库的登录密码需配置为明文密码。
-
启用数据库登录密码的加密功能后,需通过drcsl -encrypt ""命令获取密文密码,将数据库的登录密码配置为该密文密码。
(3)参数值
-
0:禁用。默认值为0。
-
1:启用。
(4)参数语法
<enable_pwd_encipher></enable_pwd_encipher>
(5)参数示例
<enable_pwd_encipher>1</enable_pwd_encipher>
[oracle@lzl bin]$ ./drcsl -encrypt 'qwer1234S'
Password encrypted successfully: B6E9B91940BFBA7379A069605FA4EF76
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
<core_dump_flag>2</core_dump_flag>
<enable_pwd_encipher>1</enable_pwd_encipher>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>B6E9B91940BFBA7379A069605FA4EF76</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>
8、enable_tls
(1)参数含义
是否支持TLS1.2协议。
(2)参数说明
在DMDRS同步链路中,所有的DMDRS服务(包括源DMDRS、目标DMDRS和DMDSS)都需要配置该参数。配置该参数后,DMDRS服务之间将会启用基于TLS1.2协议的证书认证及通信功能。
DMDRS使用该功能需要具备如下运行条件:
-
需要加载OpenSSL的认证证书:作为客户端,需要证书drs_ca.crt;作为服务端,需要证书drs_server.crt和秘钥drs_server.key。可以使用的证书和秘钥包括自签名认证证书和正式证书两种。
- 使用OpenSSL生成的自签名认证证书,证书生成时,需要填写名称及接收端服务器IP。生成指令如下:
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout drs_ca.key -out drs_ca.crt -days 3650
openssl req -newkey rsa:2048 -nodes -keyout drs_server.key -out drs_server.csr
openssl x509 -req -in drs_server.csr -CA drs_ca.crt -CAkey drs_ca.key -CAcreateserial -out drs_server.crt -days 365
- 使用正式的证书,需要修改对应的名称为drs_ca.crt、drs_server.crt和drs_server.key。
-
需要加载OpenSSL的动态依赖库:Windows下为ssleay32.dll和libeay32.dll;Linux下为libssl.so。
-
证书及动态依赖库需位于DMDRS程序的运行目录。
-
要求OpenSSL动态依赖库版本为1.0.2k及以上版本时,才能支持TLS1.2协议。
(3)参数值
-
0:禁用。默认值为0。
-
1:启用。
(4)参数语法
<enable_tls></enable_tls>
(5)参数示例
<enable_tls>1</enable_tls>
9、lang
(1)参数含义
日志语言。
(2)参数说明
服务器、控制台及日志文件的输出语言和字符集,该参数配置需与窗口字符集配置保持一致。
(3)参数值
-
ch:GB18030编码简体中文。默认值为ch。
-
ch-utf8:UTF-8编码简体中文。
-
en:英文。
(4)参数语法
<lang></lang>
(5)参数示例
<lang>ch</lang>
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
<core_dump_flag>2</core_dump_flag>
<enable_pwd_encipher>1</enable_pwd_encipher>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>B6E9B91940BFBA7379A069605FA4EF76</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>
10、net_type
(1)参数含义
服务程序运行环境的网络协议版本。
(2)参数说明
无
(3)参数值
参数值不区分大小写。
-
ipv4:当前环境网络协议版本为IPv4。默认值为ipv4。
-
ipv6:当前环境网络协议版本为IPv6。
(4)参数语法
<net_type></net_type>
(5)参数示例
<net_type>ipv6</net_type>
11、log_limit
(1)参数含义
服务程序运行时LOG目录下全部日志文件的上限。
(2)参数说明
该参数的原名为log_limit_size。
当LOG目录下以drs_开头的日志文件总大小超过该参数值时,程序会自动删除时间最早的日志,将总大小控制在该参数值以内。
(3)参数值
单位:GB,默认值为0。
-
当参数值为0时,表示对服务程序运行的日志文件大小无限制。
-
当参数值大于0时,如果运行日志文件总大小超过该参数值,自动删除历史运行日志文件;如果单个日志文件已超过该参数值,则删除该日志文件,将日志文件中最新的128MB日志内容写入到新建的日志文件中。
(4)参数语法
<log_limit></log_limit>
(5)参数示例
<log_limit>5</log_limit>
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
<core_dump_flag>2</core_dump_flag>
<enable_pwd_encipher>1</enable_pwd_encipher>
<log_limit>10</log_limit>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>B6E9B91940BFBA7379A069605FA4EF76</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>
12、mem_size
(1)参数含义
服务程序运行时可以申请的最大内存。
(2)参数说明
当服务程序运行时申请的内存超过该参数值时,服务程序会报错。
(3)参数值
取值范围:0~255,单位:GB,默认值为16。
当参数值为0时,表示对服务程序运行时申请的内存无限制,在服务器内存范围内,服务程序可以根据需要申请超过255GB的内存。
(4)参数语法
<mem_size></mem_size>
(5)参数示例
<mem_size>24</mem_size>
[oracle@lzl bin]$ cat Src.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
<lang>ch-utf8</lang>
<name>DrsSrc</name>
<core_dump_flag>2</core_dump_flag>
<enable_pwd_encipher>1</enable_pwd_encipher>
<log_limit>10</log_limit>
<mem_size>2</mem_size>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>B6E9B91940BFBA7379A069605FA4EF76</pwd>
</login>
<send>
<ip>192.168.139.11</ip>
<port>5345</port>
<target_name>exec_dm8</target_name>
<map>
<item>SUN.*==SUN.*</item>
<item>CZG.*==CZG.*</item>
<item>MOON.*==MOON.*</item>
</map>
</send>
</cpt>
</drs>