Jw
首页
技术
英语
首页
技术
英语
  • MySQL

    • MySQL 基础
    • 环境变量配置(PATH)
    • SQL 语法与分类
    • MySQL 数据类型
    • SQL - DDL 数据定义语言
    • SQL - DML 数据操作语言
    • SQL - DQL 数据查询语言
    • SQL - DCL 数据控制语言
    • MySQL 函数
    • SQL 约束
    • SQL 外键约束
    • 多表关系
    • 多表查询(连接查询)
    • 隐式内连接 vs 显式内连接
    • 子查询
    • 多表查询案例
    • 事务
    • 并发事务问题与隔离级别
    • MySQL 体系结构与存储引擎
    • 索引概述
    • 索引结构
    • 索引分类
    • 索引语法
    • SQL 性能分析
    • 索引使用
    • 索引设计原则
    • SQL 优化 - 插入数据与主键优化
    • SQL 优化 - order by 与 group by
    • SQL 优化 - limit / count / update
    • 视图
    • 存储过程
    • 存储过程 - 变量
    • 存储过程 - 流程控制、游标与条件处理
    • 存储函数
    • 触发器
    • 锁概述与全局锁
    • 表级锁
    • 行级锁
    • InnoDB 逻辑存储结构
    • InnoDB 架构
    • 事务原理(redo / undo log)
    • MVCC
    • MySQL 系统数据库
    • MySQL 常用工具
    • 数据备份与导入导出
    • 错误日志与二进制日志
    • 查询日志与慢查询日志
    • 主从复制 - 概述与原理
    • 主从复制 - 搭建
    • Mycat 配置
    • Mycat 垂直拆分与水平拆分
    • Mycat 分片规则
    • Mycat 管理与监控
    • Mycat 读写分离 - 一主一从
    • Mycat 读写分离 - 双主双从

主从复制 - 概述与原理

主从复制把主库的 DDL / DML 通过 binlog 传到从库,从库重做这些日志,从而保持数据同步。核心价值是故障切换、读写分离、从库备份。

一、概述

  • 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(重做),从而使得从库和主库的数据保持同步。
  • MySQL 支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。
Master(主库) ──binlog──▶ Slave(从库)
                              └── 也可作为其他从库的 Master(链状复制)

优点

优点说明
故障切换主库出现问题,可以快速切换到从库提供服务
读写分离降低主库的访问压力
从库备份可以在从库中执行备份,避免备份期间影响主库服务

二、原理

复制分成三步:

  1. Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。
  2. 从库读取主库的二进制日志文件 Binlog,写入到从库的中继日志 Relay Log。
  3. Slave 重做中继日志中的事件,将改变反映到自己的数据。
master:data change → binlog
                     │  read
                     ▼
slave:  IO thread ──write──▶ Relay log ──read──▶ SQL thread ──replay──▶ 数据
线程所在位置职责
IO thread从库读取主库 binlog,写入从库的 relay log
SQL thread从库读取 relay log 并在从库重放

复制是异步的:主库提交事务后不等从库确认,因此存在主从延迟;SHOW REPLICA STATUS 中的 Seconds_Behind_Source 可观察延迟。

三、与 binlog 的关系

  • 主从复制依赖二进制日志,主库必须开启 log_bin。
  • binlog_format 影响复制可靠性:ROW 记录行变更,最可靠;STATEMENT 日志小,但部分语句可能主从不一致;MIXED 自动切换。

binlog 的格式、查看与清理见 错误日志与二进制日志。

速查

-- 主库:确认 binlog 已开启(ON)
SHOW VARIABLES LIKE 'log_bin';

-- 主库:查看当前 binlog 坐标(搭建从库时要用)
SHOW MASTER STATUS;

-- 从库:查看复制状态(关注两个 Yes 与延迟)
SHOW REPLICA STATUS\G
关注点预期
主库 log_binON
SHOW MASTER STATUS有 File(如 binlog.000002)与 Position
Replica_IO_RunningYes
Replica_SQL_RunningYes

相关

  • 主从复制 - 搭建:主库 / 从库配置与验证
  • 错误日志与二进制日志:binlog 格式与 mysqlbinlog
  • MySQL 常用工具:mysqlbinlog 查看日志
  • 事务原理(redo log 与 undo log):事务提交与日志
最近更新: 2026/10/25 21:59
Contributors: liujw
Prev
查询日志与慢查询日志
Next
主从复制 - 搭建