达梦支持从mysql的主库和备库同步数据到达梦数据库,如果源端是云数据库,可以通过获取云上binlog日志到中间服务器,再到中间服务器部署dmhs抽取mysql binlog日志。
因客户有迁移云数据库(RDS)数据到达梦数据库的需求,而云数据库是封装的产品,没法在云数据库所在服务器部署数据同步软件DMHS,此文章有部分内容验证将云上数据库rds的binlog日志拷贝到中转机器,验证在中转机器抽取日志,数据库连接到云数据库的技术的可行性,暂未在实际生产环境实施过。第二个需求是希望数据同步软件DMHS不影响主库性能,故从备库上部署DMHS软件,实现同步生产数据到达梦数据库。
因客户环境测试,故把ip地址脱敏。
没法在生产端部署dmhs时,需要准备一台中间机器来部署dmhs,整体部署和配置跟正常部署在Mysql服务器端一样,区别是我们需要在部署机器上拉取云端数据库的binlog到中间机器,再在配置文件中配置中间机器的日志存放路径。具体脚本和配置见下面章节:mysql端部署和配置。
根据不同的用户需求,可以实现主库同步、备库同步、中转机器上同步数据,可灵活选择架构。
已创建数据库,有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
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
yum install odbc -y
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
<?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
中间机器额外部署
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>
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 安装完成
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;
yum install unixODBC.x86_64 mysql-connector-odbc.x86_64 -y
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
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
正常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)数据正常同步,说明同步链路正常
文章
阅读量
获赞