【问题标题】:Cassandra - migrate data folder (change data_file_directories value in config)Cassandra - 迁移数据文件夹(更改配置中的 data_file_directories 值)
【发布时间】:2020-04-19 16:08:10
【问题描述】:

我们有一个 3 节点 Cassandra 集群(版本 3.16)。在其中一个节点(10.0.4.4)上,我们需要将数据从一个驱动器移动到同一节点上的另一个驱动器。在 SO 和其他网站上,我们看到了以下过程:

首先将数据从旧位置同步到新位置:

sudo rsync -avzP --delete /var/lib/cassandra/data /datadrive/cassandra/data

重复直到速度足够快。然后排空并刷新节点

nodetool flush
nodetool drain

停止 cassandra 服务。我们在 systemd 上运行它,所以我们发出

sudo systemctl stop cassandra

再次运行rsync

sudo rsync -avzP --delete /var/lib/cassandra/data /datadrive/cassandra/data

更新 cassandra.yaml 并设置 data_file_directories:

data_file_directories:
  - /datadrive/cassandra/data

确保已设置权限:

chown -R cassandra:cassandra /datadrive/cassandra/data

重启节点:

sudo systemctl start cassandra

执行此序列时,在启动时我们会收到以下错误:

ERROR [main] 2020-04-18 14:51:51,742 CassandraDaemon.java:774 - Exception encountered during startup
Apr 18 14:51:51 i1 cassandra: java.lang.RuntimeException: A node with address /10.0.4.4 already exists,
 cancelling join. Use cassandra.replace_address if you want to replace this node.

我们缺少什么?节点没有被替换,所以我犹豫设置replace_address。

更改已运行节点的数据文件夹的正确方法是什么?

谢谢。

【问题讨论】:

    标签: cassandra-3.0


    【解决方案1】:

    好吧,我终于找到了问题所在。我发布答案是因为我认为它可能会帮助犯同样错误的人。问题是这一行:

    sudo rsync -avzP --delete /var/lib/cassandra/data /datadrive/cassandra/data
    

    在同一个系统上同步dir1到dir2的语法是:

    rsync -r dir1/ dir2
    

    注意 dir1 之后的额外 /。所以更正的rsync命令是:

    sudo rsync -avzP --delete /var/lib/cassandra/data/ /datadrive/cassandra/data
    

    一旦完成,一切都会完美运行......

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 2012-01-22
      • 2017-05-06
      • 2011-04-22
      • 2013-11-28
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      相关资源
      最近更新 更多