以下是CentOS系统下MySQL主从配置的详细步骤:
一、环境准备
- 两台CentOS服务器(主库Master/从库Slave)
- 统一MySQL版本(建议5.7+)
- 网络互通(3306端口开放)
二、主库配置
# 修改配置文件
vi /etc/my.cnf
# 添加以下配置
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
expire_logs_days=7
三、创建复制账号
-- 主库执行
CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl_2023';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
四、获取主库状态
SHOW MASTER STATUS;
记录输出结果中的:
File: mysql-bin.000001
Position: 627
五、从库配置
vi /etc/my.cnf
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read_only=1
六、启动复制
-- 从库执行
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='Repl_2023',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=627;
START SLAVE;
七、验证同步状态
SHOW SLAVE STATUS\G
确认以下两个参数值为Yes:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
排错指南
- 检查防火墙设置:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
- 常见错误处理:
- 错误代码1062:主键冲突
- 错误代码1236:二进制日志位置错误
- 错误代码2003:网络连接失败
高级配置建议
- 半同步复制:
-- 主库
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
-- 从库
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
- 延迟监控:
SHOW SLAVE STATUS;
-- 查看Seconds_Behind_Master字段值
- 自动故障切换建议:
- 使用Keepalived实现VIP漂移
- 配置MHA高可用方案
实际部署时请根据硬件配置调整以下参数:
innodb_buffer_pool_size = 物理内存的70%
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1