我们正在运行带有节点服务器的Cassandra集群。最初,集群只有一个节点,并且我们决定,由于该节点空间不足,我们可以向集群添加另一个节点。
群集上的信息:
在单个数据中心上使用SimpleStrategy类的具有复制因子 1 的键空间
Node 1 - 256 tokens, almost no space available (1TB occupied by Cassandra data)
Node 2 - connected with 256 tokens, had 13TB available
首先,我们将节点2添加到集群中,然后意识到要将数据流传输到节点2,我们必须停用节点1。 因此,我们决定停用,清空并重新配置节点1(我们希望节点1仅容纳32个令牌),然后将节点1重新添加到群集数据中心。
启动退役过程时,它创建了29个文件流,总计近600GB。该流已成功复制(我们检查了日志并使用了 nodetool netstats ),我们期望第二个流将随之而来,因为节点1上有1TB。但是没有任何其他事情发生,该节点报告为已停用,并且节点2报告的数据流已完成。
来自节点2的日志与副本流有关:
INFO [STREAM-INIT-/10.131.155.200:48267] 2018-10-08 16:05:55,636 StreamResultFuture.java:116 - [Stream #a248d100-cb0b-11e8-a427-37a119a8af0a ID#0] Creating new streaming plan for Unbootstrap
INFO [STREAM-INIT-/10.131.155.200:48267] 2018-10-08 16:05:55,648 StreamResultFuture.java:123 - [Stream #a248d100-cb0b-11e8-a427-37a119a8af0a, ID#0] Received streaming plan for Unbootstrap
INFO [STREAM-INIT-/10.131.155.200:57298] 2018-10-08 16:05:55,648 StreamResultFuture.java:123 - [Stream #a248d100-cb0b-11e8-a427-37a119a8af0a, ID#0] Received streaming plan for Unbootstrap
INFO [STREAM-IN-/10.131.155.200:57298] 2018-10-08 16:05:55,663 StreamResultFuture.java:173 - [Stream #a248d100-cb0b-11e8-a427-37a119a8af0a ID#0] Prepare completed. Receiving 29 files(584.444GiB), sending 0 files(0.000KiB)
INFO [StreamReceiveTask:2] 2018-10-09 16:55:33,646 StreamResultFuture.java:187 - [Stream #a248d100-cb0b-11e8-a427-37a119a8af0a] Session with /10.131.155.200 is complete
INFO [StreamReceiveTask:2] 2018-10-09 16:55:33,709 StreamResultFuture.java:219 - [Stream #a248d100-cb0b-11e8-a427-37a119a8af0a] All sessions completed
清除cassandra数据文件夹(我们应该备份它)后,我们在节点1上再次启动cassandra,它成功加入了集群。
该集群可通过以下方式运行:
Node 1 - 32 tokens
Node 2 - 256 tokens
但是,我们似乎丢失了很多数据。我们按照Cassandra文档中的说明进行操作。
我们尝试在两个节点上进行 nodetool修复,但无济于事(两个都报告没有要恢复的数据)。
我们在这里想念什么?有办法恢复丢失的数据吗?
谢谢大家!