目录
概述
安装规划
安装步骤
上传安装包
更改权限
执行安装命令
源端和目的端处理
开启归档
开启逻辑日志
创建测试表
生成测试数据
配置目的端文件
配置源端文件
启动目的端
启动源端
装载数据
源端开启cpt模块
数据同步验证
随机数据验证
概述
达梦数据实时同步软件(DMHS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实时同步复制。DMHS基于成熟的关系数据模型和标准接口,支持多种软硬件平台,能够灵活的配置出一对一、一对多、多对一、多对多以及级联等多种形式的复制拓扑结构,可以广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发、多业务中心等业务领域。
安装规划
在源端和目的端进行单向数据同步安装,源端IP:192.168.153.130,目的端IP:192.168.153.131
安装步骤
上传安装包
将DMHS安装包上传至虚拟机(本次上传路径为/opt目录下,源端和目的端都要上传)
更改权限
采用root用户执行下面的命令:
chown -R dmdba:dinstall /optchmod -R 755 /opt
切换至dmdba用户
su dmdba
执行安装命令
使用dmdba用户执行下面的安装命令(-i为命令行安装的方式,源端和目的端都需要进行安装)
./dmhs_V4.3.36_dm8_rev181880_rh6_64_20250218_sp3.bin -i
语言选择:选择2简体中文
选择1免费试用达梦数据实时同步
选择2安装完整版
选择安装目录(本次默认安装目录,直接回车即可)
这里选择统一部署
远程部署工具名称默认即可
主机IP通过ifconfig查看后输入本机可被访问的IP地址即可
web服务内置库默认即可
依赖库路径选择dm数据库安装目录下的bin目录和dmhs安装目录下的bin目录,中间用:隔开
/home/dmdba/dmdbms/bin:/home/dmdba/dmhs/bin
所有的服务选择手动启动,至此dmhs安装完成,安装路径为/home/dmdba/dmhs
源端和目的端处理
开启归档
源端和目的端使用管理工具或disql登录数据库,执行下面的命令(路径更换为自己的路径即可)开启归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG ;
ALTER DATABASE ADD ARCHIVELOG 'TYPE=LOCAL, DEST = /dmdata/arch, file_size=128, space_limit=1024';
ALTER DATABASE OPEN ;
验证归档是否开启:
select para_value from v$dm_ini where para_name in ('ARCH_INI');
结果显示为1,表示开启归档
开启逻辑日志
源端和目的端采用下面的命令开启逻辑日志
SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
验证逻辑日志是否开启
select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');
结果显示为1表示开启逻辑日志
创建测试表
在源端SYSDBA模式下新建一张测试表,字段如下:
create table EMPLOYEES
(EMPLOYEEID INT not null, //非空 主键,自增列NATIONALNO VARCHAR(18) not null, //非空 身份证号码PERSONID INT not null, //非空 指向 PERSON.PERSONID 的外键LOGINID VARCHAR(256) not null, //非空 用户登录 IDTITLE VARCHAR(50) not null,// 非空 职位MANAGERID INT, //空BIRTHDATE DATE not null, //非空 出生日期MARITALSTATUS CHAR(1) not null,// 非空 S=未婚 M=已婚PHOTO IMAGE,// 空 照片HAIRDATE DATE not null, //非空 入职时间SALARY DEC(19,4) not null
);
生成测试数据
利用sqlark工具生成1万条测试数据
配置目的端文件
在目的端DMHS安装目录下的bin目录下,新建dmhs.hs配置文件
内容如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs><base> <!-- 管理模块的基本配置 --><lang>en</lang> <!-- 语言选项,ch 为中文,en 为英文 --><mgr_port>5345</mgr_port> <!-- 管理端口号,默认为5345--><ckpt_interval>60</ckpt_interval> <!-- 检查点间隔,默认60 --><siteid>2</siteid> <!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 --><version>2.0</version>
</base>
<exec> <!-- 执行模块的基本配置 --><recv><data_port>5346</data_port> <!-- 当数据传递采用网络直连时,需要配置该参数,表明同步数据从该端口号获取。 --></recv><db_type>dm8</db_type> <!-- 目标端数据库类型 --><db_server>192.168.153.131</db_server> <!-- 目标端数据库服务名或IP --><db_user>SYSDBA</db_user> <!-- 目标端数据库用户 --><db_pwd>DMwzy6870</db_pwd> <!-- 用户的密码 --><db_port>5236</db_port> <!-- 目标端数据库端口 --><db_name></db_name> <!-- 默认数据库名,默认为空串(只针对dm6有用)--><char_code>PG_GB18030</char_code><exec_thr>4</exec_thr> <!-- 执行线程个数,只有当 exec_mode 为 1 时才会生效!默认为1 --><exec_sql>1024</exec_sql> <!-- SQL 缓存大小,默认为 512M --><exec_trx> 5000 </exec_trx> <!-- 事务缓存个数,默认为 5000 --><exec_rows>1000</exec_rows> <!-- 批量绑定行数,默认为 250 --></exec>
</dmhs>
将目的端数据库的IP、端口号、用户名和密码修改为自己机器的即可,其他选项可默认
配置源端文件
在源端DMHS安装目录下的bin子目录,新建dmhs.hs配置文件
<?xml version="1.0" encoding="GB2312"?>
<dmhs><base>
<lang>en</lang><mgr_port>5345</mgr_port><ckpt_interval>60</ckpt_interval><siteid>1</siteid>
<version>2.0</version></base><cpt><db_type>dm8</db_type><db_server>192.168.40.141</db_server><db_user>SYSDBA</db_user><db_pwd>dameng123</db_pwd><db_port>5236</db_port><db_ssl_path></db_ssl_path><db_ssl_pwd></db_ssl_pwd><parse_thr>1</parse_thr><ddl_mask>op:obj</ddl_mask> <!--DDL 配置项--><arch><!--归档清理配置项--><clear_interval>600</clear_interval><clear_flag>0</clear_flag></arch><send><!-- 发送模块配置 --><ip>192.168.40.142</ip><mgr_port>5345</mgr_port><data_port>5346</data_port><trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 --><constraint>1</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 --><identity>1</identity><net_turns>0</net_turns><filter><!--过滤配置项--><enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item></enable></filter><map><!--映射配置项--><item>SYSDBA.*==SYSDBA.*</item></map></send></cpt>
</dmhs>
将源端数据库的IP、端口号、用户名和密码修改为自己机器的即可,将发送模块配置下面的IP替换为目的端的IP即可,其他选项可默认,映射配置选项选择想要同步的模式和表即可
启动目的端
在第一个终端bin目录下执行下面的命令:
./dmhs_server dmhs.hs
重新启动一个终端,在bin目录下执行下面的命令
./dmhs_console
随后执行start exec命令
第一个终端显示如下:
启动源端
在第一个终端bin目录下执行下面的命令:
./dmhs_server dmhs.hs
重新启动一个终端,在bin目录下执行下面的命令
./dmhs_console
随后执行下面的命令初始化日志的起始位置
clear exec lsn
此处红色错误需要将源端dmhs.hs文件中的<ddl_mask>op:obj</ddl_mask> <!--DDL 配置项-->设置为<ddl_mask>0</ddl_mask> <!--DDL 配置项-->
装载数据
在源端执行下面的命令进行数据装载
copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX
目的端数据装载过程展示:
数据装载成功:
源端数据装载展示:
源端开启cpt模块
在./dmhs_console启动的命令行中执行start cpt命令,即可实现数据同步
数据同步验证
在源端的表中新生成1000条数据,验证目的端的数据条数
源端:
目的端:
随机数据验证
在源端使用select * from sysdba.EMPLOYEES limit 1;查询一条语句,在目的端采用唯一标识select * from sysdba.employees where nationalno='sCk7Y1s9Tb9zLku'进行查询。查看两条数据是否一致。如下图所示,结果一致
至此,DMHS单向dm8-dm8搭建完成。
达梦社区地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台https://eco.dameng.com/