MySQL 主从复制搭建记录

AI-摘要
踱鸽 GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
MySQL 主从复制搭建记录
踱鸽&水晶蟹MySQL 主从复制搭建记录
团队项目到了一定规模,读写压力开始明显,需要做读写分离。搭主从是前提,这里记录用 Docker 搭建 MySQL 主从复制的完整过程。
1、基于 Docker 部署 MySQL
|
同一服务器部署多实例时,映射到不同的主机端口,server-id 各不相同。
2、主从配置说明
主从复制依赖 binlog,核心参数:
|
使用上面的 Docker 启动命令已通过 --server-id=3306 参数直接生效,无需修改 my.cnf。
验证配置:
|
3、Master 节点配置
在主库创建供 slave 连接的专用账号:
|
查看主库状态,记录 File 和 Position 的值(slave 配置需要用到):
|
⚠️ 记录完
File和Position后,不要再操作主库,防止状态值变化。
4、Slave 节点配置
|
关键指标:
Slave_IO_Running: Yes✅Slave_SQL_Running: Yes✅
两个都是 YES 才算正常。如果是 NO 或 Connecting,查看 Last_IO_Error / Last_SQL_Error 字段排查原因。
如需重新配置:STOP SLAVE; RESET SLAVE ALL; 然后重新执行 CHANGE MASTER。
5、验证和后续
|
配置完成后在 master 上做增删改操作,在 slave 上查询验证数据是否同步。
读写分离建议: 从库推荐新建只读权限用户,应用程序只通过只读账号连从库。
6、扩展:GTID 模式简介
GTID(Global Transaction Identifier)是 MySQL 主从架构的另一种复制方式,比传统 binlog + position 更稳定,故障切换更简单。
优点:
- 搭建更简单,不需要手动记录 binlog file 和 position
- GTID 连续递增,数据一致性保障更强
- 故障切换时间更短
缺点(使用限制):
- 主从表存储引擎必须一致(都是 InnoDB)
- 不支持
CREATE TABLE ... AS SELECT语句 - 不支持
CREATE/DROP TEMPORARY TABLE - 不支持用
sql_slave_skip_counter跳过错误
目前未实践 GTID 模式,仅作记录,后续补充实践经验。
参考资料:
评论
匿名评论隐私政策

