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 两个进程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2014-01-10 yum安装高版本mysql(5.5)