我们一直想知道为什么我们的某个群集显示Analytics节点拥有数据。我有编辑,ips,令牌和主机ID以便于阅读
% nodetool status
Datacenter: Cassandra
=====================
Status=Up/Down|/ State=Normal/Leaving/Joining/Moving
-- Address Load Owns Host ID Token Rack
UN 172.32.x.x 46.83 GB 18.5% someguid 0 rack1
UN 172.32.x.x 60.26 GB 33.3% anotherguid ranbignumber rack1
UN 172.32.x.x 63.51 GB 14.8% anothergui ranbignumber rack1
Datacenter: Analytics
=====================
Status=Up/Down|/ State=Normal/Leaving/Joining/Moving
-- Address Load Owns Host ID Token Rack
UN 172.32.x.x 28.91 GB 0.0% someguid 100 rack1
UN 172.32.x.a 30.41 GB 33.3% someguid ranbignumber rack1
UN 172.32.x.x 17.46 GB 0.0% someguid ranbignumber rack1
带有ip 172.32.x.a的Analytics节点实际上是否拥有数据?如果是这样,我们需要备份它吗?退役节点还会将数据移回适当的节点吗?
这是我从Datacenter Analytics中的上述nodetool状态引用的节点:
UN 172.32.x.a 30.41 GB 33.3% someguid ranbignumber rack1
问题(使用下面提供的答案更新)。
以下是
的更新 % nodetool status our_important_keyspace
Datacenter: Cassandra
=====================
Status Address Load Owns (effective)
UN 2 63.16 GB 81.5%
UN 1 47.21 GB 33.3%
UN 3 59.87 GB 85.2%
Datacenter: Analytics
=====================
Status Address Load Owns (effective)
UN 3 17.74 GB 33.3%
UN 2 30.62 GB 33.3%
UN 1 29.21 GB 33.3%
今天备份分析 - 很棒的答案,可能为我们节省了很多痛苦。
答案 0 :(得分:2)
您需要做的第一件事是使用存储数据的密钥空间来运行nodetool status或dsetool ring。这将显示该密钥空间的复制策略所指示的所有权。您现在看到的内容我很可能是由原始令牌值设置的所有权。如果你的密钥空间被命名为" important_data"你会运行" nodetool status important_data"。
密钥空间上的此复制策略对于确定哪些节点负责群集中的数据至关重要。在任何情况下,多DC集群都应该使用NetworkTopologyStrategy,它允许指定每个数据中心中应该有多少个数据副本。例如,如果您想确保数据在Cassandra集群中复制两次,但只在Analytics集群中复制一次,那么您将使用网络拓扑策略,例如{' Cassandra':2,' Analytics& #39;:1}。这意味着每个数据块都会在群集范围内复制3次。如果您确实希望不将数据复制到分析节点(这会对分析性能产生不利影响),您可以设置“分析:0”和“分析”。或者一起省略那个短语。
您的备份策略应始终至少备份数据的完整副本,但最简单的方法就是备份每个节点或至少备份一个数据中心的每个节点(因为您可以从其中备份其他节点)
如果您希望通过复制策略获得数据,则该节点将只有数据,在这种情况下,您需要在删除节点时停用,就像使用群集中的任何节点一样。大多数用户确实发现在其分析数据中心中使用副本很有用,因为这样可以在使用各种分析工具时更快地访问。