我有 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 的工作原理和数据如何复制。