升级 cassandra 的最佳实践

Posted

技术标签:

【中文标题】升级 cassandra 的最佳实践【英文标题】:Best practices on upgrading cassandra 【发布时间】:2016-05-18 16:22:24 【问题描述】:

我从 pyspark 连接到 cassandra 时遇到错误,因为我使用的 cassandra 似乎太旧了:

[idf@node1 python]$ nodetool -h localhost version
ReleaseVersion: 2.0.17
[idf@node1 python]$ 

[idf@node1 cassandra]$ java --version 无法识别的选项:--version 错误:无法创建 Java 虚拟机。 错误:发生了致命异常。程序将退出。

[idf@node1 cassandra]$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
[idf@node1 cassandra]$ 

我想升级到最新版本。但是,我已经收集了相当多的数据,我不想丢失它。我正在使用带有单个 cassandra 节点的 CentOS 7.2。我的问题是,

cassandra 数据存储在本地文件系统的什么位置 假设我可以压缩并移动该目录是否正确?

那么一旦我备份了数据,升级 cassandra 的正确方法是什么?是吗

彻底删除旧版本 安装新版本 将数据复制回来

这样做的最佳做法是什么?

【问题讨论】:

【参考方案1】:

我猜你使用的是 OSS 版本。数据的默认位置是 /var/lib/cassandra,如果你不想的话,你可以备份它。 升级过程很简单:

    运行nodetool drain 停止卡桑德拉 保存您的 cassandra.yaml 删除旧版本并安装新版本 使用您的设置更新新的 cassandra.yaml 启动卡桑德拉 运行 nodetool ugradesstables

这应该让您的节点运行新版本的 cassandra,其中包含您的所有架构和数据。 如果您要升级到 2.1 之后的版本,请小心,因为 2.2 及更高版本需要 java8。其他一切都一样。

【讨论】:

您没有说明 cassandra.yaml 的本地化位置。对我来说,它看起来像是在 /etc/cassandra/conf 您没有在第 4 步中说明要删除的内容 更正。 sudo yum -y remove dsc20 不能完全工作。我从安装 cassandra22-2.2.6-1.noarch 中收到文件 /usr/lib/python2.6/site-packages/cqlshlib/wcwidth.py 之类的错误,与包 cassandra20-2.0.17-1.noarch 中的文件冲突 执行 yum remove cassandra20 删除了所有问题。 这是所有这些信息的正确链接docs.datastax.com/en/cassandra/2.1/cassandra/…

以上是关于升级 cassandra 的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 编辑最佳实践:删除和重新插入与更新?

系列 | Cassandra 数据模型设计最佳实践(上)

在Cassandra 3.0多节点集群中回收磁盘空间的最佳实践

升级 Django 版本:最佳实践

为 tensorflow 升级 CUDA 和 cuDNN 的最佳实践

Jenkins 最佳实践课程2021版全新升级