MySQL 主从同步

基本概念

MySQL 主从同步(Replication)是指将一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)的过程。主从同步是MySQL提供的一种高可用性解决方案,也是实现读写分离的基础。

工作原理

MySQL主从同步基于二进制日志(binlog)实现,主要工作流程如下:

  1. 主服务器记录变更:主服务器将所有数据变更(INSERT、UPDATE、DELETE等)记录到二进制日志中

  2. 从服务器获取日志:从服务器的I/O线程连接到主服务器,请求获取二进制日志

  3. 主服务器发送日志:主服务器的Binlog Dump线程将二进制日志内容发送给从服务器

  4. 从服务器应用变更:从服务器的SQL线程读取中继日志(relay log)并执行其中的SQL语句

同步模式

MySQL支持多种同步模式:

  1. 异步复制(默认):主服务器执行事务后立即返回,不等待从服务器确认

  2. 半同步复制:主服务器等待至少一个从服务器接收并写入中继日志后才返回

  3. 组复制(MySQL Group Replication):基于Paxos协议的多主同步复制

配置步骤

主服务器配置

  1. 修改my.cnf配置文件:

    ini 复制代码
    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog-format=ROW
    binlog-do-db=需要同步的数据库名
  2. 创建复制专用用户:

    sql 复制代码
    CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  3. 查看主服务器状态:

    sql 复制代码
    SHOW MASTER STATUS;

从服务器配置

  1. 修改my.cnf配置文件:

    ini 复制代码
    [mysqld]
    server-id=2
    relay-log=mysql-relay-bin
    read-only=1
  2. 配置主从连接:

    sql 复制代码
    CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=position_number;
  3. 启动复制:

    sql 复制代码
    START SLAVE;
  4. 检查复制状态:

    sql 复制代码
    SHOW SLAVE STATUS\G

常见问题与解决方案

  1. 数据不一致 :定期使用pt-table-checksum工具检查数据一致性

  2. 复制延迟

    • 优化主服务器查询性能

    • 增加从服务器硬件资源

    • 考虑使用并行复制

  3. 网络中断

    • 配置自动重连参数slave_net_timeout

    • 使用GTID(全局事务标识符)简化故障恢复

应用场景

  1. 读写分离:主库写,从库读,分担主库压力

  2. 数据备份:从服务器可作为实时备份

  3. 高可用性:主库故障时可快速切换到从库

  4. 数据分析:在从库执行报表查询等耗时操作不影响主库性能

性能优化建议

  1. 使用ROW格式的二进制日志

  2. 在从服务器上禁用不必要的存储引擎

  3. 适当调整sync_binloginnodb_flush_log_at_trx_commit参数

  4. 考虑使用多线程复制(MySQL 5.6+)

  5. 定期监控复制延迟和状态

注意事项

  1. 主从服务器的MySQL版本应兼容

  2. 表结构变更可能导致复制中断

  3. 某些SQL函数(如UUID(), RAND())可能导致主从不一致

  4. 大事务可能导致复制延迟增加

相关推荐
MetaLite6 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
Wang's Blog8 小时前
Java框架快速入门: Spring Security+OAuth2之元注解简化权限表达式
java·数据库·spring
毕业设计7038 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
天空之城--8 小时前
Android逆向安全合规接单指南
android·安全
蓝速科技9 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
QYR-分析10 小时前
重轨受电弓行业深度报告:市场格局、技术迭代与发展前景
大数据·数据库·人工智能
消失的旧时光-194310 小时前
Android 系统层扫盲 09:AMS、ATMS、WMS、PMS 到底分别管什么?
android·wms·pms·ams·aosp·atms
泡泡鱼(敲代码中)10 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
Godikov10 小时前
Android 系统级设备应用踩坑实录:sharedUserId 签名、SDK 授权失败 -4、开机自启与 U 盘 OTA 升级
android
l1t11 小时前
DeepSeek总结的chdb-core v26.7.3发版说明
数据库·clickhouse·oracle