单机版oceanbase在部署主备模式时,会在两个服务器上分别部署一个oceanbase数据库,一个库创建主租户,另一个库创建备租户,那么ocp是如何检测主租户出现故障的?
ocp接管后 ,ocp能感知 Observer 宕机啊。
主备是用来做灾备的,不会自动切换的,需要手动切,主集群多副本,在满足多数节点的情况下,通过各项性能指标监控到异常后,会选举出新的leader来继续提供服务。
OCP 一般通过以下方式来检测主租户是否发生故障:
心跳检测:OCP 定期向各个 OBServer 节点发送心跳请求,检查节点状态。
租户运行状态监控:OCP 监控每个租户所在的 OBServer 节点是否正常运行。
日志同步延迟监控:OCP 实时查看备租户是否能够持续从主租户同步 Redo 日志。
根据文档库中的信息,OCP 对 OceanBase 集群的主备租户状态检测和管理主要依赖于其告警监控服务以及全链路诊断机制。以下是 OCP 检测主租户出现故障的方式及处理逻辑:
1. 告警监控服务
OCP 提供了告警监控服务(参考 [文档片段 6]),通过持续监测 OceanBase 集群、租户及其依赖资源的状态,确保在业务运行故障或资源不足时用户能够及时感知。如果主租户出现故障,OCP 的告警系统会触发相应的告警事件。
- 告警触发条件:当 OCP 对其管理的 OceanBase 集群进行状态检测失败时,会上报告警(参考 [文档片段 10])。
- 告警内容:OCP 会记录并展示具体的告警信息,包括但不限于主租户不可用、连接超时等。
2. 全链路诊断机制
OCP 提供了全链路诊断功能(参考 [文档片段 3]),可以实现从 Client 到 OBProxy 再到 OBServer 的整个调用链路的耗时监控。如果主租户出现故障,OCP 可以通过以下方式快速定位问题:
- 链路耗时分析:OCP 会统计出链路耗时、驱动耗时、OBProxy 耗时、OB 耗时等数据,帮助用户判断是否为主租户的问题。
- 事务维度跟踪:全链路诊断以数据库的事务为维度,能够详细展示每个事务的执行情况,从而快速发现主租户的异常点。
3. 信息采集功能
当主租户出现故障时,OCP 的信息采集功能(参考 [文档片段 4])会自动收集系统运转中的关键信息和易失信息,以便用户进行故障排查。这些信息包括但不限于:
- 主租户的运行日志。
- OBServer 的状态信息。
- 网络连接状态。
用户可以通过 OCP 的信息采集页面查看和下载这些信息,进一步分析主租户的故障原因。
4. 主备切换逻辑
虽然文档中没有明确提到单机版 OceanBase 的主备切换具体流程,但根据分布式数据库的通用原理,OCP 在检测到主租户故障后,通常会执行以下操作:
- 故障检测:通过上述告警监控和全链路诊断机制确认主租户不可用。
- 通知管理员:触发告警并通知管理员进行干预。
- 手动或自动切换:根据配置策略,OCP 可能会自动将流量切换到备租户,或者等待管理员手动确认后完成切换。
注意事项
- 文档中提到,OCP 社区版不支持部分高级功能(如 [文档片段 4] 中的信息采集功能)。因此,如果您使用的是 OCP 社区版,可能需要依赖其他工具或手动方式进行主租户故障检测和切换。
- 单机版 OceanBase 的主备模式部署需要满足特定条件(参考 [文档片段 9]),例如集群状态为运行中、已添加仲裁服务等。
综上所述,OCP 通过告警监控、全链路诊断和信息采集等功能检测主租户故障,并结合主备切换策略完成故障恢复。如果需要更详细的主备切换流程,请参考 OceanBase 官方文档或联系技术支持团队获取更多信息。
详情请参考: