达梦数据库:mysql -dm数据同步dmhs工具搭建
达梦技术社区: 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 模式。修改的参数均涉及数据库初始过程,修改参数后,需重启生效。如需操作,需确认工作环境能停机维护。具体操作过程如下:
- 开启 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
-
重启数据库服务
-
查看数据库 binlog 设置
Show variables like ‘log_bin’;
- 查看数据库 binlog_format 设置
Show variables like ‘binlog_format’;
3.2 源端 DDL 支持
DMHS 支持源端 DDL 的同步。当源端为 MYSQL 数据库时,DMHS 同步解析 binlog
文件中的 DDL 语句来进行同步,目前仅仅支持满足一下表达式的 SQL:
-
创建表
-
修改表
-
删除表
-
清空表
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
上一篇: 牛顿迭代法