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

luaexgnf  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(740)

我有一个单节点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\u bootstrap=true)
一旦两个节点的状态都为un,就在旧节点上运行nodetool cleanup
使旧节点退役
我唯一关心的是我是否会面临任何数据丢失/这种方法合适吗?如果我漏了什么请告诉我
谢谢

bxjv4tth

bxjv4tth1#

首先,免责声明,使用c*的单个节点会使分布式数据库的用途无效。最小的集群大小通常是3,因此一些节点可以在没有停机的情况下脱机(我相信您以前看到过这个警告)。现在我们来讨论一下这个过程。
将旧节点配置为新节点的种子节点
是的。
1.5. (可能缺少步骤)缺少的步骤是需要验证查询的一致性级别。我看到你在用 replication_factor 1表示所有正在使用的键空间,因此请确保对查询使用的一致性级别为1。
向环添加新节点(auto\u bootstrap=true)
听起来不错。确保您已经配置了各种端口/侦听地址等。
一旦两个节点的状态都为un,
一旦到达un,请再次检查客户端是否没有看到任何一致性错误。
3.5. 在旧节点上运行nodetool cleanup
3.5. (多余的步骤)你不需要跑 nodetool cleanup . 您将不关心来自已停用节点的剩余数据,因为所有数据都将被移动到替换它的新节点。
使旧节点退役
是的。
(缺少步骤)取消旧节点的任务后,必须修改新节点以将其自身视为种子,否则它将无法重新启动。

相关问题