DMHS同步之MYSQL to MYSQL

一、环境情况

image.png

二、源端及目的端安装MySQL,可参考网上资料,此处省略安装过程

三、目的端安装配置unixODBC

1.上传unixODBC-2.3.12.tar.gz包到/opt下
2.解压
cd /opt
tar  -zvxf unixODBC-2.3.12.tar.gz

复制

3.安装
cd unixODBC-2.3.11
./configure --prefix=/usr/local/unixODBC-2.3.12 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make && make install

复制

4.安装完成后,通过odbcinst -j查看unixODBC安装情况,如下报错
odbcinst -j
odbcinst: error while loading shared libraries: libodbcinst.so.2: cannot open shared object file: No such file or directory

执行ldconfig命令解决

复制

四、目的端安装 MySQL ODBC驱动程序

1.下载mysql-connector-odbc二进制文件
2.解压mysql-connector-odbc
tar -zvxf mysql-connector-odbc-8.0.22-linux-glibc2.12-x86-64bit

复制

3.拷贝文件
cp -r mysql-connector-odbc-8.0.22-linux-glibc2.12-x86-64bit /usr/local/mysqlodbc8

复制

4.设置环境变量
echo “export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysqlodbc8/lib” >>/etc/profile
source  /etc/profile

复制

五、目的端配置 unixODBC

1.odbcinst.ini用于列出已安装的 ODBC 数据库驱动程序
cat /etc/odbcinst.ini
[root@ecs-3893 etc]# cat odbcinst.ini 
[MySQL ODBC 5.1 Driver]
Driver      = /usr/local/mysqlodbc8/lib/libmyodbc8w.so
FileUsage   = 1
[root@ecs-3893 etc]# 

复制

2.odbc.ini用于定义数据源
cat  /etc/odbc.ini
[root@ecs-3893 etc]# cat odbc.ini 
[mysqlfordmhs]
Description = MySQL test database
Driver      = MySQL ODBC 5.1 Driver
Server      = 127.0.0.1
User        = root
Password    = root.123
Port        = 3306
[root@ecs-3893 etc]# 

复制

3.测试odbc连接MySQL
[root@ecs-3893 etc]# isql  mysqlfordmhs
+---------------------------------------+
| Connected!                            
|                                       
| sql-statement                         
| help [tablename]                      
| echo [string]                         
| quit                                  
|                                       
+---------------------------------------+

复制

六、源端目的端安装DMHS及配置

1.安装
[root@ecs-dd4b opt]# ./dmhs_V4.3.28_mysql8_rev150391_rh7_64_20240124_sp4.bin -i
Extract install files......... 
1.English(English)
2.Simplified Chinese(简体中文)
Select the language to install[2.Simplified Chinese(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:454 MB
安装目录: [/opt/dmhs]/dmhs
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.0.209](192.168.0.209):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.0.209
内置数据库端口[15236](1000-65535):
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/dmhs/log/install.log

复制

[root@ecs-dd4b opt]# cd /dmhs/bin

2.根据需求配置源端同步配置文件dmhs.hs
[root@ecs-3893 bin]# cat dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
	<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>6345</mgr_port>
		<ckpt_interval>45</ckpt_interval>
		<siteid>1</siteid>
		<version>2.0</version>
	</base>
<cpt>
	<db_type>mysql</db_type>
	<db_server>127.0.0.1</db_server>
	<db_port>3306</db_port>
	<db_name>dmtest</db_name>
	<db_user>root</db_user>
	<db_pwd>root.123</db_pwd>
	<ddl_mask>op:obj</ddl_mask>
	<char_code>PG_UTF8</char_code>
	<net_turns>0</net_turns>
	<cpt_mask>arch_read:post:parse</cpt_mask>
	<arch>
		<clear_interval>600</clear_interval>
		<clear_flag>0</clear_flag>
		<dir>/usr/local/mysql/data</dir>
	</arch>
	<send>
		<ip>192.168.0.209</ip>
		<mgr_port>6345</mgr_port>
		<data_port>6346</data_port>
		<filter>
			<enable>
				<item>dmtest.*</item>
			</enable>
		</filter>
	</send>
</cpt>
</dmhs>
注意<dir>标签中填写/etc/my.cnf配置文件中datadir内容

复制

3.目的端dmhs.hs
[root@ecs-dd4b bin]# cat dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>6345</mgr_port>
		<ckpt_interval>45</ckpt_interval>
		<siteid>2</siteid>
		<version>2.0</version>
	</base>
	<exec>
		<recv>
			<data_port>6346</data_port>
		</recv>
		<db_type>mysql</db_type>
		<db_server>127.0.0.1</db_server>
		<db_port>3306</db_port>
		<db_name>dmtest</db_name>
		<db_user>root</db_user>
		<db_pwd>root.123</db_pwd>
		<exec_policy>2</exec_policy>
		<char_code>PG_UTF8</char_code>
		<save_point_times>3</save_point_times>
	</exec>
</dmhs>

复制

<exec_policy>:事务入库出错时的执行策略。

  • 0:忽略出错的事务后继续执行,该策略是丢弃掉整个出错的事务。
  • 1:中断执行,该策略是如果入库发生错误,便终止同步进程,等待人工修复错误。
  • 2:忽略出错的操作后继续执行,出错事务中的其它操作会继续进行入库,该参数和0的区别在于,0 会保证事务的完整性,而它不保证,实现尽可能同步数据。

更多参数使用参考/dmhs/doc下《DMHS 达梦数据实时同步软件参考手册》文档。

4.源端检查依赖包ldd libcpt_mysql.so

[root@ecs-3893 bin]# ldd libcpt_mysql.so
 

图片1.png


libmysqlclient.so.21通常在/usr/local/mysql/lib下,可将此路径加入环境变量中:

vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib:/usr/local/mysqlodbc8/lib:/usr/lib
source /etc/profile

复制

5.目的端检查依赖包ldd libdmhs_exec.so

[root@ecs-dd4b bin]# ldd libdmhs_exec.so
如有libodbc.so.1=>no found 项,可设置软连接解决:

find / -name libodbc.so*
ls -s /usr/lib/libodbc.so /usr/lib/libodbc.so.1

复制

七、完成同步需求

1.目的端启动exec模块,生成辅助表
cd /dmhs/bin
./dmhs_console
start exec
观察日志
tail -100f log/dmhs_202403.log

复制

图片2.png

2.源端执行copy命令,copy完成后,执行start cpt命令启动cpt模块,完成同步
copy 0 “sch.name=’dmtest’” create|insert|dict|lsn

复制

图片3.png

八、同步测试

1.新建表

源端:
 

image.png


目的端:

image.png

2.插入数据

源端:
 

image.png


目的端:

image.png

3.更新数据

源端:
 

image.png


目的端:

image.png

4.删除数据

源端:
 

image.png


目的端:

image.png

5.删除表

源端:
 

image.png


目的端:
 

image.png


以上测试均正常执行,同步正常。

九、注意事项

1.须在源端MySQL数据库配置文件my.cnf 中增加配置项:
log-bin=mysql-bin
binlog_format=row
max_allowed_packet=100M

复制

开启MySQL的binlog,并重启MySQL数据库

图片4.png

2.DMHS同步不支持以下同步:
  1. 不支持加密数据的同步。
  2. 对主键的更新,不支持类似 update t set key=key+n 的操作。
  3. 仅支持 mysql 单机数据库。

分享到此,感谢阅读。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值