题目
简述MySQL主从复制的基本原理及其作用
信息
- 类型:问答
- 难度:⭐
考点
主从复制原理,主从复制作用,主从复制配置要点
快速回答
MySQL主从复制是通过二进制日志实现的数据同步机制,主要作用包括:
- 读写分离:主库处理写操作,从库处理读操作
- 数据备份:从库作为实时热备份
- 高可用基础:主库故障时可快速切换从库
基本工作流程:
- 主库将数据变更写入二进制日志(binlog)
- 从库的IO线程读取主库的binlog
- 从库的SQL线程重放binlog中的操作
一、核心原理说明
主从复制基于三个核心组件:
- Binary Log (binlog):主库记录所有数据变更的日志文件
- I/O Thread:从库连接主库,读取binlog到本地中继日志(relay log)
- SQL Thread:从库执行relay log中的SQL语句实现数据同步
# 主库binlog配置示例 (my.cnf)
[mysqld]
server-id=1
log-bin=mysql-bin # 启用binlog
binlog_format=ROW # 推荐使用ROW格式二、配置步骤示例
主库配置:
- 创建复制账号:
CREATE USER 'repl'@'%' IDENTIFIED BY 'SlavePass123!';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; - 重启MySQL使配置生效
从库配置:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='SlavePass123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE; # 启动复制三、最佳实践
- 网络优化:主从服务器部署在同机房减少延迟
- 监控指标:定期检查
SHOW SLAVE STATUS\G中的:- Seconds_Behind_Master(复制延迟)
- Slave_IO_Running / Slave_SQL_Running(线程状态)
- 版本一致性:主从MySQL版本尽量保持一致
四、常见错误
- 错误1217:主键冲突,通常因从库被直接写入导致
- 错误1236:binlog丢失,需重建主从关系
- 复制中断:检查网络、权限、版本兼容性
五、扩展知识
- 复制格式:
- STATEMENT(基于SQL语句)
- ROW(基于行变化,推荐)
- MIXED(混合模式)
- 半同步复制:主库提交事务前需至少一个从库确认
- GTID复制:全局事务ID,简化故障切换