MySQL 主从复制配置完整指南
MySQL 主从复制配置完整指南
1. 概述
1.1 功能简介
MySQL主从复制(Replication)允许将一个MySQL实例(主服务器)的数据实时同步复制到另一个MySQL实例(从服务器)。

1.2 应用场景
- 数据备份
- 读写分离
- 故障转移
- 数据分析
- 异地容灾
1.3 工作原理
- 主库记录二进制日志
- 从库I/O线程读取主库二进制日志
- 从库SQL线程重放日志事件
2. 环境准备
2.1 服务器配置
主服务器: 192.168.1.10
- MySQL 8.0
- 8GB RAM
- 4 Core CPU
从服务器: 192.168.1.11
- MySQL 8.0
- 8GB RAM
- 4 Core CPU
2.2 防火墙配置
# 主服务器开放3306端口
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
3. 配置步骤
3.1 主服务器配置
3.1.1 修改配置文件
# vim /etc/my.cnf
[mysqld]
# 基础配置
server-id=1
log-bin=mysql-bin
binlog_format=ROW
sync_binlog=1
# GTID配置(可选)
gtid_mode=ON
enforce_gtid_consistency=ON
# 数据一致性
innodb_flush_log_at_trx_commit=1
# 需要复制的数据库
binlog-do-db=db_name # 可选
3.1.2 创建复制用户
CREATE USER 'repl_user'@'192.168.1.11' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.11';
FLUSH PRIVILEGES;
3.1.3 获取主库状态
SHOW MASTER STATUS\G
3.2 从服务器配置
3.2.1 修改配置文件
# vim /etc/my.cnf
[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=ON
read_only=ON
3.2.2 配置主从连接
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234;
-- 如果使用GTID,则使用:
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION=1;
3.2.3 启动复制
START SLAVE;
4. 验证与监控
4.1 检查复制状态
SHOW SLAVE STATUS\G
关键状态指标:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Seconds_Behind_Master: 0
4.2 监控指标
- 复制延迟
- 复制错误
- 主从数据一致性
- 二进制日志空间使用情况
5. 故障处理
5.1 常见问题
- 复制中断
- 数据不一致
- 主从延迟
5.2 解决方案
-- 跳过单个事务
SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE;
-- 修复数据不一致
pt-table-checksum
pt-table-sync
-- 处理大事务导致的延迟
set global slave_parallel_workers=4;
6. 安全建议
6.1 网络安全
- 使用专用网络进行复制
- 配置防火墙规则
- 启用SSL加密复制
6.2 账户安全
- 定期更改复制账户密码
- 限制复制用户权限
- 禁用不必要的账户
7. 维护建议
7.1 日常维护
- 定期检查复制状态
- 监控主从延迟
- 清理过期二进制日志
7.2 备份策略
# 主库备份
mysqldump --master-data=2 --single-transaction --all-databases > backup.sql
# 从库备份
mysqldump --dump-slave=2 --single-transaction --all-databases > backup.sql
8. 性能优化
8.1 参数优化
# 主库优化
sync_binlog=1
innodb_flush_log_at_trx_commit=1
# 从库优化
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=4
8.2 网络优化
- 使用高带宽网络
- 降低网络延迟
- 配置适当的超时参数
9. 总结
主从复制是MySQL高可用性和扩展性的重要基础。通过正确配置和维护,可以实现数据的可靠复制和业务的连续性保障。定期监控和及时维护是确保复制稳定运行的关键。