deepgreendb 版本: deepgreendb.18.07.180718
原文链接:http://blog.51cto.com/michaelkang/2166368
DeepgreenDB segment 节点异常恢复
Segment检测及故障切换机制
GP Master首先会检测Primary状态,如果Primary不可连通,那么将会检测Mirror状态,Primary/Mirror状态总共有4种:
- Primary活着,Mirror活着。GP Master探测Primary成功之后直接返回,进行下一个Segment检测;
- Primary活着,Mirror挂了。GP Master探测Primary成功之后,通过Primary返回的状态得知Mirror挂掉了(Mirror挂掉之后,Primary将会探测到,将自己变成ChangeTracking模式),这时候更新Master元信息,进行下一个Segment检测;
- Primary挂了,Mirror活着。GP Master探测Primary失败之后探测Mirror,发现Mirror是活着,这时候更新Master上面的元信息,同时使Mirror接管Primary(故障切换),进行下一个Segment检测;
- Primary挂了,Mirror挂了。GP Master探测Primary失败之后探测Mirror,Mirror也是挂了,直到重试最大值,结束这个Segment的探测,也不更新Master元信息了,进行下一个Segment检测。
上面的2-4需要进行gprecoverseg进行segment恢复。
对失败的segment节点,启动时会直接跳过,忽略。
所以直接重启集群没有用
查看集群状态 gpstate
查看 mirror 节点启动状态 gpstate -m
恢复 segment
-
生成恢复配置文件
gprecoverseg -o ./recov
- 使用文件恢复
gprecoverseg -i ./recov
- primary mirror 角色对调
gprecoverseg -r