MySQL主从技术最全详解(原理+架构+实现)

MySQL是大型架构的核心,下面我重点详解MySQL主从@mikechen

MySQL主从

MySQL主从技术是数据库系统中最常见、最重要的高可用与读写分离方案之一。

MySQL主从复制是指:主库(Master)负责写操作,从库(Slave/Replica)负责同步主库数据。

MySQL主从技术最全详解(原理+架构+实现)-mikechen

当主库发生数据变更时:

INSERT
UPDATE
DELETE

MySQL会将这些操作记录到Binlog(二进制日志)中,从库持续读取Binlog并重放执行,从而保持数据一致。

 

MySQL主从架构

典型架构通常是一主多从:主库负责写,从库负责读,前面配合应用层读写分离或中间件做流量切分。

如下图所示:

MySQL主从技术最全详解(原理+架构+实现)-mikechen

                  应用系统
                      │
       ┌──────────────┼──────────────┐
       │                             │
     写请求                        读请求
       │                             │
       ▼                             ▼

┌─────────────────┐      ┌─────────────────┐
│     Master      │      │     Slave1      │
│      主库        │─────▶│      从库        │
└─────────────────┘      └─────────────────┘
           │
           │
           ▼
┌─────────────────┐
│     Slave2      │
│      从库        │
└─────────────────┘

典型的MySQL主从架构由以下几个角色构成:

主库(Master):负责接收写请求,并生成binlog;

从库(Slave/Replica):负责复制主库数据,可承担查询请求;

复制通道:用于主从之间传递binlog;

应用层:可根据业务需要将读写请求分离到不同数据库节点。

 

MySQL主从原理

MySQL主从复制的核心思想是:主库负责写入,从库负责接收并重放主库的变更日志。

主库在执行数据变更操作时,会将这些操作记录到二进制日志(Binary Log,简称binlog)中。

从库则通过复制线程读取主库的binlog,并在本地按顺序重放,从而保持数据一致。

整体流程,如下:

MySQL主从技术最全详解(原理+架构+实现)-mikechen

  1. 主库执行 INSERT/UPDATE/DELETE,把变更记录到 binlog。
  2. 从库 I/O 线程连接主库,请求并接收 binlog 事件。
  3. 主库的 binlog dump 线程把事件发送给从库。
  4. 从库把事件写入 relay log。
  5. SQL/applier 线程读取 relay log,并在从库执行同样的变更。

评论交流
    说说你的看法