MST

星途 面试题库

面试题:MySQL高可用性方案中自动化运维如何实现主从切换

在MySQL高可用性方案的自动化运维实践里,描述一下实现主从切换的基本流程和常用技术手段。
26.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

主从切换基本流程

  1. 故障检测:通过监控系统(如Zabbix、Prometheus等)持续监测主库的关键指标,如数据库服务状态、网络连接、磁盘I/O等。一旦发现主库出现故障(如进程崩溃、网络中断等),监控系统发出警报。
  2. 确认故障:自动化脚本或运维人员收到警报后,进行二次确认,避免误报。例如,尝试重新连接主库,检查相关日志等。
  3. 选择新主库:从当前的从库节点中选择一个合适的节点作为新的主库。选择标准可以包括从库的延迟情况(通过SHOW SLAVE STATUS查看Seconds_Behind_Master值)、硬件性能、负载情况等。一般选择延迟最小且性能较好的从库。
  4. 提升从库为主库:在选定的从库上执行命令停止复制(STOP SLAVE),然后将其设置为主库(如执行RESET MASTER,不同版本命令可能略有差异)。
  5. 重新配置从库:对于其他从库,需要重新配置它们指向新的主库。这包括获取新主库的二进制日志文件名和位置(SHOW MASTER STATUS),然后在从库上使用CHANGE MASTER TO命令重新设置主库信息,最后启动复制(START SLAVE)。
  6. 通知应用:告知应用程序新主库的地址和端口等连接信息。这可以通过修改配置文件、使用配置中心(如Apollo、Nacos)动态更新配置等方式实现。

常用技术手段

  1. MHA(Master High Availability):是一套优秀的MySQL高可用方案,由MHA Manager和MHA Node组成。Manager负责监控和管理整个集群,Node部署在各个MySQL节点上。当主库发生故障时,MHA Manager能快速检测到,并自动选择合适的从库提升为主库,同时协调其他从库重新指向新主库。
  2. Orchestrator:是由GitHub开源的MySQL集群管理工具,具备自动故障检测、主从切换、拓扑管理等功能。它通过在每个MySQL节点上部署Agent来收集信息,实现对集群的统一管理。可以通过Web界面方便地查看集群状态和执行相关操作。
  3. Keepalived + VIP:Keepalived是一个基于VRRP协议的高可用软件。在MySQL主从架构中,可以为MySQL主库配置一个虚拟IP(VIP)。主库正常时,VIP绑定在主库服务器上;当主库故障时,Keepalived通过VRRP协议将VIP漂移到新的主库节点,应用程序通过访问VIP来连接MySQL,无需修改配置中的IP地址,实现透明切换。
  4. 基于脚本实现:可以编写自定义的Shell脚本或Python脚本,结合监控工具(如Nagios、Ganglia)的告警机制,实现主从切换。脚本中包含故障检测逻辑、从库选择逻辑、主从切换命令执行等部分。这种方式灵活性高,但开发和维护成本相对较高,需要对MySQL和脚本编程有深入了解。