MySQL 主从复制(小白友好 + 企业级)

主从复制(Master-Slave Replication)是 MySQL 最核心的高可用技术之一。

它的作用非常关键:

  • 主库负责写,从库负责读 → 读写分离

  • 从库可以做备份,不影响主库性能

  • 主库挂了可以切换到从库 → 高可用

  • 为分布式系统提供数据同步能力

1 主从复制原理(小白也能懂)

主从复制的核心流程只有三步:

复制代码
主库写 binlog → 从库 IO 线程拉取 → 从库 SQL 线程重放

我给你画成一个小白图:

复制代码
   ┌──────────────┐
   │   主库 Master │
   │ 写入 binlog   │
   └──────┬───────┘
          │
          ▼
   ┌──────────────┐
   │ 从库 IO 线程  │  拉取 binlog
   └──────┬───────┘
          │
          ▼
   ┌──────────────┐
   │ 从库 SQL 线程 │  重放 binlog
   └──────────────┘

三个关键组件:

组件 作用
binlog(主库) 记录所有写操作
IO 线程(从库) 从主库拉取 binlog
SQL 线程(从库) 执行 binlog,重放数据

2 主从复制的前置条件

主从复制要成功,必须满足:

✔ 1. 主库开启 binlog

在主库的 my.cnf:

复制代码
server-id=1
log-bin=mysql-bin
binlog_format=ROW

✔ 2. 从库有唯一 server-id

复制代码
server-id=2

✔ 3. 主库创建复制用户

复制代码
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

✔ 4. 主从时间一致(建议使用 UTC 或 +08:00)

3 Docker 环境下的主从部署

下面是一个简化版的 docker-compose:

复制代码
services:
  mysql-master:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 111111
    volumes:
      - ./master/my.cnf:/etc/mysql/conf.d/my.cnf
      - master_data:/var/lib/mysql

  mysql-slave:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 111111
    volumes:
      - ./slave/my.cnf:/etc/mysql/conf.d/my.cnf
      - slave_data:/var/lib/mysql

4 主从配置流程(最关键)

MySQL 主从复制笔记-CSDN博客

5 主从复制的模式(你需要知道)

模式 说明
基于文件位置(经典) 现在用的方式
GTID 模式(更现代) 企业级推荐

6 主从复制 + TLS

MySQL 主从复制 + TLS 加密笔记-CSDN博客

本章总结

  • 主从复制依赖 binlog

  • 主库写 binlog → 从库 IO 拉取 → SQL 重放

  • 主从必须有不同 server-id

  • 主库必须开启 binlog

  • 从库通过 CHANGE MASTER TO 连接主库

  • Slave_IO_Running / Slave_SQL_Running 都为 Yes 才算成功

  • TLS 可以加密主从通信

  • 主从复制是高可用、读写分离、备份的基础

相关推荐
XLYcmy1 小时前
智能体大赛 技术架构 数据根基层
数据库·ai·llm·api·agent·幻觉·万方
014-code2 小时前
MySQL 事务隔离级别
java·数据库·mysql
Je1lyfish2 小时前
CMU15-445 (2026 Spring) Project#1 - Buffer Pool Manager
linux·数据库·c++·后端·链表·课程设计·数据库架构
Re.不晚2 小时前
Redis——哨兵机制
数据库·redis·bootstrap
城东米粉儿2 小时前
Android PLT Hook 笔记
android
代码星辰2 小时前
MySQL 面试题——深度分页优化
数据库·mysql·覆盖索引·深度分页
城东米粉儿2 小时前
leakcanary原理
android
龙之叶2 小时前
Android ADB Shell 常用命令
android·adb
散装DBA2 小时前
OpenClaw+钉钉机器人实现数据库操作
数据库·机器人·钉钉