欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

达梦数据库:mysql -dm数据同步dmhs工具搭建

程序员文章站 2022-06-03 12:24:34
...

达梦技术社区: https://eco.dameng.com

注意

Dmhs对mysql的 支持:表的ddl 操作,注释,索引,数据同步,支持装载和增量同步; 对于其它对象如触发器,函数,存储过程,不能装载和使用增量同步。建议表结构迁移使用达梦迁移工具(dts )进行创建。

数据库版本

达梦 V8 ,mysql 8.0.15

源端操作

1设置 MYSQL 本地链接库路径

DMHS 在运行时,需要加载本地 MYSQL 动态库,linux/unix 平台下为 libmysqlclient.so。

在部署 DMHS 之前,需将 libmysqlclient.so 所在目录添加到共享库路径变量中。

libmysqlclient.so 通常位于/usr/local/mysql/lib 目录中。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /usr/local/mysql/lib。

当在系统中未找到 libmysqlclient.so , 文件, 但存在 libmysqlclient.so*** 的文件,可使用命令 ln -s libmysqlclient.so**** libmysqlclient.so 创建一个软链接。

2 安装odbc动态库

2.1安装unixodbc

(1)Yum 安装简单方便

yum install unixODBC.x86_64

使用odbcinst -j 可查看odbc 配置文件路径

odbcinst -j # 查看配置文件路径

unixODBC 2.3.1

DRIVERS…: /etc/odbcinst.ini

SYSTEM DATA SOURCES: /etc/odbc.ini

FILE DATA SOURCES…: /etc/ODBCDataSources

USER DATA SOURCES…: /root/.odbc.ini

SQLULEN Size…: 8

SQLLEN Size…: 8

SQLSETPOSIROW Size.: 8

(2)源码编译安装(麻烦一些)需将其动态库添加到环境变量中

下载地址:

https://sourceforge.net/projects/unixodbc/files/?source=navbar

可下载unixODBC-2.3.3.tar.gz版本

解压编译安装

tar -zxvf unixODBC-2.3.3.tar.gz

cd unixODBC-2.3.3

./configure

make && make install

odbcinst -j # 查看配置文件路径

2.2安装MySQL Connector/ODBC

(1)下载

下载地址:https://downloads.mysql.com/archives/c-odbc/

我下载的为mysql-connector-odbc-8.0.15-linux-glibc2.12-x86-64bit.tar.gz

(2)解压:tar -zxvf mysql-connector-odbc-8.0.15-linux-glibc2.12-x86-64bit.tar.gz

(3)更改目录名:mv mysql-connector-odbc-8.0.15-linux-glibc2.12-x86-64bit /usr/local/mysqlodbc8

(4)将其动态库添加到环境变量中:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysqlodbc8

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

3.源端开启归档。

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

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

  1. 开启 mysql 的 binlog,修改 binlog format。

修改 mysql 启动配置文件,windows 平台下,配置文件为安装目录下的 my.ini,linux/unix

平台下,配置文件为/etc/my.cnf。在配置文件[mysqld]标记后添加或修改配置参数 log-bin 及binlog_format,如下所示:

log-bin=mysql-bin

binlog_format=row

其中,binlog_format 必须设置为 row。当包含 lob 数据的同步是,针对 lob 数据的大小,

还需设置 max_allowed_packet,如下所示:

max_allowed_packet=100M

  1. 重启数据库服务

  2. 查看数据库 binlog 设置

Show variables like ‘log_bin’;

  1. 查看数据库 binlog_format 设置

Show variables like ‘binlog_format’;

3.2 源端 DDL 支持

DMHS 支持源端 DDL 的同步。当源端为 MYSQL 数据库时,DMHS 同步解析 binlog

文件中的 DDL 语句来进行同步,目前仅仅支持满足一下表达式的 SQL:

  1. 创建表

  2. 修改表

  3. 删除表

  4. 清空表

4.安装dmhs软件及配置dmhs配置文件

Dmhs 软件安装步骤略

4.1 配置odbcinst.ini

Dmhs 使用unixodbc 驱动连接mysql

cat /etc/odbcinst.ini

 [MySQL ODBC Driver]

 Driver=/usr/local/mysqlodbc8/lib/libmyodbc8a.so

 UsageCount=1

4.2 配置dmhs.hs

dev_job.== dev_job.

dev_job.== DEV_JOB.

其中的源端和目的端名称要与实际大小写对应上。

创建dmhs源端用户。

Create user [email protected]’%’ identified by 123456789;

Grant all privileges on . to [email protected]’%’;

cat dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<base>

    <lang>en</lang>

    <mgr_port>5345</mgr_port>

    <name>MYSQL_SRC</name>

    <ckpt_interval>60</ckpt_interval>

    <siteid>2</siteid>

    <version>2.0</version>

</base>

<cpt>

    <enable>1</enable>

    <name>cpt</name>

          <db_type>MYSQL</db_type>

                   <db_server> xx.xx.xx.80</db_server>    

                   <db_port>3306</db_port>

                   <db_name>dmhs</db_name>

                   <db_user>dmhs</db_user>     

                   <db_pwd>123456789</db_pwd>

                   <ddl_mask> TABLE:INDEX:CREATE:ALTER:DROP:TRUNCATE:COMMENT</ddl_mask>

    <idle_time>300</idle_time>  

 <driver>MySQL ODBC Driver</driver>

       <char_code>PG_UTF8</char_code>

       <parse_thr>4</parse_thr>

       <io_threads>4</io_threads>      

    <arch>

        <clear_flag>0</clear_flag>

        <clear_interval>600</clear_interval>

    </arch>

    <send>

        <ip> xx.xx.xx.81</ip>

        <mgr_port>5345</mgr_port>

        <data_port>5346</data_port>

        <trigger>1</trigger>

     <constraint>1</constraint>

     <identity>1</identity>

        <filter>

            <enable>

                         <item> dev_job.*</item>

                         <item> dev_message.*</item>

            </enable>

            <disable>

            </disable>

        </filter>

    <map>

             <item> dev_job.*== dev_job.*</item>

           <item> dev_message.*== dev_message.*</item>

    </map>

    </send>

</cpt>

达梦目的端

安装dmhs软件及配置dmhs.hs

<toggle_case>2</toggle_case> 将表名和列名全部转换为大写存储在大梦库。(根据需要配置)

1)创建dmhs目的端用户。

Create user dmhs identified by 123456789;

Grant resource ,dba to dmhs;

2)Cat dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<base>

    <lang>en</lang>

    <mgr_port>5345</mgr_port>

    <name>DM_DEST</name>

    <ckpt_interval>60</ckpt_interval>

    <siteid>6</siteid>

    <version>2.0</version>

</base>

<exec>

    <recv>

        <mgr_port>5345</mgr_port>

        <data_port>5346</data_port>

    </recv>

    <enable>1</enable>

    <name>exec</name>

<toggle_case>2</toggle_case>

    <db_type>dm8</db_type>

    <db_server> xx.xx.xx.81</db_server>

    <db_user>DMHS</db_user>

    <db_pwd>123456789</db_pwd>

    <db_port>5236</db_port>

       <db_name></db_name>

    <ddl_log></ddl_log>

    <exec_thr>8</exec_thr>

       <recv_caches>15</recv_caches>

       <exec_sql>1024</exec_sql>

       <exec_trx>5000</exec_trx>

       <exec_rows>1000</exec_rows>

    <exec_policy>2</exec_policy>           

       <trxid_tables>5</trxid_tables>

       <enable_lob_buf>1</enable_lob_buf>

</exec>

装载和开启增量同步

1)使用dmhs_console工具登录dmhs。

2)装载数据

copy 0 “sch.name =’ dev_job '” dict

copy 0 “sch.name=‘dev_job’” INSERT|ROWS|5000|COMPRESS|GROUP|4|10000000|COUNT|THREAD|8|NETS

copy 0 “sch.name =’ dev_message '” dict

copy 0 “sch.name=‘dev_message’” INSERT|ROWS|5000|COMPRESS|GROUP|4|10000000|COUNT|THREAD|8|NETS

3)开启增量同步

Start cpt