This repository has been archived by the owner on Jun 23, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 59
MetaServer对DDD状态partition的处理方式的讨论 #80
Comments
在onebox环境下模拟需要人工干预的DDD情况:(譬如基于v1.10.0版本的Pegasus )
查看MetaServer的日志,发现进入需要人工干预的DDD状态:
日志示例:
|
This was referenced Sep 5, 2018
"只有LastDrop最后的两个节点都恢复了,才能选出一个Primary" 为什么要这么设计? |
当初这样是为了保证数据安全性 |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
背景
在线上偶尔会出现下面的一种情况:
Config[C,B,A], LastDrop[]
Config[C,B], LastDrop[A]
Config[C], LastDrop[A,B]
Config[C,A], LastDrop[B]
Config[], LastDrop[B,A,C]
以上只是一种示例情况。实际上,只要某个partition进入DDD状态,且LastDrop的最后两个节点中有一个节点无法正常启动,就会进入需要人工干预的DDD状态。而在线上集群多个节点的起起停停过程中,这种情况是很容易出现的。
如果这样的partition很多,人工干预就是一个很大的工作量,真的通过人工操作来一个个恢复是不现实的。所以我们要思考,是否可以将这种情况的恢复过程自动化?
如果LastDrop最后两个节点中,有一个恢复正常,另外一个是要踢掉的节点,实际上就可以自动来恢复,譬如直接选择恢复正常的那个节点作为Primary。但是我们需要证明,这样的选择确定不会丢数据。
或者退一步,即使不完全自动化,如果在Shell中提供一个自动诊断工具,将处于需要人工干预的DDD状态的partition信息展示出来,给出运维干预的建议,然后让用户确认,选择出合适的方案,一方面能够大大降低运维工作了,另一方面也能保证数据的正确性。
The text was updated successfully, but these errors were encountered: