本文初步介绍在Linux环境下,在数据同步时DMDRS的搭建流程及常见问题。本次以图文模式测试数据迁移场景中DMDRS一对一,多对一,一对多的搭建流程。
达梦数据实时同步软件(以下简称 DMDRS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。基于成熟的关系数据模型和标准接口,支持多种软硬件平台,能够灵活的配置出一对一、一对多、多对一、多对多以及级联等多种形式的复制拓扑结构,可以广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发、多业务中心等业务领域。
数据迁移场景中已部署两个数据库,包括数据库MySQL(192.168.10.101)和数据库DM8(192.168.10.106),为实现对mysql数据库RESOURCES模式下EMPLOYEE表的全量数据迁移,同步我们需要构建DMDRS系统,以便将数据顺利迁移至dm8 数据库的RESOURCES模式。
为确保mysql DMDRS服务的正常运行,应为其执行用户配置相应的权限:该用户需对服务所在目录及其子目录具备读、写及执行权限。此外,建议将运行用户与数据库归档文件所在目录的用户组设置为一致,并确保该用户组对归档文件及其子目录拥有读权限。本文档为mysql到dm8复制示例,故建议直接使用mysql用户。
设置dm8 DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限。
groupadd -g 66000 dinstall
useradd -u 66000 -g dinstall -m -d /home/dmdrs -s /bin/bash dmdrs
将安装包放至dm8端和mysql端,按照提示启动安装命令并完成drs同步软件安装。
./dmdrs_rev166696_x86_rh6_64_20240808.bin -i
在MySQL DMDRS服务器的环境变量中,应添加MySQL C API驱动程序的文件路径,同时在dm8 DMDRS服务器的环境变量中,需配置DMDPI驱动程序的文件路径。
配置.bash_profile环境变量。
$ vi ~/.bash_profile
在.bash_profile配置文件末尾增加驱动路径。
mysql DMDRS服务器环境变量中添加MySQL C API驱动路径。
export LD_LIBRARY_PATH=<MySQL C API驱动路径>:$LD_LIBRARY_PATH
dm8 DMDRS服务器环境变量中添加DMDPI驱动路径。
export LD_LIBRARY_PATH=<DMDPI驱动路径>:$LD_LIBRARY_PATH
保存并退出vi编辑器,使环境变量生效。
$ source ~/.bash_profile
查看环境变量是否设置成功。
$ echo $LD_LIBRARY_PATH
DMDRS同步软件通过分析MySQL数据库的binlog日志,从而解析为达梦sql语句并同步到dm端。需要修改以下配置文件。
编辑MySQL数据库配置文件“my.ini”,log_bin参数值为mysql-bin,开启bin日志后才可进行同步。设置binlog_format参数值为row。 当应用场景包含LOB数据的同步时,需要设置max_allowed_packet。当mysql版本低于5.7时,开启binlog需要指定server_id。
[mysqld]
log_bin=mysql-bin
binlog_format=row
max_allowed_packet=100M
server_id=1##mysql5.7版本以下需要指定,5.7版本以上不需要
重启数据库服务,使配置生效
查看数据库参数设置是否已生效。
SQL> show variables like 'log_bin';
创建mysql 数据库和dm8 数据库用于DRS的同步用户,并为数据库同步用户配置权限。
DM8建议直接配备DBA权限,Mysql配置select,锁表等权限即可。
DM8:
create user "DMDRS" identified by "DMDRS";
grant "DBA","PUBLIC" to "DMDRS";
MySQL
create user "DMDRS"@"%" identified by "DMDRS"
grant PROCESS,REPLICATION CLIENT,SELECT,LOCK TABLES on . to "DMDRS"@"%";
<mgr_port>Manager管理模块的端口号
<siteid>站点号
<name>CPT模块的名称
<dbtype>源数据库的类型
<server>源数据库的服务名或IP地址
<dbname>源数据库的库名
<user>源数据库的用户名
<pwd>源数据库的登录密码
<port>源数据库的监听端口号
<ip>下一级DMDRS服务的IP地址
<port>下一级DMDRS服务的Manager管理模块的端口号
<target_name>下一级DMDRS服务的接收模块的名称
<item>对象名映射
<max_speed>数据同步时源DMDRS向目标DMDRS发送数据时的限速。
<threads>装载读取源数据库数据的线程数。
<io_threads>日志读取线程个数。
<send_queue>日志发送队列的大小。
<log_buf_size>读取日志缓冲区大小。
<mgr_port>Manager管理模块的端口号</mgr_port>
<siteid>站点号
<name>EXEC模块的名称
<dbtype>目标数据库的类型
<server>目标数据库的服务名或IP地址
<dbname>目标数据库的库名
<user>目标数据库的登录名或用户名
<pwd>目标数据库的登录密码
<port>目标数据库的监听端口号
<mem_size>服务程序运行时可以申请的最大内存。
<mgr_port>Manager管理模块的端口号
<siteid>站点号
<name>DSS模块的名称
<file_size>单个文件存储数据量的大小。
<buf_size>每个DSS模块中内存池的大小。
<io_num>IO线程的个数。
<limit_size>单个日志流中存储文件的上限值。
在dm8 DMDRS服务的配置文件目录,打开并修改exec.xml配置文件,修改后配置文件如下所示。
在mysql DMDRS服务的配置文件目录,打开并修改cpt.xml配置文件,修改后配置文件如下所示。
按照服务的运行顺序,启动dm8 DMDRS服务和mysql DMDRS服务。
将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
$ cp TemplateService ../DrsService
打开并修改DrsService服务脚本中的相关配置参数。
$ vi DrsService
INSTALL_HOME=/home/dmdrs/dmdrs5##安装目录
PROG_DIR=/home/dmdrs/dmdrs5/bin##执行程序目录
CONF_PATH=/home/dmdrs/dmdrs5/bin/exec.xml##配置文件路径
EXEC_PROG_NAME=drsvr##可执行程序名
SERVICE_TYPE_NAME="drs server"##服务类型名
启动dm8 DMDRS服务。
$ ./DrsService start
将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
$ cp TemplateService ../DrsService
打开并修改DrsService服务脚本中的相关配置参数。
$ vi DrsService
INSTALL_HOME=/home/dmdrs/dmdrs5##安装目录
PROG_DIR=/home/dmdrs/dmdrs5/bin##执行程序目录
CONF_PATH=/home/dmdrs/dmdrs5/bin/cpt.xml##配置文件路径
EXEC_PROG_NAME=drsvr##可执行程序名
SERVICE_TYPE_NAME="drs server"##服务类型名
启动mysql DMDRS服务。
$ ./DrsService start
使用服务脚本启动服务后,需要使用远程控制台对服务中的CPT模块执行数据迁移命令。
启动控制台。
$ ./drcsl cpt.xml
连接mysql DMDRS服务。
CSL> connect
设置数据库当前最新的日志LSN作为日志解析的起始位置(也可手动指定lsn)。
CSL> alter cpt_mysql set lsn
启动mysql DMDRS服务中的CPT模块。
CSL> start
将mysql 数据库中RESOURCES模式添加至同步列表,并在同步之前把mysql 端表的全量数据装载到dm8 数据库(需要先创建dm8 数据库),随后DRS自动进行增量同步。
CSL> alter cpt_mysql add table "sch.name='world'"
mysql端插入一条数据,查询dm端
dmserver端查询
达梦DRS同步软件实现一对多依赖于DSS模块,在该场景中中,Manager管理模块提供基本的服务管理功能,DSS模块提供数据流存储功能。
在dm8DMDRS服务的配置文件目录,打开并修改dss.xml配置文件,修改后配置文件如下所示。
在dm8 server1 DMDRS服务的配置文件目录,打开并修改exec.xml配置文件,修改后配置文件如下所示。
在mysql DMDRS服务的配置文件目录,打开并修改exec.xml配置文件,修改后配置文件如下所示。
按照服务的运行顺序,启动dm8 DMDRS服务和mysql DMDRS服务。
将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
$ cp TemplateService ../DssService
打开并修改DrsService服务脚本中的相关配置参数。
$ vi DssService
INSTALL_HOME=/home/dmdrs/dmdrs5##安装目录
PROG_DIR=/home/dmdrs/dmdrs5/bin##执行程序目录
CONF_PATH=/home/dmdrs/dmdrs5/bin/dss.xml##配置文件路径
EXEC_PROG_NAME=dssvr##可执行程序名
SERVICE_TYPE_NAME="dss server"##服务类型名
启动dm8 DMDRS服务。
$ ./DrsService start
将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
$ cp TemplateService ../DssService
打开并修改DrsService服务脚本中的相关配置参数。
$ vi DssService
INSTALL_HOME=/home/dmdrs/dmdrs5##安装目录
PROG_DIR=/home/dmdrs/dmdrs5/bin##执行程序目录
CONF_PATH=/home/dmdrs/dmdrs5/bin/dss.xml##配置文件路径
EXEC_PROG_NAME=dssvr##可执行程序名
SERVICE_TYPE_NAME="dss server"##服务类型名
启动dm8 DMDRS服务。
$ ./DssService start
将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
$ cp TemplateService ../DrsService
打开并修改DrsService服务脚本中的相关配置参数。
$ vi DrsService
INSTALL_HOME=/home/dmdrs/dmdrs5##安装目录
PROG_DIR=/home/dmdrs/dmdrs5/bin##执行程序目录
CONF_PATH=/home/dmdrs/dmdrs5/bin/cpt.xml##配置文件路径
EXEC_PROG_NAME=drsvr##可执行程序名
SERVICE_TYPE_NAME="drs server"##服务类型名
启动mysql DMDRS服务。
$ ./DrsService start
使用服务脚本启动服务后,需要使用远程控制台对服务中的CPT模块执行数据迁移命令。
启动控制台。
$ ./drcsl cpt.xml
连接mysql DMDRS服务。
CSL> connect
设置数据库当前最新的日志LSN作为日志解析的起始位置(也可手动指定lsn)。
CSL> alter cpt_mysql set lsn
启动mysql DMDRS服务中的CPT模块。
CSL> start
将mysql 数据库中RESOURCES模式添加至同步列表,并在同步之前把mysql 端表的全量数据装载到dm8 数据库(需要先创建dm8 数据库),随后DRS自动进行增量同步。
CSL> alter cpt_mysql add table "sch.name='world'"
mysql端插入一条数据,查询dmserver1及dmserver2
dmserver1端查询
dmserver2端查询
如果此处出现报错,说明tmp目录硬盘空间不足,需要修改安装路径环境变量
export DMDRS_INSTALL_TMPDIR=/home/dmdrs
source ~/.bash_profile
出现该报错代表两端drs服务未全部开启,或mysql同步的库在drs侧不存在
文章
阅读量
获赞