如何解决在同一数据中心的节点上运行“ nodetool rebuild”时会发生什么?
这似乎很愚蠢,但是我删除了其中一个节点上数据目录(/ var / lib / scylla / data / *)中的所有内容。现在,要恢复数据,我可以运行Traceback (most recent call last):
File "main.py",line 23,in <module>
triangle3S(float(input('1st side: ')),float(input('2nd side: ')),float(input('3rd side: ')))
File "main.py",line 20,in triangle3S
a = float(sqrt(s * (s-s1) * (s-s2) * (s-s3)))
ValueError: math domain error
或nodetool repair
。
我对nodetool rebuild
感到困惑。我读到它主要在创建新数据中心时使用。因此,就我而言,如果我在现有集群中的节点上运行rebuild
,会发生什么?它会简单地从副本中复制它负责的所有令牌范围的数据吗?还是会以某种方式干扰令牌范围并导致数据丢失?
我知道nodetool rebuild
将创建一致的数据副本。但是,假设我对一致性没有严格的要求,只是想将数据尽快恢复到我的节点上。 nodetool repair
或repair
中哪个选项更安全。
解决方法
这取决于节点的状态。
如果您删除了包括系统表在内的所有内容,则该节点将尝试自动引导,但会失败,因为如果没有replace_address
标志就无法重新加入该节点。因此,由于节点无法启动,因此您将无法运行repair
。
仅当使用rebuild
将节点添加回集群时,才可以运行auto_bootstrap: false
。这是有问题的,因为在这种状态下,即使节点没有数据,该节点也将接受读取请求。这意味着,如果以ONE
或LOCAL_ONE
的一致性进行读取,则不会返回任何数据。干杯!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。