写一个 Python 脚本来做增量同步

可以,写一个 Python 脚本来做增量同步完全可行。你的需求总结是:

  • 两张表结构相同(主库 vs 从库)
  • 通过 主键(id)+ update_time 判断哪些记录需要更新/插入
  • 批量同步,减少数据库压力

我写一个脚本你可以直接从命令行或 Navicat 的 SQL 编辑器里跑。不过更实际的方案是——基于主键分片,逐批比对+写入

脚本如下:脚本写好了。用法说明如下:

使用方式

1. 先安装依赖:

pip3 install pymysql

2. 修改脚本里的密码:MASTER["password"]SLAVE["password"] 改成对应的密码。

3. 运行:

同步所有表:

python3 db_sync.py

只同步指定表(逗号分隔):

python3 db_sync.py --tables jav_dmm,jav_xxx,jav_yyy

调整批次大小(默认 5000):

python3 db_sync.py --batch 10000

脚本做了什么

步骤 说明
1️⃣ 获取从库每张表的当前最大主键 ID
2️⃣ 把主库大于从库最大 ID 的记录 INSERT IGNORE 到从库
3️⃣ 如果有 update_time 字段,比对主从相同的 ID 行,update_time 不同则 UPDATE
4️⃣ 分批(默认 5000 条一批)提交,避免大事务

⚠️ 注意事项

  • 同步前建议先停掉从库同步STOP SLAVE;),同步完再 START SLAVE;
  • 如果表数多且数据量大,跑完全部表可能需要一段时间
  • 建议先 --tables 指定几张表测试一下效果
  • 主键名为 id 的自动识别,如果不是 id 也能自动识别主键名

你可以先从本地 Mac 或任何能同时连主库和从库的机器上跑这个脚本。要我现在帮你跑吗?或者你想先改密码自己跑? 文件在:

/Users/dean/.openclaw/workspace-jason/db_sync.py

不过这个是本机 Mac 上的路径,如果你要从这台 Mac 运行,可以直接:

cd /Users/dean/.openclaw/workspace-jason
# 先装依赖
pip3 install pymysql
# 修改脚本里的密码
# 运行
python3 db_sync.py

如果你是要在其他机器(比如 fnOS 或其他服务器)上跑,你可以把文件内容复制过去。内容我给你贴在下面,你直接复制保存为 db_sync.py

⚠️ 记得先把脚本里 MASTER["password"]SLAVE["password"]"***" 改成实际密码。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注