CentOS 7 MySQL主从复制配置指南
环境准备
部署MySQL主从复制前,需准备两台CentOS 7服务器并安装相同版本的MySQL服务。主从服务器需保证网络互通,建议关闭防火墙或开放3306端口。
# 关闭防火墙(临时生效)
systemctl stop firewalld
# 永久禁用防火墙
systemctl disable firewalld
主库配置
编辑主库MySQL配置文件/etc/my.cnf
,添加以下参数:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
重启MySQL服务并创建用于复制的账户:
systemctl restart mysqld
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'P@ssw0rd';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql> FLUSH PRIVILEGES;
记录主库二进制日志状态:
mysql> SHOW MASTER STATUSG
从库配置
修改从库配置文件/etc/my.cnf
:
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read-only=1
重启服务并配置同步参数:
systemctl restart mysqld
mysql> CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='P@ssw0rd',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
启动从库复制进程:
mysql> START SLAVE;
验证同步状态
检查从库复制状态:
mysql> SHOW SLAVE STATUSG
确认Slave_IO_Running
和Slave_SQL_Running
均为Yes状态,且Seconds_Behind_Master
值接近0。
故障排查
- 网络连接检查:确保主从服务器间3306端口可通信
- 账户权限验证:确认复制账户具有REPLICATION SLAVE权限
- 日志定位:核对MASTER_LOG_FILE和MASTER_LOG_POS参数准确性
- 错误日志分析:查看
/var/log/mysqld.log
获取详细错误信息
同步机制优化
根据业务需求调整以下参数:
# 主库配置
binlog_expire_logs_seconds=604800 # 日志保留7天
sync_binlog=1 # 每次写入同步二进制日志
# 从库配置
relay_log_recovery=1 # 启用中继日志自动恢复
slave_parallel_workers=4 # 启用并行复制