达梦数据复制软件DMDRS安装使用(MYSQL-->DM)
源端(MYSQL端)DMDRS安装
1、DMDRS部署
./dmdrs_rev191718_x86_rh6_64_20250619.bin -i
安装过程忽略,源端只需要安装代理即可
-----------安装组件-----------
请选择需要安装的组件
1.安装达梦数据融合管理平台
2.安装代理
2、my.cnf配置
设置MySQL数据库配置文件“my.ini”或“my.cnf”中server-id参数,设置log_bin参数值为mysql-bin,binlog_format参数值为row。当应用场景包含LOB数据的同步时,需要设置max_allowed_packet参数
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=row
max_allowed_packet=100M
设置完需要重启数据库,如果一开始就设置过就不用重启了。
3、创建复制用户
CREATE USER 'DMDRS'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'Dmdrs@123.com';
GRANT PROCESS ON *.* TO 'DMDRS'@'%';
GRANT REPLICATION CLIENT ON *.* TO 'DMDRS'@'%';
GRANT SELECT ON *.* TO 'DMDRS'@'%';
GRANT LOCK TABLES ON *.* TO 'DMDRS'@'%';
flush privileges;
4、离线安装gcc-c++及相关依赖包
cd gcc
rpm -ivh *.rpm
5、安装ODBC
tar -zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure
make && make install
6、配置ODBC
vi /usr/local/etc/odbcinst.ini
[MySQL ODBC 8.0 Driver]
Driver=/usr/local/lib/libmyodbc8a.so
UsageCount=3
vi /usr/local/etc/odbc.ini
[MYSQL]
Description = MYSQL ODBC DSN
Driver = MySQL ODBC 8.0 Driver
SERVER = 10.73.82.231
PORT = 3306
UID = DMDRS
PWD = Dmdrs@123.com
DATABASE=test
charset=utf8
7、测试是否正常
isql -v MYSQL
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
8、安装MYSQL驱动
tar xvf mysql-connector-odbc-8.0.20-linux-glibc2.12-x86-64bit.tar.gz
cd mysql-connector-odbc-8.0.20-linux-glibc2.12-x86-64bit
cd lib
cp * /usr/local/lib
cd …/bin
cp * /usr/local/bin
myodbc-installer -a -d -n “MySQL ODBC 8.0 Driver” -t “Driver=/usr/local/lib/libmyodbc8w.so”
myodbc-installer -a -d -n “MySQL ODBC 8.0 Driver” -t “Driver=/usr/local/lib/libmyodbc8a.so”
如果安装数据库驱动报错 error while loading shared libraries: libodbc.so.2: cannot open shared object file: No such file or directory 解决办法: 做软链接
ln -sf libodbc.so.1.0.0 libodbc.so.2
9、环境变量配置
vi /etc/profile
添加
export LD_LIBRARY_PATH=/home/mysql/dmdrs5/bin/lib:/usr/local/lib:$LD_LIBRARY_PATH
source /etc/profile
配置完环境变量后需要进行校验确保已识别到对应的数据库驱动
cd /home/mysql/dmdrs5/bin
ldd libdbmysql.so
[mysql@middleware-231 bin]$ ldd libdbmysql.solinux-vdso.so.1 => (0x00007ffc012ed000)libc.so.6 => /lib64/libc.so.6 (0x00007fa9575d6000)libm.so.6 => /lib64/libm.so.6 (0x00007fa9572d4000)librt.so.1 => /lib64/librt.so.1 (0x00007fa9570cc000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa956eb0000)libdl.so.2 => /lib64/libdl.so.2 (0x00007fa956cac000)libdrpub.so => ./libdrpub.so (0x00007fa95541f000)libmysqlclient.so.18 => ./libmysqlclient.so.18 (0x00007fa954e04000)/lib64/ld-linux-x86-64.so.2 (0x00007fa957bcd000)libstdc++.so.6 => /home/mysql/dmdrs5/bin/lib/libstdc++.so.6 (0x00007fa957c62000)libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fa954bee000)
如果提示not fund则需要安装相应的库文件
10、配置dmdrs配置
cd /home/mysql/dmdrs5/bin/
vi cpt.xml
<?xml version="1.0" encoding="GB18030"?>
<drs><base><mgr_port>5345</mgr_port> <siteid>1</siteid><mem_size>8</mem_size> </base><cpt><name>cpt_mysql</name><ddl_mask>TABLE:INDEX:CREATE:ALTER:TRUNCATE:DROP</ddl_mask><login><dbtype>mysql</dbtype><server>10.73.82.231</server><dbname>test</dbname><user>DMDRS</user><pwd>Dmdrs@123.com</pwd><port>3306</port></login><send><ip>10.73.93.44</ip><port>5345</port><target_name>exec_dm8</target_name><map><item>test.*==test.*</item><item>test1.*==test1.*</item></map></send></cpt>
</drs>
11、前台启动确认是否可以启动
./drsvr cpt.xml
MGR[INFO]: DRS start up, current version: V5.2.3.2-Build(2025.05.17-189541_trunc)_64 (Feiteng)(Enterprise Edition)
MGR[INFO]: Module is loaded. module: cpt_mysql
MGR[INFO]: Initializing the cache module. path: ./cpt_mysql/CACHE_mtnoh_cpt_mysql, buffers size: 512 MB
MGR[INFO]: SITEID: 1 NAME: ORACLEWH-STODB57-R220KV2 MEMCHECK: 0 PORT: 5345 GROUP: 0 VERSION: 1 PATH: cpt.xml
CMD>
12、配置成服务脚本
cp /home/mysql/dmdrs5/bin/service_template/TemplateService /home/mysql/dmdrs5/bin/DrsServer_cpt
vi /home/mysql/dmdrs5/bin/DrsServer_cpt
--修改以下内容
#set execute environment
#REPLACE INSTALL_HOME path
INSTALL_HOME=/home/mysql/dmdrs5
#REPLACE program dir
PROG_DIR=/home/mysql/dmdrs5/bin
#REPLACE program config path
#If drs server is BP node and wants to startup without drs.xml,please specify the running port in CONF_PATH,for example,CONF_PATH="-port 5345"
CONF_PATH=/home/mysql/dmdrs5/bin/cpt.xml
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=/home/mysql/dmdrs5/bin#REPLACE program name, drsvr/dssvr/dvsvr
EXEC_PROG_NAME=drsvr
#REPLACE service type, drs server/dss server/dvs server
SERVICE_TYPE_NAME="drs server"
13、启动源端DMDRS
cd /home/mysql/dmdrs5/bin
./DrsServer_cpt start
Starting DrsServer_cpt [ OK ]
目的端(DM端)DMDRS安装
1、DMDRS安装
./dmdrs_rev191718_x86_rh6_64_20250619.bin -i
安装过程忽略,目的端将数据整合平台和代理都装上
-----------安装组件-----------
请选择需要安装的组件
1.安装达梦数据融合管理平台
2.安装代理
1、创建复制用户
CREATE TABLESPACE DMDRS DATAFILE 'DMDRS.DBF' SIZE 2048 AUTOEXTEND ON MAXSIZE 67108863;
CREATE USER "DMDRS" IDENTIFIED BY "Dmdrs@123.com" DEFAULT TABLESPACE "DMDRS";
GRANT "DBA" TO "DMDRS";
2、创建要同步的用户对应的表空间
create tablespace TEST DATAFILE 'TEST.dbf' size 2048 AUTOEXTEND ON MAXSIZE 67108863;
create user TEST identified by "Test@123.com" default tablespace TEST;
3、配置环境变量
vi /etc/profile 添加
export LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:$LD_LIBRARY_PATH
source /etc/profile 配置完环境变量后需要进行校验确保已识别到对应的数据库驱动 达梦端可以通过以下命令进行确定:
[root@middleware-44 ~]# cd /home/dmdba/dmdrs5/bin
[root@middleware-44 bin]# ldd libdredm.solinux-vdso.so.1 (0x00007ffde2d9f000)libc.so.6 => /usr/lib64/libc.so.6 (0x00007f04b0c51000)libm.so.6 => /usr/lib64/libm.so.6 (0x00007f04b0ace000)librt.so.1 => /usr/lib64/librt.so.1 (0x00007f04b0ac3000)libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f04b0aa2000)libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f04b0a9d000)libdrpub.so => ./libdrpub.so (0x00007f04af210000)libdrnet.so => ./libdrnet.so (0x00007f04aeff7000)libdrcache.so => ./libdrcache.so (0x00007f04aed92000)libdmdpi.so => /home/dmdba/dmdbms/bin/libdmdpi.so (0x00007f04ae09b000)libdmfldr.so => /home/dmdba/dmdbms/bin/libdmfldr.so (0x00007f04adf52000)libdrxml.so => ./libdrxml.so (0x00007f04add42000)libdveng.so => ./libdveng.so (0x00007f04adb32000)libdrs2d.so => ./libdrs2d.so (0x00007f04ad91b000)/lib64/ld-linux-x86-64.so.2 (0x00007f04b11fd000)libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f04ad768000)libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f04ad74f000)
4、配置DMDRS服务
vi exec.xml
<?xml version="1.0" encoding="GB18030"?>
<drs><base><mgr_port>5345</mgr_port><siteid>2</siteid></base><exec><name>exec_dm8</name><login><dbtype>dm8</dbtype><server>10.73.93.44</server><user>DMDRS</user><pwd>Dmdrs@123.com</pwd><port>5236</port> </login></exec>
</drs>
5、前台启动确认是否启动成功
./drsvr exec.xml
MGR[INFO]: DRS start up, current version: V5.2.3.2-Build(2025.05.17-189541_trunc)_64 (Feiteng)(Enterprise Edition)
MGR[INFO]: Module is loaded. module: exec_dm8
MGR[INFO]: Initializing the cache module. path: ./exec_dm8/CACHE_exec_dm8, cache size: 512 MB
MGR[INFO]: SITEID: 2 NAME: ORACLEWH-STODB67-R220KV2 MEMCHECK: 0 PORT: 5345 GROUP: 0 VERSION: 1 PATH: exec.xml
MGR[INFO]: Module is starting. module: exec_dm8
MGR[INFO]: The module is running. module: exec_dm8
EXE[INFO]: Set the character set on the executing end. char_code: UTF8
EXE[INFO]: EXEC: DBTYPE:DM8 SERVER=192.168.61.162;USER=DMDRS;PORT=5236;
CMD>
6、配置成服务
cp /home/dmdba/dmdrs5/bin/service_template/TemplateService /home/dmdba/dmdrs5/bin/DrsServer_exec
vi /home/dmdba/dmdrs5/bin/DrsServer_exec
--修改以下内容
#set execute environment
#REPLACE INSTALL_HOME path
INSTALL_HOME=/home/dmdba/dmdrs5
#REPLACE program dir
PROG_DIR=/home/dmdba/dmdrs5/bin
#REPLACE program config path
#If drs server is BP node and wants to startup without drs.xml,please specify the running port in CONF_PATH,for example,CONF_PATH="-port 5345"
CONF_PATH=/home/dmdba/dmdrs5/bin/exec.xml
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=/home/dmdba/dmdrs5/bin#REPLACE program name, drsvr/dssvr/dvsvr
EXEC_PROG_NAME=drsvr
#REPLACE service type, drs server/dss server/dvs server
SERVICE_TYPE_NAME="drs server"
7、启动服务
cd /home/dmdba/dmdrs5/bin
./DrsServer_exec start
Starting DrsServer_exec [ OK ]
启动源端(MYSQL端)控制台
cd /home/mysql/dmdrs5/bin
./drcsl cpt.xml
--连接源DMDRS服务
CSL> connect 127.0.0.1:5345
--设置lsn
CSL> alter cpt_mysql set lsn
CSL> alter cpt_mysql add table "sch.name in('TEST')" dict|drop|create|index|insert
--如果是拷贝多个库则这样写
CSL> alter cpt_mysql add table "sch.name in('TEST','TEST1')" dict|drop|create|index|insert
CSL[INFO]: [INPUT CMD: alter cpt_mysql add table "sch.name in('TEST','TEST1')" dict|drop|create|index|insert]
MGR[WARN]: 包含不支持的掩码,将忽略此掩码继续装载 |DICT
MGR[INFO]: 获取到装载掩码组合 mask: |CREATE|DROP|INSERT|INDEX|TABLE
MGR[WARN]: 检测到TRUNCATE/DROP/CLEAR掩码,会对执行端目标表进行相应操作,再进行装载!请确认是否继续?(Y/N)
y
命令执行成功
CSL> start cpt
CSL[INFO]: [INPUT CMD: start cpt]
MGR[INFO]: 模块正在启动 module: cpt_mysql
MGR[INFO]: 设置当前时环境时区 TZ=CST-8
MGR[INFO]: 模块已经处于运行状态 module: cpt_mysql
命令执行成功 --查看正在装载的表
CSL>show cpt_mysql load table running