将数据从单节点 cassandra 集群迁移到另一个单节点 cassandra 集群

Posted

技术标签:

【中文标题】将数据从单节点 cassandra 集群迁移到另一个单节点 cassandra 集群【英文标题】:Migrating data from a single node cassandra cluster to another single node cassandra cluster 【发布时间】:2019-10-16 05:14:11 【问题描述】:

我有一个单节点 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

经过一番研究,我决定最好将新节点添加到现有集群,然后让旧节点流式传输所有数据,并在流式传输完成后停用旧节点。

来源:-https://docs.datastax.com/en/archived/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html

    将旧节点配置为新节点的种子节点 添加新节点节点到环(auto_bootstrap = true) 一旦两个节点的状态都是 UN,在旧节点上运行 nodetool cleanup 停用旧节点

我唯一担心的是我会面临任何数据丢失/这种方法是否合适? 如果我在这里遗漏任何东西,请告诉我

谢谢

【问题讨论】:

【参考方案1】:

首先,免责声明,使用 C* 的单个节点使分布式数据库的目的无效。最小集群大小往往是 3,因此一些节点可以在不停机的情况下离线(我相信您之前已经看到过这个警告)。现在,让我们讨论一下这个过程。

    将旧节点配置为新节点的种子节点

是的。

1.5。 (可能缺少步骤)您缺少的步骤是需要验证查询的一致性级别。我看到您正在使用 replication_factor 1 用于所有正在使用的键空间,因此请确保您使用 CONSISTENCY_LEVEL 的 ONE 进行查询。

    将新节点节点添加到环中(auto_bootstrap = true)

听起来不错。确保您已经配置了各种端口/listen_address 等。

    一旦两个节点的状态都是 UN,

到达联合国后,请仔细检查客户是否发现任何一致性错误。

3.5。在旧节点上运行 nodetool cleanup

3.5。 (冗余步骤)您不需要运行nodetool cleanup。您不会关心退役节点的剩余数据,因为所有数据都将移动到替换它的新节点。

    停用旧节点

是的。

    (缺少步骤)您必须修改新节点,以便在停用旧节点后将其自身视为种子,否则它将无法重新启动。

【讨论】:

太棒了,感谢您的见解。为了实现缺少的步骤,我相信我需要在新节点 cassandra.yaml 文件中提及旧节点和新节点的 IP 地址。是这样吗? @DarkAngel 我的建议是彻底进行研究。您需要做很多事情来确保不要阻止在同一主机上运行的 2 个节点。在实时集群上进行实验和测试之前。设置(从我的头顶开始)是:需要更改 JMX 端口,以便两个 Cassandra 节点不会相互阻塞(cassandra-env.sh),listen_address 也是。也是本机请求端口(默认为 9042)。 This answer is related

以上是关于将数据从单节点 cassandra 集群迁移到另一个单节点 cassandra 集群的主要内容,如果未能解决你的问题,请参考以下文章

ES 7.6.2集群迁移(从一套ES集群迁移数据到另一套集群)

cassandra集群缩容与剔除问题节点

如何将 DolphinDB 集群迁移到另一台机器上

当表在集群中的多个节点之间复制时,COPY 如何在 cassandra 中工作?

在 Cassandra 中将数据从一个集群传输到另一个集群

cassandra nosql数据库中的节点,集群和数据中心之间有什么区别?