注册
mysql到dm8数据同步实战
专栏/培训园地/ 文章详情 /

mysql到dm8数据同步实战

zhn 2024/12/16 434 0 0
摘要

本文初步介绍在Linux环境下,在数据同步时DMDRS的搭建流程及常见问题。本次以图文模式测试数据迁移场景中DMDRS一对一,多对一,一对多的搭建流程。
达梦数据实时同步软件(以下简称 DMDRS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。基于成熟的关系数据模型和标准接口,支持多种软硬件平台,能够灵活的配置出一对一、一对多、多对一、多对多以及级联等多种形式的复制拓扑结构,可以广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发、多业务中心等业务领域。

一、DMDRS安装(命令行)

1.1 场景规划

数据迁移场景中已部署两个数据库,包括数据库MySQL(192.168.10.101)和数据库DM8(192.168.10.106),为实现对mysql数据库RESOURCES模式下EMPLOYEE表的全量数据迁移,同步我们需要构建DMDRS系统,以便将数据顺利迁移至dm8 数据库的RESOURCES模式。

1.2 设置用户

为确保mysql DMDRS服务的正常运行,应为其执行用户配置相应的权限:该用户需对服务所在目录及其子目录具备读、写及执行权限。此外,建议将运行用户与数据库归档文件所在目录的用户组设置为一致,并确保该用户组对归档文件及其子目录拥有读权限。本文档为mysql到dm8复制示例,故建议直接使用mysql用户。
设置dm8 DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限。
groupadd -g 66000 dinstall
useradd -u 66000 -g dinstall -m -d /home/dmdrs -s /bin/bash dmdrs

1.3安装dmdrs

将安装包放至dm8端和mysql端,按照提示启动安装命令并完成drs同步软件安装。
./dmdrs_rev166696_x86_rh6_64_20240808.bin -i
image.png

二、数据库准备工作

2.1设置环境变量

在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

2.2 开启mysql 数据库的binlog日志

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版本以上不需要
image.png
重启数据库服务,使配置生效
查看数据库参数设置是否已生效。
SQL> show variables like 'log_bin';
image.png

2.3 创建数据库同步用户和配置用户权限

创建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"@"%";

三、同步配置参数介绍

3.1 cpt文件配置

<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>读取日志缓冲区大小。

3.2 exec文件配置

<mgr_port>Manager管理模块的端口号</mgr_port>
<siteid>站点号
<name>EXEC模块的名称
<dbtype>目标数据库的类型
<server>目标数据库的服务名或IP地址
<dbname>目标数据库的库名
<user>目标数据库的登录名或用户名
<pwd>目标数据库的登录密码
<port>目标数据库的监听端口号
<mem_size>服务程序运行时可以申请的最大内存。

3.3 dss文件配置

<mgr_port>Manager管理模块的端口号
<siteid>站点号
<name>DSS模块的名称
<file_size>单个文件存储数据量的大小。
<buf_size>每个DSS模块中内存池的大小。
<io_num>IO线程的个数。
<limit_size>单个日志流中存储文件的上限值。

四、配置MYSQL到dm8一对一

4.1 配置dm8 DMDRS服务

在dm8 DMDRS服务的配置文件目录,打开并修改exec.xml配置文件,修改后配置文件如下所示。
image.png

4.2 配置mysql DMDRS服务、

在mysql DMDRS服务的配置文件目录,打开并修改cpt.xml配置文件,修改后配置文件如下所示。
image.png
按照服务的运行顺序,启动dm8 DMDRS服务和mysql DMDRS服务。

4.3 启动dm8 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

4.4 启动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/cpt.xml##配置文件路径
EXEC_PROG_NAME=drsvr##可执行程序名
SERVICE_TYPE_NAME="drs server"##服务类型名
启动mysql DMDRS服务。
$ ./DrsService start

4.5 在mysql DMDRS服务中执行数据复制命令

使用服务脚本启动服务后,需要使用远程控制台对服务中的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'"
image.png

4.6 验证测试

mysql端插入一条数据,查询dm端
image.png
dmserver端查询
image.png

五、配置MYSQL到dm8一对多

达梦DRS同步软件实现一对多依赖于DSS模块,在该场景中中,Manager管理模块提供基本的服务管理功能,DSS模块提供数据流存储功能。

5.1 配置dm8 DSS服务

在dm8DMDRS服务的配置文件目录,打开并修改dss.xml配置文件,修改后配置文件如下所示。
image.png

5.2 配置dm8 server1 DMDRS服务

在dm8 server1 DMDRS服务的配置文件目录,打开并修改exec.xml配置文件,修改后配置文件如下所示。
image.png

5.3 配置dm8 server2 DMDRS服务

在mysql DMDRS服务的配置文件目录,打开并修改exec.xml配置文件,修改后配置文件如下所示。
按照服务的运行顺序,启动dm8 DMDRS服务和mysql DMDRS服务。
image.png

5.4 启动DSS服务

将服务脚本模板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

5.5 启动dm8 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服务。
$ ./DssService start

5.6 启动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/cpt.xml##配置文件路径
EXEC_PROG_NAME=drsvr##可执行程序名
SERVICE_TYPE_NAME="drs server"##服务类型名
启动mysql DMDRS服务。
$ ./DrsService start

5.7 在mysql DMDRS服务中执行数据复制命令

使用服务脚本启动服务后,需要使用远程控制台对服务中的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'"

5.8 验证测试

mysql端插入一条数据,查询dmserver1及dmserver2
image.png
dmserver1端查询
image.png
dmserver2端查询
image.png

六、部署中常见错误

6.1 部署出现文件提前错误报错

image.png
如果此处出现报错,说明tmp目录硬盘空间不足,需要修改安装路径环境变量
export DMDRS_INSTALL_TMPDIR=/home/dmdrs
source ~/.bash_profile
image.png

6.2 网络连接失败

image.png
出现该报错代表两端drs服务未全部开启,或mysql同步的库在drs侧不存在

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服