MySQL 主从复制是数据库高可用、读写分离、数据备份的基础能力。 一句话概括: 主库负责写,从库同步数据并负责读。 这篇文章将带你完整走一遍: MySQL 主从复制的核心流程是: 本质:从库重放主库的 binlog 假设我们有两台服务器: 说明: 重启 MySQL: 👉 不要用 root,这是生产红线。 如果使用 GTID,这里主要确认: 重启 MySQL: 主从复制 不是自动全量同步,你必须先让数据一致。 在主库执行: 在从库导入: 👉 这一步 99% 的主从问题都出在这里 在从库执行: 说明: 重点看这两行: 👉 两个都是 Yes,主从复制才算真正正常。 在主库: 在从库: 如果能看到 原因通常是: 👉 看 常见原因: 👉 看 解决思路: GTID 不能解决延迟,只能解决一致性。 延迟常见原因: 可考虑: ✅ 使用 GTID + ROW MySQL 主从复制通过主库 binlog、从库 relay log 实现数据同步。如何搭建 MySQL 主从复制?
一、主从复制的基本原理
主库写 binlog
↓
从库 IO 线程拉取 binlog → 写入 relay log
↓
从库 SQL 线程重放 relay log二、准备环境
必须满足的条件
三、主库配置(Master)
1️⃣ 修改 my.cnf
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ONserver-id:集群内必须唯一log_bin:开启 binlog(必须)ROW + GTID:生产推荐组合systemctl restart mysqld
2️⃣ 创建复制账号
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_pass';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;3️⃣ 确认主库状态
SHOW MASTER STATUS;
四、从库配置(Slave)
1️⃣ 修改 my.cnf
[mysqld]
server-id = 2
relay-log = relay-bin
read_only = ON
gtid_mode = ON
enforce_gtid_consistency = ONsystemctl restart mysqld
2️⃣ 初始化从库数据(非常关键)
常见方式一:mysqldump(最常用)
mysqldump -uroot -p \
--single-transaction \
--set-gtid-purged=ON \
--all-databases > full.sqlmysql -uroot -p < full.sql
3️⃣ 配置主从关系(GTID 模式)
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='repl_pass',
MASTER_AUTO_POSITION=1;MASTER_AUTO_POSITION=1:启用 GTID 自动定位4️⃣ 启动复制
START SLAVE;
-- MySQL 8.0 也可以用
START REPLICA;五、验证主从是否成功
1️⃣ 查看复制状态(必查)
SHOW SLAVE STATUS\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes2️⃣ 验证数据同步
CREATE DATABASE test_replica;
SHOW DATABASES;
test_replica,说明复制 OK。六、常见问题 & 排坑指南(非常实用)
❌ 1)Slave_IO_Running = No
Last_IO_Error❌ 2)Slave_SQL_Running = No
Last_SQL_Error❌ 3)GTID 报错(Executed GTID 不一致)
--set-gtid-purged=ON❌ 4)主从延迟
slave_parallel_workers)七、生产环境最佳实践(建议直接照做)
✅ 主库只写,从库只读
✅ 从库开启 read_only
✅ 不要在从库执行 DDL
✅ 定期检查 SHOW SLAVE STATUS
✅ 配合监控(延迟、复制状态)八、总结
搭建步骤包括:
主库开启 binlog、创建复制账号;
从库初始化数据、配置主库信息并启动复制。
生产环境推荐使用 GTID + ROW,可简化主从切换并保证数据一致性。
本文链接:https://www.jingber.cn/post/3990.html 转载需授权!

微信扫一扫,打赏作者吧~