Cassandra 复制在每个节点上并非 100%

Cassandra 复制在每个节点上并非 100%

我有 3 个节点的 Cassandra 集群。我正在执行一些云迁移活动,为此,我在现有集群中添加了两个节点,结果如下。

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.1.5    24.07 GB   256          59.4%             804b855f-78f3-42d6-8abf-b9aec73699df  rack1
UN  192.168.1.6    24.77 GB   256          59.8%             21f2066f-1794-485c-9c4f-d6d1b286a551  rack1
UN  172.16.2.20  15.96 GB   256          60.3%             2c2f512d-5743-4632-a4b5-cd2cac967897  rack1
UN  172.16.2.21  12.76 GB   256          60.0%             657ff1b6-773a-4782-a506-c4899cdf2a4f  rack1
UN  192.168.1.7    17.69 GB   256          60.5%             c8c4bc41-4b5c-41e6-bb71-ab90c2ed5eb0  rack1

OWNS 字段以前对所有节点都是 100%,而现在它显示不同的数字,所以是不是每个节点上都没有完整的 100% 数据,并且假设我通过关闭 Cassandra 来关闭任何节点,那么是否存在数据丢失的风险?

答案1

这是正常情况。

最有可能的是,您的复制因子为 3,并且有 3 个节点,这导致每个节点都有所有其他节点的副本。当您添加 2 个节点时,每个节点将保留 3/5 的数据 - 其自己的范围(1/5 的数据)+ 副本(2/5 的数据)。它不是精确的 60%,因为数据可能没有精确地在节点之间分配 - 某些分区可能比其他分区大,等等。

我建议你读一下DataStax 架构指南- 它将让您更好地了解 Cassandra 的工作原理和数据如何复制。

相关内容