MST

星途 面试题库

面试题:MySQL高可用方案中主从复制的原理及在业务连续性计划中的应用

请阐述MySQL主从复制的基本原理。在设计业务连续性计划时,如何利用主从复制机制来确保数据库服务的高可用性,例如在主库发生故障时,从库如何快速接管业务?
38.1万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

MySQL主从复制基本原理

  1. 二进制日志(Binary Log):主库将数据库的写操作记录到二进制日志中,这些日志记录了数据库结构和数据的变更,如INSERTUPDATEDELETE等语句。
  2. 日志传送:从库通过一个I/O线程连接到主库,请求主库发送二进制日志内容。主库接收到请求后,会有一个日志传送线程将二进制日志以事件(Event)的形式传送给从库。
  3. 中继日志(Relay Log):从库的I/O线程接收到主库发送的二进制日志事件后,将其写入到本地的中继日志中。
  4. 重放日志:从库还有一个SQL线程,它会读取中继日志中的事件,并在从库上按照顺序重新执行这些事件,从而使从库的数据与主库保持一致。

利用主从复制确保高可用性及故障接管

  1. 自动故障检测与切换
    • 使用监控工具:可以使用诸如MHA(Master High Availability)、Orchestrator或其他第三方监控工具。这些工具会定期检查主库的状态,例如通过发送心跳包或执行简单的SQL查询来确认主库是否正常响应。
    • 检测到故障:当监控工具检测到主库无响应或发生故障时,会触发故障切换流程。
  2. 从库快速接管
    • 选择合适从库:监控工具根据一定的规则(如从库延迟最小、优先级高等)从多个从库中选择一个作为新的主库。
    • 提升从库为主库:监控工具会执行一系列操作将选中的从库提升为主库,这通常包括停止从库的复制线程(STOP SLAVE),使其不再作为从库接收主库日志,然后开启写功能。
    • 其他从库重新配置:将其他从库重新配置,使其连接到新提升的主库,开始从新主库接收二进制日志并进行复制,恢复主从复制架构。
  3. 应用端配置
    • 连接池与配置更新:应用程序通常通过连接池连接数据库。在主库故障切换后,需要及时更新连接池中的数据库连接配置,使其指向新的主库。一些连接池(如HikariCP等)支持动态更新数据库连接配置,能够在一定程度上减少应用程序的中断时间。
    • 读写分离调整:如果应用程序采用了读写分离策略,在主库切换后,需要重新调整读请求的分发策略,确保读请求能正确发送到新的主库或合适的从库上。