【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
什么条件下会触发副本切换?那个参数限制副本间的心跳频率,几次心跳不通就会触发切换?是依赖lease_time吗?
【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
什么条件下会触发副本切换?那个参数限制副本间的心跳频率,几次心跳不通就会触发切换?是依赖lease_time吗?
1、当 Election Leader 发现本机出现异常时会触发异常切主,当前包括如下场景:
2、当 Leader 与多数派超过一个租约时长无法连通时,将开启新一轮的选举,并选出下一任 Leader。
默认的租约时长是 10s,用户可以修改配置变更租约时长。
3、obsever 每2秒给root service 上报自己的状态信息,超时触发切主
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002014011
obsever 每2秒给root service 上报自己的状态信息,Root Service 负责集群的节点管理,各节点通过心跳数据包(heartbeat)的方式,定期(每 2s)向 Root Service 汇报自己的进程状态,Root Service 通过监测节点的心跳数据包,来获取当前 observer 进程的工作状态,
根据文档库中的信息,关于OceanBase数据库中副本触发故障切换的原理如下:
触发副本切换的条件:
log_storage_warning_tolerance_time
调整)、写SLOG线程hang住超过5秒(可通过集群配置项data_storage_warning_tolerance_time
调整)、数据盘hang住、CLOG盘满以及Schema未刷新等。心跳频率及超时处理:
lease_time
时间内没有收到某节点的心跳数据包,则认为该Observer进程短暂断线,并标记该节点的心跳状态为lease_expired
。默认情况下,lease_time
设置为10秒。server_permanent_offline_time
时间内没有收到某节点的心跳数据包,则认为该Observer进程断线,并标记该节点的心跳状态为permanent_offline
。默认情况下,server_permanent_offline_time
设置为3600秒(1小时)。因此,确实依赖于lease_time
来判断短时间内的心跳丢失情况,而更长时间的心跳丢失则由server_permanent_offline_time
参数控制。当节点被标记为permanent_offline
后,系统会对该节点上的数据副本进行处理,确保数据副本Paxos成员组完整。
以上信息来源于《节点故障的自动处理》章节中的“节点状态监测”部分以及相关配置项说明。
更多信息请查看:
怎么做到8秒的RTO的?
有点像副本多活
OB怎么做到,在不修改任何参数的情况下,RTO<8s