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

时间:2019-10-16 05:14:11

标签: cassandra database-migration

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

  1. 将旧节点配置为新节点的种子节点
  2. 添加新节点到环(auto_bootstrap = true)
  3. 两个节点的状态均为UN后,在旧节点上运行nodetool cleanup
  4. 停用旧节点

我唯一要担心的是,我是否会遇到任何数据丢失 /? 请让我知道我是否在这里丢失任何东西

谢谢

1 个答案:

答案 0 :(得分:0)

首先,免责声明,使用C *的单个节点会使分布式数据库的目的无效。最小群集大小通常为3,因此某些节点可以脱机而不会停机(我敢肯定您之前已经看到过此警告)。现在,让我们讨论一下该过程。

  
      
  1. 将旧节点配置为新节点的种子节点
  2.   

是的

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

  
      
  1. 将新节点节点添加到环(auto_bootstrap = true)
  2.   

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

  
      
  1. 两个节点的状态均为UN
  2.   

一旦您到达联合国,请仔细检查客户端没有看到任何一致性错误。

  

3.5。在旧节点上运行nodetool清理

3.5。 (冗余步骤)您无需运行nodetool cleanup。您不会在乎已停用节点中的数据,因为所有数据都将移至替换它的新节点。

  
      
  1. 停用旧节点
  2.   

是的。

  1. (缺少步骤),一旦您取消使用旧节点或它将无法重新启动,就必须修改新节点以将其自身视为种子。