微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在同一数据中心的节点上运行“ nodetool rebuild”时会发生什么?

如何解决在同一数据中心的节点上运行“ 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 repairrepair中哪个选项更安全。

解决方法

这取决于节点的状态。

如果您删除了包括系统表在内的所有内容,则该节点将尝试自动引导,但会失败,因为如果没有replace_address标志就无法重新加入该节点。因此,由于节点无法启动,因此您将无法运行repair

仅当使用rebuild将节点添加回集群时,才可以运行auto_bootstrap: false。这是有问题的,因为在这种状态下,即使节点没有数据,该节点也将接受读取请求。这意味着,如果以ONELOCAL_ONE的一致性进行读取,则不会返回任何数据。干杯!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。