面试题答案
一键面试常见的故障检测方法
- 心跳检测
- 原理:负载均衡器定期向各个 MariaDB 节点发送心跳包,节点收到后返回响应。若在规定时间内未收到响应,则认为该节点可能出现故障。
- 优势:实现简单,能够快速发现节点是否存活。
- 不足:只能判断节点是否存活,无法判断节点服务是否正常,例如数据库进程虽存活但无法正常处理查询。
- SQL 检测
- 原理:负载均衡器向节点发送特定的 SQL 查询,如
SELECT 1;
等简单查询,通过是否能收到正确响应来判断节点是否正常工作。 - 优势:能更准确判断数据库服务是否可用,不仅仅是节点存活。
- 不足:增加了数据库的负载,若检测频率过高可能影响正常业务。
- 原理:负载均衡器向节点发送特定的 SQL 查询,如
- 基于日志监控
- 原理:监控 MariaDB 的错误日志,当发现严重错误,如数据库崩溃、无法连接等相关日志记录时,判定节点出现故障。
- 优势:可以提前发现一些潜在的严重问题,比心跳检测和 SQL 检测更能发现深层次故障。
- 不足:需要解析日志,对运维要求较高,且可能存在一定的延迟,因为日志记录故障到被检测到有时间差。
故障后负载均衡器的切换策略
- 快速切换
- 临时移除故障节点:负载均衡器一旦检测到节点故障,立即将其从可用节点列表中移除,避免后续请求被发送到该故障节点。
- 启用备用节点:若存在备用节点,负载均衡器迅速将流量切换到备用节点。例如,在主从架构中,当主节点故障时,负载均衡器自动将写操作切换到从节点(前提是从节点已提升为主节点)。
- 确保可靠切换
- 多检测机制确认:为防止误判,在检测到故障后,通过多种检测机制再次确认。例如先通过心跳检测发现节点无响应,再通过 SQL 检测进一步确认。
- 状态同步:在进行节点切换前,确保新节点的数据状态与故障节点尽可能一致。对于主从架构,要保证从节点提升为主节点时,数据已同步完成。这可以通过 MariaDB 的半同步复制等机制来实现,确保在主节点故障时,从节点的数据是最新的,避免数据不一致。
- 监控恢复节点:当故障节点恢复后,不要立即将其重新加入负载均衡池中,而是先进行一系列检测,如 SQL 检测、性能检测等,确保其恢复正常且数据完整后,再逐步将流量引入,避免因故障节点未完全恢复而影响业务。