云服务器MySQL高可用部署关键配置清单
文章分类:更新公告 /
创建时间:2025-07-24
在云服务器上实现MySQL高可用部署,是企业保障核心业务数据安全、避免服务中断的关键技术动作。本文整理从环境搭建到故障监控的全流程关键配置清单,助你高效完成部署。
环境准备:硬件与网络的双重适配
部署前的环境规划直接影响后续高可用效果。云服务器的配置需结合业务特性选择——若业务读写峰值达5000QPS(每秒查询数),建议至少选择4核8G配置;数据量年增长超500GB时,需预留50%存储冗余。网络方面,优先选择支持BGP多线的云服务器,南北网络延迟可降低30%-50%,减少主从复制因网络波动导致的延迟问题。操作系统推荐CentOS 7.9或Ubuntu 20.04长期支持版(LTS),社区文档丰富,故障排查更高效。
MySQL基础配置:安全与性能的初始校准
安装时建议选择MySQL 8.0稳定版,较5.7版本新增的原子DDL(数据定义语言)功能可减少主从同步时的锁表风险。安装完成后,首要操作是重置root密码:使用`ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';`命令,避免默认空密码风险。
修改核心配置文件my.cnf时,需根据云服务器内存调整关键参数:
- 若内存16GB,设置`innodb_buffer_pool_size=8G`(占内存50%);
- 最大连接数`max_connections`建议设为云服务器CPU核心数×200(如4核设800);
- 开启慢查询日志`slow_query_log=1`,日志文件路径指向独立数据盘,避免系统盘空间占满。
主从复制:唯一ID与日志的精准把控
主从复制是高可用的基石,关键在二进制日志(binlog)和server-id的配置。主服务器需在my.cnf中添加:
log-bin=mysql-bin # 开启binlog,文件名前缀为mysql-bin
server-id=1001 # 全局唯一ID,建议用云服务器内网IP后四位
binlog_format=ROW # 行级复制,记录更细粒度变更
重启MySQL服务后,通过`SHOW MASTER STATUS;`获取当前binlog文件名(如mysql-bin.000001)和位置(如154)。
从服务器配置时,server-id需与主服务器不重复(如1002),并执行连接命令:
CHANGE MASTER TO
MASTER_HOST='主服务器内网IP',
MASTER_USER='repl_user',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
启动复制进程`START SLAVE;`后,用`SHOW SLAVE STATUS\G`检查状态——重点关注`Slave_IO_Running`(连接主库的IO线程)和`Slave_SQL_Running`(执行主库日志的SQL线程)是否均为`Yes`。若IO线程异常,可通过云服务器的网络监控查看是否有丢包;SQL线程异常多因主从表结构不一致,需及时同步DDL操作。
读写分离:中间件与负载的智能分配
单主多从架构下,读写分离可显著提升性能。推荐使用ProxySQL作为中间件,它支持动态路由和负载均衡。安装后需在配置表`mysql_servers`中添加主从节点信息:
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (1, '主服务器IP', 3306); # 写节点
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (2, '从服务器IP1', 3306); # 读节点1
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (2, '从服务器IP2', 3306); # 读节点2
应用程序连接ProxySQL端口(默认6033),写请求自动路由至hostgroup 1,读请求轮询hostgroup 2节点。需注意定期检查从节点延迟(通过`SHOW SLAVE STATUS`的`Seconds_Behind_Master`字段),若延迟超10秒,可临时将该节点移出读池。
监控与故障转移:主动防御的最后一道关
部署后需建立三层监控体系:
- 基础层:通过云服务器自带的监控面板(如CPU、内存、磁盘IO),设置阈值告警(如磁盘使用率超80%触发通知);
- 数据库层:用Prometheus+Grafana监控MySQL指标,重点关注`Threads_connected`(连接数)、`Innodb_row_lock_waits`(行锁等待)、`Binlog_size`(binlog文件大小);
- 复制层:定制脚本每5秒检查`Slave_IO_Running`和`Slave_SQL_Running`状态,异常时触发短信告警。
故障转移可借助Keepalived实现自动切换。配置虚拟IP(VIP)后,主服务器作为MASTER节点,从服务器作为BACKUP节点。当主服务器宕机(通过MySQL进程存活检测),Keepalived会将VIP漂移至从服务器,应用程序只需重连VIP即可恢复服务。需注意定期演练故障转移流程(如手动停止主库MySQL服务),确保切换时间控制在30秒内。
完成上述配置后,云服务器上的MySQL高可用架构基本成型。实际部署中需结合业务特性调整参数——比如电商大促期间可临时调大`max_connections`,日志量突增时缩短binlog自动清理周期(通过`expire_logs_days`设置)。高可用的核心是“预防+快速响应”,做好每一步配置校验,才能真正保障业务连续性。