注册
mysql到达梦数据实时同步dmhs搭建
培训园地/ 文章详情 /

mysql到达梦数据实时同步dmhs搭建

DM_1511 2023/04/04 1843 1 0

mysql到达梦数据实时同步dmhs搭建

达梦数据实时同步软件(以下简称 DMHS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实时同步复制。本文主要为mysql到dm7的dmhs搭建实战。

1 环境准备

image.png

1.1源端odbc配置

1.1.1 安装GCC

可以通过rpm -qa |grep gcc 检查是否已经安装了gcc。若没有,则通过该 yum install gcc命令安装
image.png

1.1.2 上传安装包unixODBC和mysql Connector

1.1.3 安装ODBC

[root@DM3:~/pkg]# tar -zxvf unixODBC-2.3.0.tar.gz
image.png
[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

1.1.4 安装mysql connect驱动

[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

1.1.5 进入到mysql的解压文件的bin目录下,进行注册驱动:

[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"
image.png
 问题:这里的报错是因为动态库没加载进来
解决方法:
[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"
image.png
--出现这个表明说明注册成功。

1.1.6 进行配置odbc.ini文件

  1. 具体配置文件位置可用此命令查看:
    [root@DM3:~]# odbcinst -j
    image.png
  2. 修改配置文件odbc.ini参数
    [root@DM3:~]# vi /usr/local/etc/odbc.ini
    image.png
  3. 配置/usr/local/etc/odbcinst.ini参数
    [root@DM3:~]# vi /usr/local/etc/odbcinst.ini
    image.png
  4. 启动mysql服务,配置完了之后,执行isql 连接名
    [root@DM3:~]# /etc/init.d/mysqld start
    image.png
    [root@DM3:~]# isql MYSQLTEST
    image.png
     问题:这个问题是由于Mysql配置了不支持远程连接引起的
    解决方法:
    (1) 在安装Mysql数据库的主机上登录root用户:mysql -u root -p
    image.png
    (2)依次执行如下命令:
    use mysql;
    select host from user where user='root';
    image.png
    (3)执行update user set host = ‘%’ where user ='root’将Host设置为通配符%。Host设置了“%”后便可以允许远程访问。
    (4)Host修改完成后记得执行flush privilegs使配置立即生效。
    image.png

再次执行isql登录mysql
image.png

1.2 源端mysql数据库创建测试数据库mytest

image.png

1.3 目的端达梦数据库创建MYSQL用户

create user "MYSQL" identified by "MYSQL1234"
limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10;

1.4 创建dmhs安装目录

[root@DM3:~]# mkdir -p /dm/dmhs

1.5 加载本地mysql动态库

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 创建一个软链接。

2 dmhs安装

2.1 源端与目的端dmhs安装方法一致

此次只列举源端安装方法
[dmdba@DM3:/dm/dmhs]$ ./dmhs_V4.3.00_mysql_rev118075_rh6_64_veri_20221107.bin -i
image.png

2.2 安装完成之后,修改dmhs启动脚本:

[dmdba@DM3 bin]$ cd /dm/dmhs/bin
[dmdba@DM3 bin]$ cp service_template/DmhsService dmhs_serverd
image.png

2.3 DMHS 目的端安装完成之后,可将目录切换到 DMHS软件目录,通过命令 ldd libdmhs_exec.so,查看 DMHS 日志执行模块链接是否正常。

image.png

2.4 开启源端数据库的 binlog 及 binlog format

DMHS 通过分析 MYSQL 数据库的 binlog 日志来捕获数据库的增量数据,DMHS 运行之前,必须将数据库 binlog 打开,同时将 binlog format 设置为 row 模式。修改的参数均涉及数据库初始过程,修改参数后,需重启生效。具体操作过程如下:

  1. 开启 mysql 的 binlog,修改 binlog format。
    修改 mysql 启动配置文件,配置文件为/etc/my.cnf。在配置文件[mysqld]标记后添加或修改配置参数 log-bin 及binlog_format,如下所示:
    log-bin=mysql-bin
    binlog_format=row
    image.png
    其中,binlog_format 必须设置为 row。
  2. 重启数据库服务
    image.png
  3. 查看数据库 binlog 设置
    show variables like 'log_bin';
    image.png
    查看数据库 binlog_format 设置
    show variables like 'binlog_format';

image.png

2.5 源端配置dmhs.xml

<?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>

2.6 目的端dmhs.xml配置

<?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>

2.7 目的端运行 DMHS 软件工具 MGR

[dmdba@DM3:/dm/dmhs/bin]$ ./dmhs_serverd start
image.png
目的端运行 DMHS 软件工具 dmhs_console,连接执行端 DMHS 服务
image.png
如果报错,查看提示有某个so文件找不到,ldd 这个文件可查看缺少某些依赖包,将包复制到当前文件夹下(一般都在dm安装bin下面,可将bin下面所有so文件复制到dmhs的bin下面)
cp /dm8/bin/*.so ./
执行 ldd libdmhs_exec.so如没有提示有找不到某个文件时重启服务

2.8 源端运行 DMHS 软件工具 MGR

[dmdba@DM3:/dm/dmhs/bin]$ ./dmhs_serverd start
image.png
源端运行 DMHS 软件工具 dmhs_console,连接源端 DMHS 服务,装载源端字典信息及历史数据
image.png
源端MGR日志
image.png
目标端MGR日志
image.png

3 同步测试

3.1 建表

源端mysql创建表T1
image.png
image.png
目的端dm查看表同步过来
image.png

3.2 插入数据

源端mysql向T1表插入数据
image.png
image.png
目的端dm查看已同步
image.png

3.3 删除数据

源端删除一行id=1的数据
image.png
image.png
目的端查看同步正常
image.png

3.4 修改数据

源端mysql修改id为1
image.png
目的端查看同步正常
image.png

3.5 truncate表

源端mysql将T1进行truncate操作
image.png
目的端查看同步正常
image.png

3.6 修改表

源端mysql给表T1添加一列NAME
image.png
目的端dm查看同步正常
image.png

3.7 drop删除表

源端mysql执行drop表T1
image.png
目的端dm查看同步正常
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服