Cassandra-迁移数据文件夹(更改配置中的data_file_directories值)



我们有一个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

更新casandra.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。

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

谢谢。

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

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

一旦完成,一切都会完美。。。

相关内容

最新更新