升级 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 3.0多节点集群中回收磁盘空间的最佳实践