注册
DMHS同步之MYSQL to MYSQL
专栏/培训园地/ 文章详情 /

DMHS同步之MYSQL to MYSQL

All is well 2024/05/11 924 1 0
摘要

一、环境情况

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命令解决
ldconfig:更新动态链接器的运行时绑定,即刷新库缓存
或检查LD_LIBRARY_PATH环境变量是否包含了所有必要的库路径

四、目的端安装 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

使用ldd命令检查可执行文件依赖的.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
log-bin参数用于启用MySQL的二进制日志功能,并指定日志文件的前缀名称;
binlog有三种格式:STATEMENT、ROW和MIXED。STATEMENT格式记录SQL语句;ROW格式记录每行数据的实际更改;MIXED格式根据情况选择STATEMENT或ROW;ROW格式提供了更好的复制兼容性和数据一致性保障,特别是在涉及到触发器、存储过程或复杂的SQL逻辑时。
max_allowed_packe设置MySQL允许的最大数据包大小,即单个SQL语句或数据包能够传输的最大字节数。将其设置为100M意味着MySQL可以接收、处理或返回最大为100MB的数据包。这在处理大数据导入、BLOB或TEXT字段、或者执行大型备份恢复时特别有用。

开启MySQL的binlog,并重启MySQL数据库
图片4.png

2.DMHS同步不支持以下同步:

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

十、总结

1.确保源端和目的端的MySQL环境均已正确安装,确保同步源端目的端网络通信畅通。

2.正确安装unixODBC,确保ODBC环境可以正常工作。

3.正确安装MySQL ODBC驱动程序,确保可正常连接MySQL数据库。

4.使用isql命令测试ODBC连接,确保配置正确,可以正常使用。

5.配置同步策略,如<exec_policy>定义事务入库出错时的执行策略。

6.检查并配置源端的libcpt_mysql.so、目的端的libdmhs_exec.so依赖库路径。

7.确保源端MySQL配置了binlog并设置适当的格式和参数。

分享到此,感谢阅读。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服