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

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

相关推荐
John_Hui1 小时前
Windows 10 安装版本:mysql-8.1.0-winx64.zip
数据库·windows·mysql
莫晓燚1 小时前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi
好的佩奇1 小时前
蓝牙之无线电与通信距离
android·flutter·蓝牙
updayday8542 小时前
客户附件不该发往旧邮箱,如何在发送前拦截 - Ping64 邮件安全管控
大数据·网络·数据库·安全·智能路由器
倔强的石头_2 小时前
连接异常排障手册:拒连、超时、认证失败、空闲断开
数据库
vilya2 小时前
我把一套完整的 Python Agent 运行时塞进手机 APK:依赖闭包、Rust 轮子和三个真机坑
android
lhbweilai2 小时前
QT(了解各个控件和布局)上
数据库·qt
莫晓燚3 小时前
搭建Redis 主从复制---实战
数据库·redis·缓存
灵晔君3 小时前
【MySQL】数据库基础
数据库·mysql·adb
香蕉大香蕉(06敬畏市场)3 小时前
MySQL 单点详解(03)
java·数据库·mysql·面试·八股·大厂实习