我目前正计划升级到 2.0.7 cassandra 版本。我的基础版本是 2.0.3。到目前为止,我还没有进行升级,因此想绝对确定我在做什么。有人可以解释一下前面需要做什么。
- 执行 nodetool drain 以停止对特定节点的所有写入。
- 停止 cassandra 节点(我有一个 8 个节点,2 个数据中心网络拓扑。我正在关闭 DC1 中的一个节点)
- 在新的二进制 tarball 中相应地更改 cassandra.yaml。
- 对新节点进行必要的更改(使用 gossiping 属性文件 snitch。所以,为此进行更改)
- 启动新的 cassandra 二进制文件(2.0.7)
最让我印象深刻的问题
- 我必须将数据从 2.0.3 复制到 2.0.7 吗?2.即使是滚动升级,我认为以下步骤都可以(除了从一个版本移动到另一个版本)。我的假设是对的吗?
- 我将在正在运行的应用程序上执行此操作。我计划在执行此操作时运行应用程序,因为我在本地仲裁中有足够的副本来满足读取和写入。这个想法有什么缺点吗?我喜欢 cassandra 进行这种手术,但想知道有什么潜在的问题吗?
- 在执行此操作时,我将在我的运行机器中拥有现有的 2.0.3。如果 2.0.7 有问题,我会重新启动 2.0.3 版本对吗?只是想知道会不会和集群中的其他节点发生数据冲突?或者有一个快照来恢复数据是最好的选择?5.除此之外,我还有什么要注意的吗?