4

Cassandranodetool有一个命令叫做cleanup

清理 [keyspace][cf_name]

触发立即清理不再属于此节点的键。这对节点的影响与主要压缩在磁盘空间使用量的临时增加和磁盘 I/O 的增加方面大致相同。(可选)采用列族名称列表。

我的问题是:

  1. 一个节点什么时候会拥有不属于它的键?
  2. 我应该什么时候进行清理?
  3. 我是否应该定期进行清理(例如每周一次)?
4

2 回答 2

7

一个节点什么时候会拥有不属于它的键?

当您向集群添加新节点时,会降低复制因子或移动令牌。

我应该什么时候进行清理?

经过以上操作之一,如果需要节省磁盘空间。延迟运行它并没有什么害处 - 会影响性能,唯一的原因是节省磁盘空间。

我是否应该定期进行清理(例如每周一次)?

不,仅当您需要在上述操作之一后节省空间时。

于 2013-08-16T08:39:51.113 回答
0

一个节点什么时候会拥有不属于它的键?

当您引导一个新节点时,一些现有节点将通过将所有权转移到新节点而失去对数据的所有权。

减少复制因子也可以做到这一点。

我应该什么时候进行清理?

在下面提到的操作之后,但在您开始任何其他拓扑/复制更改之前。

您应该在集群中所有受影响的节点上运行它。如有疑问,请在所有节点上运行。

运行它的一个原因是回收用于存储不再拥有的数据的磁盘空间。

Another reason is that failure to do so may cause data consistency problems. You may see resurrection of deleted data. Consider the case of node A losing ownership of key k after bootstrapping a new node, and holding a live row for key k. Later, key k is deleted but deletion does not propagate to node A (no longer a replica). Then the deletion expires in the whole cluster. Then you change the topology such that A is the owner of key k again. It will serve the old, deleted, row.

Source: https://docs.datastax.com/en/dse/6.7/dse-admin/datastax_enterprise/tools/nodetool/toolsCleanup.html

No need to run nodetool cleanup after nodetoool decommission, nodetool replace, or nodetool removenode.

Should I do cleanup regularly (e.g. once per week)?

No need to.

于 2022-01-09T19:34:24.550 回答