You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

异地两台MySQL服务器能否按需同步指定数据表?求实现方案

异地MySQL服务器同步指定数据表的可行方案

1. 原生主从复制(过滤指定表)

  • 主库配置my.cnf(Windows用my.ini),添加表过滤规则,只生成指定表的binlog:
    # 仅同步db1库下的table1、table2
    binlog-do-db=db1
    binlog-ignore-table=db1.table3
    binlog-ignore-table=db1.table4
    # 也可直接指定要同步的表(部分MySQL版本支持)
    binlog-do-table=db1.table1
    binlog-do-table=db1.table2
    
  • 从库配置my.cnf,设置只同步指定表:
    replicate-do-db=db1
    replicate-do-table=db1.table1
    replicate-do-table=db1.table2
    # 用通配符匹配更灵活,比如同步db1下所有table开头的表
    # replicate-wild-do-table=db1.table_
    
  • 优势:原生支持,性能稳定,实时性不错
  • 劣势:配置有点繁琐,异地网络波动可能断同步,需要持续维护链路

2. 定时任务+导出导入脚本

  • 写shell脚本定时执行,用mysqldump导出指定表再导入到异地库:
    # 导出主库的table1、table2
    mysqldump -h主库IP -u用户名 -p'密码' 库名 table1 table2 > /tmp/sync_data.sql
    # 导入到从库
    mysql -h从库IP -u用户名 -p'密码' 库名 < /tmp/sync_data.sql
    
  • 大数据量推荐用SELECT INTO OUTFILE和LOAD DATA INFILE,更快且不锁全表:
    -- 主库导出为CSV
    SELECT * INTO OUTFILE '/tmp/table1.csv' FIELDS TERMINATED BY ',' FROM 库名.table1;
    -- 把CSV传到从库服务器后,导入数据
    LOAD DATA INFILE '/tmp/table1.csv' INTO TABLE 库名.table1 FIELDS TERMINATED BY ',';
    
  • 优势:实现简单,零复杂配置,想什么时候同步就什么时候执行
  • 劣势:实时性差(取决于定时频率),大数据量时耗时久,导出时可能锁表

3. 触发器+自定义同步脚本

  • 在主库指定表上建触发器,把增删改操作记录到日志表:
    -- 示例:INSERT操作触发记录
    CREATE TRIGGER sync_table1_insert AFTER INSERT ON 库名.table1
    FOR EACH ROW
    INSERT INTO 库名.sync_log (table_name, opt_type, data)
    VALUES ('table1', 'INSERT', JSON_OBJECT('id', NEW.id, 'name', NEW.name));
    
  • 写脚本定时读取日志表的变更数据,同步到从库对应表,同步完清空日志
  • 优势:只同步变更数据,减少传输量,可自定义同步逻辑
  • 劣势:触发器会增加主库负载,脚本需要自己维护,出问题排查麻烦

4. 第三方工具(如Percona Toolkit的pt-table-sync)

  • 用pt-table-sync工具做指定表同步,支持全量校验和增量同步:
    # 同步主库的db1.table1到从库对应表,--execute表示直接执行同步
    pt-table-sync --execute h=主库IP,D=db1,t=table1 h=从库IP,D=db1,t=table1
    
  • 优势:工具成熟,能自动校验数据一致性,增量同步效率高
  • 劣势:需要额外安装工具,异地网络延迟会影响同步速度

内容的提问来源于stack exchange,提问作者Abhinav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:45:36