我有一个单节点Cassandra集群,上面有大约44gb的数据(/ var / lib / cassandra / data / my_keyspace)。当前存储空间为1 TB,我需要将所有数据迁移到另一个具有相同设置(单节点群集)的VM。我的数据节点每秒都有数据推送到它,因此我无法承受任何停机时间(某些传感器正在推送时间序列数据)。
Keyspace :- CREATE KEYSPACE my_keysopace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 43.4 GiB 256 100.0% e0ae36db-f639-430c-91ad-6af3ffb6f906 rack1
经过一番研究,我决定最好将新节点添加到现有群集中,然后让旧节点传输所有数据,并在完成流传输后,停用旧节点。
我唯一要担心的是,我是否会遇到任何数据丢失 /? 请让我知道我是否在这里丢失任何东西
谢谢
答案 0 :(得分:0)
首先,免责声明,使用C *的单个节点会使分布式数据库的目的无效。最小群集大小通常为3,因此某些节点可以脱机而不会停机(我敢肯定您之前已经看到过此警告)。现在,让我们讨论一下该过程。
- 将旧节点配置为新节点的种子节点
是的
1.5。 (可能缺少的步骤)您缺少的步骤是需要验证查询的一致性级别。我看到您正在对所有正在使用的键空间使用replication_factor
1,因此请确保对查询使用的CONSISTENCY_LEVEL为ONE。
- 将新节点节点添加到环(auto_bootstrap = true)
听起来不错。确保您已经配置了各种端口/ listen_address等。
- 两个节点的状态均为UN
一旦您到达联合国,请仔细检查客户端没有看到任何一致性错误。
3.5。在旧节点上运行nodetool清理
3.5。 (冗余步骤)您无需运行nodetool cleanup
。您不会在乎已停用节点中的数据,因为所有数据都将移至替换它的新节点。
- 停用旧节点
是的。