悠悠楠杉
MySQL主从集群配置实战指南:从安装到高可用搭建
本文详解MySQL 8.0主从集群配置全流程,包含安装后的初始化操作、主库与从库的配置技巧、复制模式选择以及常见问题排查,助您快速构建高可用数据库架构。
一、MySQL安装后的关键初始化
完成MySQL安装后,不要急于配置集群,先做好这些基础工作:
安全加固
bash mysql_secure_installation
执行后会交互式设置root密码、移除匿名用户、禁止远程root登录等。创建专用账号
sql CREATE USER 'repl'@'%' IDENTIFIED BY 'S3cure_Pass!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
确认服务状态
bash systemctl status mysqld
二、主从复制核心配置详解
主库配置(my.cnf)
ini
[mysqld]
server_id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_row_image = FULL
expire_logs_days = 7
sync_binlog = 1
关键参数说明:
- server_id
:集群内唯一标识
- binlog_format
:推荐ROW模式避免数据不一致
- sync_binlog=1
:确保事务先写入binlog再提交
从库配置(my.cnf)
ini
[mysqld]
server_id = 2
relay_log = mysql-relay-bin
read_only = ON
log_slave_updates = ON # 如需链式复制需开启
启动复制流程
主库锁定并获取坐标
sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
记录File(如mysql-bin.000001)和Position(如154)从库配置连接
sql CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='S3cure_Pass!', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
解锁主库
sql UNLOCK TABLES;
启动从库复制
sql START SLAVE; SHOW SLAVE STATUS\G
检查Slave_IO_Running
和Slave_SQL_Running
均为Yes
三、GTID复制模式(推荐)
现代MySQL版本建议使用GTID复制:ini
主从库均需添加
gtidmode = ON enforcegtid_consistency = ON
配置命令简化为:
sql
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='S3cure_Pass!',
MASTER_AUTO_POSITION=1;
四、常见故障排查
复制中断
- 检查
Last_IO_Error
/Last_SQL_Error
字段 - 常见解决方法:
sql STOP SLAVE; SET GLOBAL sql_slave_skip_counter = 1; START SLAVE;
- 检查
数据不一致
使用pt-table-checksum工具校验:
bash pt-table-checksum --host=主库IP --user=check_user --password=xxx
网络延迟
监控Seconds_Behind_Master
值,超过阈值需优化网络或调整:
ini slave_net_timeout = 60
五、生产环境优化建议
备份策略
- 主库定期全量备份+binlog增量
- 从库可作为备份源减轻主库压力
监控指标
- 复制延迟时间
- 主从数据一致性
- 网络吞吐量
高可用扩展
- 考虑MGR集群方案
- 配合ProxySQL实现读写分离
经验提示:首次同步大型数据库时,建议使用mysqldump导出主库数据并在从库导入后再启动复制,避免长时二进制日志传输。