当前位置: 首页 > ai >正文

MySQL 主从复制与一主多从架构实战详解

文章目录

一、MySQL 主从复制的本质原理

  数据同步流程:

主从复制三大线程:

二、主从复制的三种模式

三、一主多从架构设计与应用

    应用场景:

  优势:

四、单机模拟主从复制(实战配置)

    环境准备:

示例配置片段(my.cnf):

 设置主从关系:

五、主主复制(双主复制)配置

  原理:

 关键注意事项:

示例配置(主 A):

   使用场景:

六、项目中常见主从实践方案

七、故障应对与运维建议

结语 


主从原理 + 多种复制场景 + 实战配置,一次讲清!


一、MySQL 主从复制的本质原理

MySQL 主从复制是通过 二进制日志(binlog)+ 中继日志(relay log) 机制实现的。

  数据同步流程:

1. 主库开启 binlog,记录所有写操作
2. 从库的 I/O 线程向主库请求 binlog
3. 主库的 dump 线程将 binlog 发送给从库
4. 从库的 I/O 线程写入 relay log
5. 从库的 SQL 线程读取 relay log 并执行

主从复制三大线程:

名称角色功能
Dump 线程主库向从库推送 binlog 内容
I/O 线程从库拉取 binlog 并写入中继日志
SQL 线程从库读取中继日志并执行 SQL

二、主从复制的三种模式

模式特点延迟一致性
异步复制(默认)主库执行完即返回可能丢数据
半同步复制至少一个从库确认才返回提高可靠性
GTID复制(基于事务ID)支持 failover 自动切换更强一致性更好容灾支持

三、一主多从架构设计与应用

一主多从是 MySQL 构建读写分离的常见架构:

           +-----------+|           ||  Master   ||           |+-----------+/    |    \/     |     \+--------+ +--------+ +--------+| Slave1 | | Slave2 | | Slave3 |+--------+ +--------+ +--------+

    应用场景:

  • 主库处理写操作(INSERT/UPDATE/DELETE)

  • 从库处理读请求(SELECT)

  • 配合中间件(如 MyCAT、ShardingSphere、ProxySQL)实现自动读写分离

  优势:

  • 提升系统并发能力(读写分离)

  • 降低主库压力

  • 增加容灾能力,主挂后可快速切换为从


四、单机模拟主从复制(实战配置)

    环境准备:

  • 同一台主机运行多个 MySQL 实例(如 3306、3307)

  • 修改配置文件以区分实例

示例配置片段(my.cnf):

[mysqld]
server-id=1              # 主从必须唯一
log-bin=mysql-bin        # 主库需开启binlog
port=3306[mysqld2]
server-id=2
relay-log=mysql-relay
port=3307

 设置主从关系:

-- 从库配置
CHANGE MASTER TOMASTER_HOST='127.0.0.1',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='repl_pass',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=  154;START SLAVE;
SHOW SLAVE STATUS\G;

五、主主复制(双主复制)配置

  原理:

两台 MySQL 互为主从,都开启 binlog 与 relay log。

        +-----------+         +-----------+|  Master A | <-----> |  Master B |+-----------+         +-----------+

 关键注意事项:

  • 两边写入不能写相同主键或数据 → 否则数据冲突

  • 通常搭配 auto_increment_offsetauto_increment_increment 避免主键冲突

示例配置(主 A):

server-id=1
log-bin=mysql-bin
auto_increment_offset=1
auto_increment_increment=2

主 B:

server-id=2
log-bin=mysql-bin
auto_increment_offset=2
auto_increment_increment=2

   使用场景:

  • 多活读写(慎用,建议仅读活)

  • 高可用自动切换(结合 MHA、Orchestrator 使用)


六、项目中常见主从实践方案

项目场景推荐方案说明
中小型系统一主两从读写分离 + 冗余
高并发大读量一主多从(>3)配合 ProxySQL 或 LVS 负载
容灾架构主主复制 + keepalived主库故障时自动切换
单机模拟开发3306 + 3307 模拟主从便于学习测试复制流程

七、故障应对与运维建议

  • 定期监控 Slave_IO_Running/Slave_SQL_Running

  • 配置 slave_skip_errors 时慎重使用

  • 使用 pt-table-checksum 保证主从一致

  • 设置从库只读:read_only=ON


结语 

MySQL 的主从复制为分布式架构提供了坚实的基础。不论是一主多从、主主复制,还是读写分离,在不同规模和业务需求下都能灵活组合构建高可用、高性能的数据库架构。


http://www.xdnf.cn/news/13310.html

相关文章:

  • Electron-vite【实战】MD 编辑器 -- 编辑区(含工具条、自定义右键快捷菜单、快捷键编辑、拖拽打开文件等)
  • 深入理解 TCP 套接字:Socket 编程入门教程
  • uniapp请求接口封装
  • C#引用传递代码记录
  • 第七章: SEO与渲染方式
  • 滚珠导轨在汽车自动化装配线中的核心传动
  • AVCap视频处理成帧和音频脚本
  • CKA考试知识点分享(9)---gateway api
  • 混合型交易所架构:CEX+DEX融合与Layer2扩展方案
  • Visual Stdio程序弹出的黑框内容如何复制
  • (天文学)恒星的介绍分类
  • 中兴B860AV1.1江苏移动-自动降级包
  • 手写RPC框架<四> 负载均衡
  • LSTM-XGBoost回归预测,多输入单输出(Matlab完整源码和数据)
  • 【AI时代速通QT】第一节:C++ Qt 简介与环境安装
  • 41页PPT | 基于AI制造企业解决方案架构设计智能制造AI人工智能应用智能质检人工智能质检建设
  • MyBatis实战指南(六)自动映射
  • 科技评论:Jim Keller 的“反向”战略:RISC-V 成为中国应对美国芯片封锁的关键武器
  • 为何AI推理正推动云计算从集中式向分布式转型
  • 一个教学项目pom.xml杂记
  • V837s-SDK Telnetd服务连接不上异常解决
  • 蓝奏云(Lanzou Cloud)一款国内知名的免费网盘和文件分享服务 以及蓝奏云的api
  • Cesium1.95中高性能加载1500个点
  • MybatisPlus
  • python整数处理 2022年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
  • c++中类的继承
  • 使用Meshlab处理非流形边的问题
  • ruoyi框架分页插件失效
  • PG库创建自增ID
  • 【无标题】装箱问题的拓扑动力学解法:几何凝聚与量子坍缩模型