达梦数据实时同步软件(以下简称 DMHS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实时同步复制。本文主要为mysql到dm7的dmhs搭建实战。
可以通过rpm -qa |grep gcc 检查是否已经安装了gcc。若没有,则通过该 yum install gcc命令安装
[root@DM3:~/pkg]# tar -zxvf unixODBC-2.3.0.tar.gz
[root@DM3:~/pkg]# cd unixODBC-2.3.0
[root@DM3:~/pkg/unixODBC-2.3.0]# ./configure
[root@DM3:~/pkg/unixODBC-2.3.0]# make
[root@DM3:~/pkg/unixODBC-2.3.0]# make install
[root@DM3:~/pkg]# tar -zxvf mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit.tar.gz
[root@DM3:~/pkg]# cd mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit]# cp lib/libmyodbc5.so /usr/local/lib
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit]# cd bin/
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit/bin]# ./myodbc-installer -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=/usr/lib/libmyodbc5.so;SETUP=/usr/lib/libmyodbc5.so"
问题:这里的报错是因为动态库没加载进来
解决方法:
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit/bin]# echo "/usr/local/lib" >> /etc/ld.so.conf
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit/bin]# ldconfig
以上方法还是报错,可用以下方法,配置好之后重启数据库服务
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit/bin]# ln -s /usr/lib64/libodbc.so.2.0.0 /usr/lib64/libodbc.so.1
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit/bin]# ln -s /usr/lib64/libodbcinst.so.2.0.0 /usr/lib64/libodbcinst.so.1
然后再执行注册:
[root@DM3:~/pkg/mysql-connector-odbc-5.1.7-linux-glibc2.3-x86-64bit/bin]# ./myodbc-installer -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=/usr/lib/libmyodbc5.so;SETUP=/usr/lib/libmyodbc5.so"
--出现这个表明说明注册成功。
再次执行isql登录mysql
create user "MYSQL" identified by "MYSQL1234"
limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10;
[root@DM3:~]# mkdir -p /dm/dmhs
DMHS 在运行时,需要加载本地 MYSQL 动态库,linux/unix 平台下为libmysqlclient.so。
设置的方法如下,在环境变量中添加以下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /usr/local/mysql/lib
当在系统中未找到 libmysqlclient.so 文件,但存在 libmysqlclient.so的文件,可使用命令 ln -s libmysqlclient.so* libmysqlclient.so 创建一个软链接。
此次只列举源端安装方法
[dmdba@DM3:/dm/dmhs]$ ./dmhs_V4.3.00_mysql_rev118075_rh6_64_veri_20221107.bin -i
[dmdba@DM3 bin]$ cd /dm/dmhs/bin
[dmdba@DM3 bin]$ cp service_template/DmhsService dmhs_serverd
DMHS 通过分析 MYSQL 数据库的 binlog 日志来捕获数据库的增量数据,DMHS 运行之前,必须将数据库 binlog 打开,同时将 binlog format 设置为 row 模式。修改的参数均涉及数据库初始过程,修改参数后,需重启生效。具体操作过程如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</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.1.20</db_server>
<db_port>3306</db_port>
<db_name>mytest</db_name>
<db_user>root</db_user>
<db_pwd>DM_123</db_pwd>
<ddl_mask>op:obj</ddl_mask>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
<dir>/usr/local/mysql/data</dir>
</arch>
<send>
<ip>192.168.1.23</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>mytest.*</item>
</enable>
<map>
<item>mytest.*==MYSQL.*</item>
</map>
</filter>
</send>
</cpt>
</dmhs>
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>dm7</db_type>
<db_server>192.168.1.23</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_name></db_name>
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
[dmdba@DM3:/dm/dmhs/bin]$ ./dmhs_serverd start
目的端运行 DMHS 软件工具 dmhs_console,连接执行端 DMHS 服务
如果报错,查看提示有某个so文件找不到,ldd 这个文件可查看缺少某些依赖包,将包复制到当前文件夹下(一般都在dm安装bin下面,可将bin下面所有so文件复制到dmhs的bin下面)
cp /dm8/bin/*.so ./
执行 ldd libdmhs_exec.so如没有提示有找不到某个文件时重启服务
[dmdba@DM3:/dm/dmhs/bin]$ ./dmhs_serverd start
源端运行 DMHS 软件工具 dmhs_console,连接源端 DMHS 服务,装载源端字典信息及历史数据
源端MGR日志
目标端MGR日志
源端mysql创建表T1
目的端dm查看表同步过来
源端mysql向T1表插入数据
目的端dm查看已同步
源端删除一行id=1的数据
目的端查看同步正常
源端mysql修改id为1
目的端查看同步正常
源端mysql将T1进行truncate操作
目的端查看同步正常
源端mysql给表T1添加一列NAME
目的端dm查看同步正常
源端mysql执行drop表T1
目的端dm查看同步正常
文章
阅读量
获赞