我在一个数据中心有一个单节点 Cassandra 3.11.4 设置。
我知道这很糟糕而且是错误的,所以我尝试通过将数据移动到另一个数据中心的 3 节点设置来修复它。
拍摄快照并将其复制意味着太多的停机时间,因此我尝试将 3 个新节点添加到集群并让 Cassandra 复制数据。
system_distributed
我的用户键空间以及的策略system_auth
如下system_traces
:
{'class': 'NetworkTopologyStrategy', '(newdc)': '3', '(olddc)': '1'}
所有节点都能正常看到彼此(旧数据中心有 1 个节点,新数据中心有 3 个节点)。所有节点都报告 UN。所有节点都报告 100% 有效所有权。我可以从任何节点查询我的密钥空间并取回数据。新节点上的数据文件夹中有一个用于我的用户密钥空间的文件夹,但它是空的。新节点显示负载 <1MB,与原来的 600GB+ 相比似乎有点低。
当我nodetool rebuild -- (olddc)
在任何新节点上执行此操作时,它几乎立即返回,没有任何消息。每个人都告诉我这个命令应该真正移动数据,但没有成功。
我怎样才能真正复制数据?
在日志中,我得到了Some ranges in (...all my ranges...) are already available, skipping streaming these ranges
。可用,是的,我实际上希望节点拥有数据!
nodetool status
显示如下:
Datacenter: (new)
==================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN XX.XXX.X.110 775.49 KiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown
UN XX.XXX.X.109 929.93 KiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown
UN XX.XXX.X.108 710.75 KiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown
Datacenter: (old)
=============================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN XXX.XX.X.233 676.17 GiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown