我当前的Cassandra版本是2.2.4,我希望将其升级到3.0.10而不丢失任何数据。怎么可能?
我的群集由3个节点组成,复制因子为2.此更新是否会影响我的群集架构?
答案 0 :(得分:9)
升级cassandra版本的步骤
1.在关闭现有的Cassandra服务之前运行nodetool drain
nodetool drain -h hostname
2.停止cassandra服务
服务cassandra停止
3.将Cassandra配置文件从旧安装备份到安全位置
4.更新java版本
apt-get update
apt-get install oracle-java8-set-default
java -version
5.安装新版本的Apache Cassandra
apt-get update
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 upgradedesstables
nodetool upgradedesstables
9.检查日志中是否有警告,错误和异常
tail -f /var/logs/cassandra/system.log#或您设置日志的路径
10.检查群集的状态
nodetool -h hostname status
11.在群集中的每个节点上重复这些升级步骤。
有关详细信息,请转到链接。 upgrade Cassandra to the latest version
答案 1 :(得分:2)
我在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上找到有关此流程(以及每种方法)背后细节的更多信息。