rds_dbsync 增量同步数据 mysql2pgsql

项目地址:https://github.com/aliyun/rds_dbsync

一、开启mysql的binlog日志,并配置binlog相关参数

binlog_format = ROW
binlog_row_image = FULL

二、将源数据和目标数据对齐(字段名不能用大写

1.执行 ./mysql2pgsql -l loader_table_list.txt -d -n    生成创建PG格式数据表的SQL

2.Navicat Premium,创建一个查询,粘贴SQL,ctrl+a,ctrl+u转小写,修改<distribution key>为主键,执行,完成创建动作。

3../mysql2pgsql -l loader_table_list.txt   完成全量数据初始化

注:loader_table_list.txt文件是配置同步哪些表

三、数据对齐后,查看mysql的binlog日志的文件和偏移量

SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001  |   571203  |              |                  |
+------------------+----------+--------------+------------------+

四、配置文件(binlogfile和binlogfile_offset按上面的查出来的配置)

[src.mysql]
host = "10.10.x.x"
port = "3306"
user = "root"
password = "xxxxxx"
db = "dsideal_db"
encodingdir = "share"
encoding = "utf8"
binlogfile = "mysql-bin.000001"
binlogfile_offset = "571203"

[binlogloader]
loader_table_list = "loader_table_list.txt"

[local.pgsql]
connect_string = "host=10.10.x.x dbname=huanghai_temp port=5432 user=root password=xxxxxx"

[desc.pgsql]
connect_string = "host=10.10.x.x dbname=huanghai_db port=5432 user=root password=xxxxxx"
target_schema = "public"
ignore_copy_error_count_each_table = "0"

五、启动

#启动 binlog 拉取进程
nohup ./binlog_miner 1>minner.log 2>&1 &

#启动 binlog 写入进程
nohup ./binlog_loader 1>loader.log 2>&1 &

 

注:

如果发生无法同步情况执行如下步骤:

1、停止 binlog_miner 和 binlog_loader 两个进程。

2、确认要同步的源表和目标表中没有大写的字段名,如有大写的字段名改为小写。

3、将源数据和目标数据对齐。

4、查看源库的binlog偏移量,并对my.cfg配置文件进行修改。

5、将PG临时库中的所有表删除。

6、将PG目标库中的_tmp_dbsync下的所有表删除。

7、启动 binlog_miner 和 binlog_loader 两个进程

 


posted @ 2022-01-10 10:15  缤纷世界  阅读(338)  评论(0编辑  收藏  举报