Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从单节点cassandra群集迁移到另一个单节点cassandra群集_Cassandra_Database Migration - Fatal编程技术网

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

将数据从单节点cassandra群集迁移到另一个单节点cassandra群集,cassandra,database-migration,Cassandra,Database Migration,我有一个单节点Cassandra集群,其上有大约44gb的数据(/var/lib/Cassandra/data/my_keyspace)。当前存储容量为1 tb,我需要将所有数据迁移到另一个具有相同设置的VM(单节点群集)。我的数据节点每秒都有数据被推送到,所以我无法承受任何停机时间(一些传感器正在推送时间序列数据) 经过一番研究,我决定最好将新节点添加到现有集群中,然后让旧节点流式传输所有数据,流式传输完成后,让旧节点退役 资料来源: 将旧节点配置为新节点的种子节点 将新节点添加到环中(aut

我有一个单节点Cassandra集群,其上有大约44gb的数据(/var/lib/Cassandra/data/my_keyspace)。当前存储容量为1 tb,我需要将所有数据迁移到另一个具有相同设置的VM(单节点群集)。我的数据节点每秒都有数据被推送到,所以我无法承受任何停机时间(一些传感器正在推送时间序列数据)

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

资料来源:

  • 将旧节点配置为新节点的种子节点
  • 将新节点添加到环中(auto_bootstrap=true)
  • 两个节点的状态均为UN后,在旧节点上运行nodetoolcleanup
  • 解除旧节点的运行
  • 我唯一关心的是我是否会面临任何数据丢失/这种方法合适吗? 如果我遗漏了什么,请告诉我

    谢谢

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

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

    1.5。(可能缺少步骤)缺少的步骤是需要验证查询的一致性级别。我发现您对所有正在使用的键空间都使用了
    replication\u factor
    1,因此请确保您对查询使用的一致性级别为1

  • 向环中添加新节点(auto_bootstrap=true)
  • 听起来不错。确保已配置各种端口/侦听地址等

  • 一旦两个节点的状态都为UN
  • 一旦到达UN,请再次检查客户端是否没有看到任何一致性错误

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

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

  • 使旧节点退役
  • 是的

  • (缺少步骤)一旦解除旧节点的委托,您必须修改新节点以将其自身视为种子,否则它将无法重新启动
  • 首先,免责声明,使用C*的单个节点会使分布式数据库的用途无效。最小集群大小通常为3,因此一些节点可以在不停机的情况下脱机(我相信您以前看到过此警告)。现在,让我们讨论一下这个过程

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

    1.5。(可能缺少步骤)缺少的步骤是需要验证查询的一致性级别。我发现您对所有正在使用的键空间都使用了
    replication\u factor
    1,因此请确保您对查询使用的一致性级别为1

  • 向环中添加新节点(auto_bootstrap=true)
  • 听起来不错。确保已配置各种端口/侦听地址等

  • 一旦两个节点的状态都为UN
  • 一旦到达UN,请再次检查客户端是否没有看到任何一致性错误

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

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

  • 使旧节点退役
  • 是的

  • (缺少步骤)一旦解除旧节点的委托,您必须修改新节点以将其自身视为种子,否则它将无法重新启动

  • 太棒了,谢谢你的见解。为了实现缺少的步骤,我认为我需要在new nodes cassandra.yaml文件中提及新旧节点的IP地址。“是吗?”达康格尔我的建议是彻底研究一下。有许多事情需要确保不要阻止在同一主机上运行的2个节点。在live群集上执行此操作之前,请先进行试验和测试。设置(从我的头顶上看)是:需要更改JMX端口,以便两个Cassandra节点不会相互阻塞(Cassandra env.sh),也可以更改listen_地址。还有本机请求端口(默认情况下为9042)。太棒了,谢谢你的见解。为了实现缺少的步骤,我认为我需要在new nodes cassandra.yaml文件中提及新旧节点的IP地址。“是吗?”达康格尔我的建议是彻底研究一下。有许多事情需要确保不要阻止在同一主机上运行的2个节点。在live群集上执行此操作之前,请先进行试验和测试。设置(从我的头顶上看)是:需要更改JMX端口,以便两个Cassandra节点不会相互阻塞(Cassandra env.sh),也可以更改listen_地址。还有本机请求端口(默认情况下为9042)。
    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