You need to enable JavaScript to run this app. 本地MySQL服务器与Azure Database for MySQL如何实现数据库持续同步
优惠活动
大模型
产品
解决方案
定价
更多

本地MySQL服务器与Azure Database for MySQL如何实现数据库持续同步

本地MySQL到Azure Database for MySQL持续同步实现方案

该需求完全可实现,你此前配置未生效通常是入站复制的前置校验、参数配置或权限环节存在遗漏,以下是两种可落地的实现方案:

方案一:Azure MySQL原生入站复制(无额外成本,优先推荐)

这是Azure官方提供的原生同步能力,适配绝大多数场景,正确配置步骤如下:

前置校验 90%的配置失败都出在该环节

  • 版本匹配:本地MySQL大版本需与Azure MySQL一致或向下兼容,比如本地5.7可同步到Azure 5.7/8.0,本地8.0仅可同步到Azure 8.0
  • 本地MySQL binlog配置:必须开启二进制日志且必须使用行格式,修改本地MySQL配置文件(my.cnf/my.ini)后重启服务生效:
    [mysqld]
    log-bin=mysql-bin
    binlog-format=ROW
    server-id=1 # 不可与Azure MySQL的默认server-id重复,Azure默认server-id通常大于1000000
    
  • 本地复制账号权限:在本地MySQL创建专用同步账号并授予对应权限:
    CREATE USER 'repl_user'@'%' IDENTIFIED BY '自定义强密码';
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'%';
    FLUSH PRIVILEGES;
    
  • 导出数据参数校验:你此前使用mysqldump导出时必须添加--master-data=2参数,才能在导出文件中拿到正确的binlog文件名和偏移量,标准导出命令参考:
    mysqldump --single-transaction --master-data=2 -u 本地用户名 -p 待同步的数据库名 > 备份文件.sql
    

同步配置步骤

  1. 确认你已经将mysqldump导出的数据完整恢复到Azure Database for MySQL实例中
  2. 在Azure MySQL的服务器配置页,将本地MySQL的公网IP加入防火墙白名单,放通3306端口访问权限
  3. 登录Azure MySQL执行存储过程,配置同步源信息,替换对应参数为你自己的实际值:
    CALL mysql.az_replication_change_master('本地MySQL公网IP/域名', 'repl_user', '同步账号密码', 3306, 'mysqldump备份文件中记录的binlog文件名', 对应的binlog偏移量, '');
    
  4. 启动同步任务:
    CALL mysql.az_replication_start;
    
  5. 验证同步状态,执行命令后确认Slave_IO_Running和Slave_SQL_Running两项都为Yes即配置成功:
    SHOW SLAVE STATUS\G
    

方案二:第三方同步工具(适合复杂同步场景)

如果原生入站复制无法满足你的需求(比如需要多库同步、自定义数据过滤、跨网络复杂环境同步等),可使用开源工具实现:

  • pt-table-sync:适合小数据量场景,可定期校验两端数据差异并自动同步,运维成本低
  • Canal:阿里开源的binlog订阅工具,配置灵活,支持自定义同步规则,可适配各类复杂网络环境
  • Debezium+JDBC Sink Connector:适合大数据量低延迟场景,可实现毫秒级增量数据同步

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 18:27:03