达梦数据实时同步软件 DMHS 是达梦公司推出的新一代支持异构环境的高性能、高可靠和高可扩展的数据库实时同步系统。该产品基于成熟的关系数据模型和标准接口,跨越多种软硬件平台实现秒级数据实时同步。该产品可广泛应用于应急系统、容灾备份、负载均衡、
数据移植、联机维护、订阅分发和多业务中心等业务领域。
达梦数据实时同步软件 DMHS,通过秒级数据实时同步可以有效避免传统备份系统导
致的无法完全满足企业对于信息系统不中断服务的问题;通过变化日志捕捉可以有效降低传
统 ETL 工具因创建触发器、影子表等对业务系统带来的性能影响;通过实时的数据同步,
构建“双活”的主备系统,解决传统基于数据库自身的主备系统中备机只读而无法对外提供
写服务的问题。
DMHS 的基础实现原理如下图所示。
DMHS 的组成原理框图中包含源端数据库、目标端数据库、源端 DMHS 服务以及目标端 DMHS 服务,其中源端 DMHS 服务主要由装载模块(LOAD)、日志捕获分析模块(CPT)以及管理服务模块(MGR)组成;目标端 DMHS 服务则由执行模块(EXEC)和管理服务模块 (MGR)组成。
在源端,DMHS 的 CPT 模块采用优化的日志扫描算法实现增量日志数据的快速捕获分析,并将分析完成后的日志数据转换为内部的消息格式,然后通过网络将消息发送至目标端DMHS 服务;
在目标端, DMHS 服务接收到源端的日志消息后,对消息进行处理,通过多线程并行执行的方式将同步数据应用至目标端数据库,实现数据实时同步。
在大数据、云计算时代,面对日趋复杂的计算环境,DMHS 具有较好的平台适应性,支持主流的硬件平台架构如 x86_64、arm64、SPARC、POWER 以及国产飞腾、龙芯等;支持主流的操作系统平台如 Windows、Linux、AIX、HP-UX、Kylin 等。在同一解决方案架构下,能够实现企业不同平台上的多个信息系统的数据复制的需求。目前源数据库支持 DM、MySQL、PostgreSQL、DB2、SQLServer、Oracle9i 及以上版本。目标数据库支持可通过 ODBC接口连接的主流关系数据库系统,包括 DM、MySQL、PostgreSQL、DB2、SQLServer、Oracle9i及以上版本,同时目标端 DMHS还支持将数据同步至大数据处理平台组件如 Hive、Kafka。
目录
1、实验环境
2、环境检查
2.1、源端归档日志与逻辑日志检查
2.2、dmoci包检查
2.3、ddl同步
3、安装DMHS软件
4、配置同步(web配置)
4.1目的端配置执行器
4.2.源端配置捕获器
5、测试同步
6、配置文件
6.1、源端配置文件
6.2、目的端配置文件
7、配置过程相关错误
7.1.调用图形化失败:
7.2.修改cpt配置获取模式失败:
1、实验环境
数据库版本:dm8_20211026_x86_rh6_64_sec_8.1.2.84.iso
DMHS版本:dmhs_V4.2.98_dm8_rev117654_rh6_64_veri_20221028_sp2.bin
| 源端 | 目的端 |
ip地址 | 172.16.1.56 | 172.16.1.54 |
数据库架构 | DM8单机 | DM8DSC集群节点 |
安装目录 | /dmdata/dmhs | /dmdata/dmhs |
数据库端口 | 5236 | 5236 |
DMHS服务端口 | 5345 | 5345 |
数据接收端口 | / | 5346 |
2、环境检查
2.1、源端归档日志与逻辑日志检查
检查源端是否开启归档日志与逻辑日志
SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN('ARCH_INI','RLOG_APPEND_LOGIC');
开启归档:
alter database mount;
alter database add archivelog 'dest=/dmdata/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=20480';
alter database archivelog;
alter database open;
开启逻辑日志:
SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',2);
2.2、dmoci包检查
目的端使用和数据库同版本的libdmoci.so替换数据库安装目录下的libdmoci.so,和达梦申请相关dmdci包
2.3、ddl同步
如果要开启ddl同步,需要在源端执行相关ddl脚本,在DMHS安装目录的script目录下,直接disql执行脚本会乱码报错,先执行set CHAR_CODE UTF8再执行脚本,最好是在管理工具执行
3、安装DMHS软件
把安装包权限更改到dmdba用户下,赋予执行权限,使用dmdba用户安装
本次安装源端选择完整版,目的端选择精简版,将HSEM管理平台配置在源端上,目的端内置库使用源端IP
安装包目录下执行以下命令开始安装
./dmhs_V4.2.98_dm8_rev117654_rh6_64_veri_20221028_sp2.bin
4、配置同步(web配置)
http://ip:8080/manager
默认账号:admin/888888
4.1目的端配置执行器
1、添加HS实例,选择执行器
2、启动HS实例
3、启动执行器
4.2.源端配置捕获器
1、添加HS实例,配置捕获器
2、修改CPT配置,同步模式映射
3、启动HS实例
4、初次启用要先装载字典
5、启动CPT
目的端执行
start exec
源端执行
CLEAR EXEC LSN
COPY 0 “SCH.NAME=’SYSDBA’” DICT
START CPT
5、测试同步
在源端建表、插数据
CREATE TABLE TEST(ID INT,NAME VARCHAR2(20));
INSERT INTO TEST VALUES(1,'张三');
INSERT INTO TEST VALUES(2,'李四');
INSERT INTO TEST VALUES(3,'王五');
COMMIT;
目的端查看是否同步
发现同步过来的中文数据乱码,修改源端目的端字符集为PG_UTF8,重启服务
6、配置文件
6.1、源端配置文件
HS实例服务配置文件
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>DMSERVER</name>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<cpt>
<enable>1</enable>
<name>cpt</name>
<db_type>DM8</db_type>
<db_server>172.16.1.56</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<char_code>PG_UTF8</char_code>
<db_port>5236</db_port>
<ddl_mask>TABLE:CREATE:DROP:TRUNCATE:ALTER</ddl_mask>
<cpt_mask/>
<send>
<ip>172.16.1.54</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>SYSDBA.*</item>
<item>*.*</item>
</enable>
</filter>
<map>
<item>SYSDBA.*==SYSDBA.*</item>
</map>
</send>
</cpt>
</dmhs>
|
STAT监控服务
<?xml version="1.0" encoding="GB2312"?>
<dmhs_stat>
<base>
<lang>ch</lang>
</base>
<dmhs_conf>
<hs_xml_path>/dmdata/dmhs/INST_HS/DMSERVER/dmhs.hs</hs_xml_path>
<server_ip>172.16.1.56</server_ip>
<mgr_port>5345</mgr_port>
<startup_flag>2</startup_flag>
</dmhs_conf>
<stat_conf>
<stat_module_alive>1</stat_module_alive>
<module_alive_interval>30</module_alive_interval>
<stat_statistic>1</stat_statistic>
<statistic_interval>30</statistic_interval>
<stat_thr_info>1</stat_thr_info>
<thr_info_interval>30</thr_info_interval>
<stat_lag_info>1</stat_lag_info>
<lag_info_interval>30</lag_info_interval>
<stat_errlog>1</stat_errlog>
<stat_machine>1</stat_machine>
<machine_interval>30</machine_interval>
<save_sql>1</save_sql>
<stat_delay>30</stat_delay>
</stat_conf>
<database>
<db_server>172.16.1.56</db_server>
<db_port>15236</db_port>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
</database>
</dmhs_stat>
|
Agent代理服务
<?xml version="1.0" encoding="GB2312"?>
<hs_agent>
<name>HsAgent</name>
<lang>ch</lang>
<server_ip>172.16.1.56</server_ip>
<lsn_port>5456</lsn_port>
<status_interval>3</status_interval>
<status_server>172.16.1.56</status_server>
<status_port>15236</status_port>
<status_user>SYSDBA</status_user>
<status_pwd>SYSDBA</status_pwd>
<dmhs_support>1</dmhs_support>
<veri_support>1</veri_support>
<hs_item>
<name>DMSERVER</name>
<startup_flag>2</startup_flag>
<prog_dir>/dmdata/dmhs/INST_HS/DMSERVER</prog_dir>
<conf_path>/dmdata/dmhs/INST_HS/DMSERVER/dmhs.hs</conf_path>
<svr_name>DmhsServiceDMSERVER</svr_name>
<stat>
<startup_flag>2</startup_flag>
<prog_dir>/dmdata/dmhs/INST_STAT/DMSERVER</prog_dir>
<conf_path>/dmdata/dmhs/INST_STAT/DMSERVER/dmhs_stat.xml</conf_path>
<svr_name>DmhsStatServiceDMSERVER</svr_name>
</stat>
<server_ip>172.16.1.56</server_ip>
<mgr_port>5345</mgr_port>
</hs_item>
</hs_agent>
|
6.2、目的端配置文件
HS实例服务配置文件
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>DSC0</name>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
</recv>
<enable>1</enable>
<name>exec</name>
<db_type>DM8</db_type>
<db_server>172.16.1.54</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<char_code>PG_UTF8</char_code>
<exec_thr>4</exec_thr>
</exec>
</dmhs>
|
STAT监控服务
<?xml version="1.0" encoding="GB2312"?>
<dmhs_stat>
<base>
<lang>ch</lang>
</base>
<dmhs_conf>
<hs_xml_path>/dmdata/dmhs/INST_HS/DSC0/dmhs.hs</hs_xml_path>
<server_ip>172.16.1.54</server_ip>
<mgr_port>5345</mgr_port>
<startup_flag>2</startup_flag>
</dmhs_conf>
<stat_conf>
<stat_module_alive>1</stat_module_alive>
<module_alive_interval>30</module_alive_interval>
<stat_statistic>1</stat_statistic>
<statistic_interval>30</statistic_interval>
<stat_thr_info>1</stat_thr_info>
<thr_info_interval>30</thr_info_interval>
<stat_lag_info>1</stat_lag_info>
<lag_info_interval>30</lag_info_interval>
<stat_errlog>1</stat_errlog>
<stat_machine>1</stat_machine>
<machine_interval>30</machine_interval>
<save_sql>1</save_sql>
<stat_delay>30</stat_delay>
</stat_conf>
<database>
<db_server>172.16.1.56</db_server>
<db_port>15236</db_port>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
</database>
</dmhs_stat>
|
Agent代理服务
<?xml version="1.0" encoding="GB2312"?>
<hs_agent>
<name>HsAgent</name>
<lang>ch</lang>
<server_ip>172.16.1.54</server_ip>
<lsn_port>5456</lsn_port>
<status_interval>3</status_interval>
<status_server>172.16.1.56</status_server>
<status_port>15236</status_port>
<status_user>SYSDBA</status_user>
<status_pwd>SYSDBA</status_pwd>
<dmhs_support>1</dmhs_support>
<veri_support>1</veri_support>
<hs_item>
<name>DSC0</name>
<startup_flag>2</startup_flag>
<prog_dir>/dmdata/dmhs/INST_HS/DSC0</prog_dir>
<conf_path>/dmdata/dmhs/INST_HS/DSC0/dmhs.hs</conf_path>
<svr_name>DmhsServiceDSC0</svr_name>
<stat>
<startup_flag>2</startup_flag>
<prog_dir>/dmdata/dmhs/INST_STAT/DSC0</prog_dir>
<conf_path>/dmdata/dmhs/INST_STAT/DSC0/dmhs_stat.xml</conf_path>
<svr_name>DmhsStatServiceDSC0</svr_name>
</stat>
<server_ip>172.16.1.54</server_ip>
<mgr_port>5345</mgr_port>
</hs_item>
</hs_agent>
|
7、配置过程相关错误
7.1.调用图形化失败:
ROOT用户下执行xhost +,然后,再查看下echo $DISPLAY环境变量的值,dmdba用户再临时赋值此变量的值
7.2.修改cpt配置获取模式失败:
添加过滤规则和映射规则时报错获取模式失败,原因是安全版默认开启SSL认证,关闭SSL,重启数据库即可
关闭SSL:
sp_set_para_value(2,'ENABLE_ENCRYPT',0);
7.3、执行start exec卡住:
使用和数据库安装包同版本的libdmoci.so文件,上传到数据库安装目录的bin目录下
如果已经更换后,在web端还是卡住,直接在命令行登录控制台执行