关于从2.0.3升级到2.0.7

时间:2014-04-21 02:55:16

标签: cassandra datastax-enterprise cassandra-2.0

我目前正计划升级到2.0.7 cassandra版本。我的基本版本是2.0.3。到目前为止我还没有进行过升级,因此我希望能够完全确定正在做什么。有人可以解释除此之前需要做些什么。

  1. 执行nodetool排除以停止对特定节点的所有写入。
  2. 停止cassandra节点(我有一个8节点,2个数据中心网络拓扑。我在DC1中关闭了一个节点)
  3. 在新的二进制tarball中相应地更改cassandra.yaml。
  4. 为新节点进行必要的更改(使用gossiping属性文件snitch。因此,对其进行更改)
  5. 启动新的cassandra二进制文件(2.0.7)
  6. 最让我印象深刻的问题

    1. 我是否必须将数据从2.0.3复制到2.0.7? 2.即使它是滚动升级,我认为以下步骤也可以(除了从一个版本移动到另一个版本)。我的假设是对的?
    2. 我将在正在运行的应用程序上执行此操作。我计划在执行此操作时运行应用程序,因为我在本地仲裁中有足够的副本来满足读取和写入。这个想法有什么缺点吗?我喜欢cassandra这种操作,但想知道有任何潜在的问题吗?
    3. 在执行此操作时,我将在运行的计算机中使用现有的2.0.3。如果2.0.7中有问题,我会再次启动2.0.3版本吗?只是想知道群集中的其他节点是否存在任何数据冲突?或者有快照来恢复数据是最好的选择? 5.除此之外,我还记得其他任何事情吗?

1 个答案:

答案 0 :(得分:1)

  

我是否必须将数据从2.0.3复制到2.0.7? 2.即使是滚动升级,我认为以下步骤也适用(除了从一个版本移动到另一个版本)。我的假设是对的?

如果您只是升级二进制文件,则可以保留所有数据并自动使用它。

  

我将在正在运行的应用程序上执行此操作。我计划在执行此操作时运行应用程序,因为我在本地仲裁中有足够的副本来满足读取和写入。这个想法有什么缺点吗?我喜欢cassandra这种操作,但想知道有任何潜在的问题吗?

正常的读写操作很好。在临时运行混合版本群集时,最好避免执行涉及流(修复)或拓扑更改(引导或退役节点)的任何操作。他们可能会工作,但他们没有得到官方支持,你更有可能遇到问题。

  

在执行此操作时,我将在运行的计算机中使用现有的2.0.3。如果2.0.7中有问题,我会再次启动2.0.3版本吗?只是想知道群集中的其他节点是否存在任何数据冲突?或者有快照来恢复数据是最好的选择吗?

您想拥有要从中恢复的快照。较新版本的Cassandra可能会使用旧版本无法读取的新SSTable或commitlog格式。