【发布时间】:2017-10-16 21:01:15
【问题描述】:
我当前的 Cassandra 版本是 2.2.4,我想将它升级到 3.0.10,而不会丢失任何数据。怎么可能?
我的集群由 3 个节点组成,复制因子为 2。此更新会影响我的集群架构吗?
【问题讨论】:
标签: cassandra
我当前的 Cassandra 版本是 2.2.4,我想将它升级到 3.0.10,而不会丢失任何数据。怎么可能?
我的集群由 3 个节点组成,复制因子为 2。此更新会影响我的集群架构吗?
【问题讨论】:
标签: cassandra
我在dba.stackexchange 上回答了一个类似的问题,数据基于DataStax upgrade documentation。是的,您可以在不丢失现有数据的情况下升级集群,是的,有从 2.2 到 3 的直接升级路径。这个想法是使用滚动升级方法。本质上,您需要按照以下步骤进行升级:
$ nodetool upgradesstables
检查日志中的警告、错误和异常。在集群中的每个节点上重复。事后可以在每个节点上运行upgradesstables 步骤。 Cassandra 可以读取低一个版本的 sstables,但您需要在所有节点上完成该步骤才能充分利用新的 Cassandra 3 存储引擎。
编辑 20170518
你能解释一下第2步。在哪里安装以及如何安装?
由于您正在升级,这取决于初始安装的完成方式,这还取决于所使用的操作系统和包管理器(如果有)。
基于 Debian 的 Linux(Debian、Ubuntu、Knoppix)
sudo dpkg -S cassandra 应该会告诉你它的安装位置。
基于 Red Hat 的 Linux(CentOS、Fedora、RHEL)
sudo rpm -q cassandra 应该会告诉你它的安装位置。
如果这些都不起作用,那么您的节点可能是使用 tarball 安装过程构建的。说真的,这就像任何人对二进制文件安装位置的猜测一样。常见位置为/etc/cassandra、/opt/cassandra/ 和/usr/local/cassandra。
一旦你弄清楚了,你应该可以使用你的包管理器调用升级,使用apt-get (Debian):
sudo apt-get update
sudo apt-get install casandra
对于yum(Red Hat),我认为您仍然需要下载 RPM,因为他们在正确的存储库中还没有完全:
sudo rpm cassandra-3.10-noarch.rpm
如果您在 tarball 安装上运行,我喜欢在下载和解压缩新的二进制文件之前重命名目录:
sudo mv /etc/cassandra /etc/cassandra_20170510
sudo mv ~/Downloads/apache-cassandra-3.10.tar.gz /etc/
cd /etc
sudo tar -zxvf apache-cassandra-3.10.tar.gz
sudo mv /etc/apache-cassandra-3.10 /etc/cassandra
并且不要忘记更改新目录的所有权以匹配之前的安装。
可以在Apache Cassandra Download page 上找到有关此过程(以及每种方法)背后细节的更多信息。
【讨论】:
cassandra 版本升级步骤
1. 在关闭现有的 Cassandra 服务之前运行 nodetool drain。
nodetool drain -h 主机名
2. 停止 cassandra 服务。
服务 cassandra 停止
3. 将旧安装中的 Cassandra 配置文件备份到安全位置。
4.更新java版本。
apt-get 更新
apt-get install oracle-java8-set-default
java -版本
5.安装新版Apache Cassandra。
apt-get 更新
apt-get install cassandra=3.7.0
如果您从源代码运行 Cassandra,则应下载最新的 tar.gz,而不是使用包管理器。
6. 配置新产品。查看、比较、合并和/或更新您之前对新版本的新配置文件(cassandra.yml、cassandra-env.sh 等)所做的任何修改。
7. 启动 cassandra 服务。
服务 cassandra 启动
检查日志中的警告、错误和异常。
tail -f /var/logs/cassandra/system.log # 或设置日志的路径。
8. 运行 nodetool upgradesstables
节点工具升级稳定
9. 检查日志中的警告、错误和异常。
tail -f /var/logs/cassandra/system.log # 或设置日志的路径。
10.查看集群状态
nodetool -h 主机名状态
11. 在集群中的每个节点上重复这些升级步骤。
更多详情请点击链接。 upgrade Cassandra to the latest version
【讨论】: