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 可以加密主从通信

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

相关推荐
kymjs张涛17 小时前
OpenClaw 学习小组:初识
android·linux·人工智能
IvorySQL19 小时前
PostgreSQL 技术日报 (3月9日)|EXPLAIN ANALYZE 计时优化与复制语法讨论
数据库·postgresql·开源
范特西林20 小时前
实战演练——从零实现一个高性能 Binder 服务
android
范特西林21 小时前
代码的生成:AIDL 编译器与 Parcel 的序列化艺术
android
范特西林21 小时前
深入内核:Binder 驱动的内存管理与事务调度
android
用户83071968408221 小时前
Java 告别繁琐数据统计代码!MySQL 8 窗口函数真香
java·sql·mysql
范特西林1 天前
解剖麻雀:Binder 通信的整体架构全景图
android
范特西林1 天前
破冰之旅:为什么 Android 选择了 Binder?
android
stark张宇1 天前
MySQL 核心内幕:从索引原理、字段选型到日志机制与外键约束,一篇打通数据库任督二脉
数据库·mysql·架构
倔强的石头_1 天前
融合数据库架构实践:关系型、JSON与全文检索的“一库多能”深度解析
数据库