注册
DMHS Mysql到DM数据同步
专栏/培训园地/ 文章详情 /

DMHS Mysql到DM数据同步

风铃 2023/12/08 1371 0 0
摘要

DMHS Mysql到DM数据同步

概述

达梦支持从mysql的主库和备库同步数据到达梦数据库,如果源端是云数据库,可以通过获取云上binlog日志到中间服务器,再到中间服务器部署dmhs抽取mysql binlog日志。

测试背景

因客户有迁移云数据库(RDS)数据到达梦数据库的需求,而云数据库是封装的产品,没法在云数据库所在服务器部署数据同步软件DMHS,此文章有部分内容验证将云上数据库rds的binlog日志拷贝到中转机器,验证在中转机器抽取日志,数据库连接到云数据库的技术的可行性,暂未在实际生产环境实施过。第二个需求是希望数据同步软件DMHS不影响主库性能,故从备库上部署DMHS软件,实现同步生产数据到达梦数据库。

测试环境

因客户环境测试,故把ip地址脱敏。
image.png

中间机器配置说明

没法在生产端部署dmhs时,需要准备一台中间机器来部署dmhs,整体部署和配置跟正常部署在Mysql服务器端一样,区别是我们需要在部署机器上拉取云端数据库的binlog到中间机器,再在配置文件中配置中间机器的日志存放路径。具体脚本和配置见下面章节:mysql端部署和配置。

同步部署架构

根据不同的用户需求,可以实现主库同步、备库同步、中转机器上同步数据,可灵活选择架构。
image.png

dm端部署和配置

已创建数据库,有dmdba用户

配置环境变量

su - dmdba
vi .bash_profile
export DM_HOME=/u01/dmdbms
export DMHS_HOME=/u01/dmhs
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin:$DMHS_HOME/bin
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

上传安装包和dmdci包并安装

dm8_xxxx_dmdci.zip
dmhs_V4.3.00_dm8_rev119281_rh6_64_veri_20221124_sp5.bin

修改属组权限
chown dmdba:dinstall dmhs_*.bin
chmod 755 dmhs_*sp5.bin

su - dmdba
[dmdba@]# cd /u01
[dmdba@]# mkdir dmhs
[dmdba@]# ./ dmhs_V4.3.00_dm8_rev119281_rh6_64_veri_20221124_sp5.bin -i
Extract install files......... 
同mysql安装步骤

解压*dmdci.zip
unzip *dmdci.zip -d /home/dmdba/dmdci/
配置环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin:$DMHS_HOME/bin:/home/dmdba/dmdci/dmoci

安装odbc

yum install odbc -y

配置odbc

odbcinst -j

cd /usr/local/etc/
cat > /usr/local/etc/odbc.ini <<EOF
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = xx.xx.xxx.xx
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
EOF
cat > /usr/local/etc/odbcinst.ini <<EOF
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /home/dmdba/dmdbms/bin/libdodbc.so
EOF
#测试
[dmdba]$ isql DM8 -v

检查库依赖包

ldd libcpt_dm8.so
ldd libdmhs_exec.so

配置dmhs

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
	<base>
		<siteid>2</siteid>
		<mgr_port>5345</mgr_port>
		<chk_interval>3</chk_interval>
		<ckpt_interval>60</ckpt_interval>
		<lang>ch</lang>
		<version>2.0</version>
	</base>
       <recv> 

		
		<data_port>5346</data_port>
	<exec>
		<db_type>DM8</db_type>
		<db_server>192.168.56.103</db_server>
		<db_user>SYSDBA</db_user>
		<db_pwd>SYSDBA</db_pwd>
		<db_port>5236</db_port>
		<level>0</level>
		<exec_mode>1</exec_mode>
		<exec_thr>4</exec_thr>
		<exec_sql>1024</exec_sql>
		<exec_trx>5000</exec_trx>
		<exec_rows>250</exec_rows>
		<case_sensitive>1</case_sensitive>
		<toggle_case>0</toggle_case>
		<exec_policy>0</exec_policy>
		<commit_policy>1</commit_policy>
		<enable_merge>1</enable_merge>
	</exec>
   </recv>
</dmhs>

前台启动服务

./dmhs_server dmhs.hs
start exec
--查看同步状态
exec

mysql端部署和配置

中间机器额外部署

1.拉取mysql远程binlog日志  nohup后台执行
./mysqlbinlog -R --raw --host=192.168.56.101 --user='root'  --password='123456' --stop-never mysql-bin.000001   --result-file=/opt/mysql/
-R --raw 读取原始二进制binlong
--result-file  本地binlong存储路径
--host 源数据库ip
--user 源数据库用户 
--password 源数据库用户密码

2.更改dmhs.hs mysql日志目录为部署机器本地binlog日志目录
<div>/opt/mysql/<div>

创建操作系统用户dmdba

id mysql
groupadd dinstall
useradd -g dinstall dmdba
--把mysql的数据加入到dmdba
usermod -a 20005 dmdba

上传软件包安装

su - dmdba
[dmdba@]# ./dmhs_V4.3.00_mysql_rev118075_rh6_64_veri_20221107.bin -i
Extract install files......... 

1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:2
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:1
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:2
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.实时同步软件配置助手
6.手册
所需磁盘空间:834 MB
安装目录: [/opt/dmhs]/home/dmdba/dmhs
该路径不为空,是否继续安装?[Y or N]Y
安装路径可能存在覆盖安装
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:1
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
webmanager start ...    webmanager finished.
db start ...    db finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:回车
主机Ip(外网)[15.2.1.140]:输入对外IP
远程部署工具管理端口[5456](1000-65535):回车
内置数据库轮询间隔[3](1-60):回车
内置数据库IP[15.2.1.140]:回车
内置数据库端口[11801]:回车
内置数据库用户名[SYSDBA]:回车
内置数据库密码[SYSDBA]:回车
内置数据库服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建内置数据库服务
初始化内置数据库
远程控制服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建远程控制服务
web服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建web服务
达梦数据实时同步 V4.0 安装完成

创建dmhs同步用户并授权

mysql> create user hstest@"%" identified by "dmhs";
mysql> grant select on *.* to hstest@'%';
mysql> grant replication slave,replication client,lock tables  on *.* to hstest@'%';
mysql> flush privileges;

安装ODBC

yum install unixODBC.x86_64 mysql-connector-odbc.x86_64 -y

配置ODBC

mysql端驱动名称设置成默认的,不然报错 MySQL ODBC 5.1 Driver

[root@DM02 unixODBC-2.3.0]# cat /usr/local/etc/odbc.ini 
[mysql]
Driver=MySQL ODBC 5.1 Driver
DESCRIPTION=MYSQL ODBC 5.1 DRIVER
SERVER=127.0.0.1
UID=dmhs
PASSWORD=xxxx
[root@DM02 unixODBC-2.3.0]# cat  /usr/local/etc/odbcinst.ini 
[MySQL ODBC 5.3 Unicode Driver]
Driver=/usr/lib64/libmyodbc5w.so
UsageCount=1
[MySQL ODBC 5.1 Driver]
Driver=/usr/lib64/libmyodbc5w.so
UsageCount=1

测试odbc

su - dmdba
[dmdba@DM02 bin]$ isql -v mysql
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

检查库包是否缺依赖包

su - dmdba
配置环境变量
su - dmdba
vi .bash_profile
export 
LD_LIBRARY_PATH=/lib:/usr/lib:/home/dmdba/dmhs/bin:/usr/local/mysql/lib:$LD_LIBRARY_PATH:/usr/local/lib

cd /home/dmdba/dmhs/bin
ldd libcpt_mysql.so
ldd libmysqlclient.so.20

配置dmhs.hs

正常mysql服务器上部署

su - dmdba
cd /home/dmdba/dmhs/bin
vi dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
	<base>
		<lang>ch</lang>
		<mgr_port>5445</mgr_port>
		<ckpt_interval>45</ckpt_interval>
		<siteid>1</siteid>
		<version>2.0</version>
	</base>
	<cpt>
		<db_type>mysql</db_type>
		<db_server>192.168.56.101</db_server>
		<db_port>3306</db_port>
		<db_name>test</db_name>
		<db_user>dmhs</db_user>
		<db_pwd>123456</db_pwd>
	<ddl_mask>TABLE:CREATE:DROP:TRUNCATE:ALTER</ddl_mask>
		<arch>
			<clear_interval>600</clear_interval>
			<clear_flag>0</clear_flag>
			<dir>/opt/mysql/</dir> --binlog存储路径
		</arch>
		<send>
			<ip>192.168.56.103</ip>
			<mgr_port>5345</mgr_port>
			<data_port>5346</data_port>
			<filter>
				<enable>
					<item>test.test</item>
				</enable>
			</filter>
			<map>
			<item>test.test==SYSDBA.TEST</item>
			</map>
		</send>
	</cpt>
</dmhs>

前台启动服务

./dmhs_server dmhs
clear exec lsn

copy 0 "sch.name='test'" DICT|DROP|CREATE|INSERT|INDEX|COMMENT

START CPT
--查看数据抽取状态
cpt

测试同步

1)查看中间机器是否可以正常抽取

./dmhs_console
启动中间机器抽取进程
start cpt 
查看抽取日志状态
cpt

2) 在主库上插入数据,可测试增、删、改

mysql -hxxx   -u -p 
insert into test values (7,101);

3) 查看达梦数据库是否正常同步

./disql sysdba/SYSDBA
select * from  test

4)数据正常同步,说明同步链路正常

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服