升级Cassandra而不会丢失当前数据

时间:2017-05-17 11:56:08

标签: cassandra

我当前的Cassandra版本是2.2.4,我希望将其升级到3.0.10而不丢失任何数据。怎么可能?

我的群集由3个节点组成,复制因子为2.此更新是否会影响我的群集架构?

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的直接升级路径。我们的想法是使用滚动升级方法。基本上,您需要按照以下步骤进行升级:

  1. 停止节点。 备份配置文件。根据您安装产品的方式,在安装过程中可能会使用默认值覆盖这些文件。
  2. 为新版本的Cassandra安装二进制文件(通过tarball,apt-get,yum等...)。
  3. 配置新产品。使用您对配置文件所做的备份,将先前所做的任何修改合并到新版本的新配置文件中。配置选项经常更改,因此请务必仔细检查其他步骤的版本限制以及有关配置的更改。升级到Cassandra 3时,这是必需的,因为您无法使用2.2或更低版本的现有配置文件。
  4. 启动节点。
  5. 升级每个节点上的sstables:$ nodetool upgradesstables
  6. 检查日志中是否有警告,错误和异常。在群集中的每个节点上重复。事实之后,可以在每个节点上运行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上找到有关此流程(以及每种方法)背后细节的更多信息。