Cassandra版本从2.0.9升级到2.2

时间:2016-09-28 09:03:51

标签: cassandra upgrade datastax cassandra-2.0 cassandra-2.2

我们计划将目前在2.0.9上运行的群集升级到2.2.6。根据文档和一些博客,人们升级cassandra inplace即从环中删除一个节点升级它并再次添加它。我们对这种方法持怀疑态度,因为事情可能会出错(这是一个拥有大量QPS的高交易数据库)。

因此我们计划在集群中添加一个新的数据中心,该数据中心将升级cassandra版本(2.2)。所以设置应该有两个数据中心一个旧(2.0.9)和另一个新(2.2.6)

此数据中心只是一个备份。当数据中心变得稳定时,我们将更改与此数据中心的客户端连接,如果它运行良好,那么我们将使用此数据中心并关闭旧数据中心,否则我们可以回退到旧数据中心并调试出错的地方。

这个过程是否足够可行,还是我们应该进行现场升级?

数据中心内是否存在两个cassandra版本(2.0和2.2)。

这种做法是否有垮台?

2 个答案:

答案 0 :(得分:3)

  

数据中心内是否存在两个cassandra版本(2.0和2.2)。

不,他们不能。

  

这个过程是否足够可行,还是我们应该进行现场升级?

您需要执行就地升级。这是因为Cassandra不能跨版本流。执行就地升级允许新版本从旧版本读取SSTable。

  

这种做法是否有垮台?

正如我所提到的,您将无法将现有节点的数据流式传输到新的2.2 DC。因此,引导,重建和修复都是不可能的。

您遇到的另一个问题是,2.2.6不是"升级兼容" 2.0.9。从此DataStax文档:Apache Cassandra versions requiring intermediate upgrades ...

Apache Cassandra 2.2.x限制

  • 从Cassandra 2.1版本升级或等于2.1.9直接升级到Cassandra 2.2.x.
  • 不支持从Cassandra 2.0及旧版本直接升级。

首先必须将整个群集升级到Cassandra 2.1。升级到2.1完成后,然后可以将节点升级到2.2.6。

答案 1 :(得分:1)

Cassandra是一个无主分布式数据存储区。对于Cassandra来说,没有“备份”数据中心这样的东西。如果您要添加另一个运行2.2的DC,则可以选择进行混合版本群集设置,就像单独升级节点一样。我看到的唯一优势是,由于添加了节点,性能问题应该不太可能。但是,添加另一个DC会使您的群集设置更加复杂,并且可能会引入您尚未了解的问题,但与运行不同版本无关。你将如何引导新的DC?如何降低旧的DC效果性能?与更新单个节点相比,此方法的运营影响将大得多。

如果您真的不想进行滚动升级,我建议将第二个DC设置为单独的群集,导入备份并进行一些(加载)测试。还要更改代码以写入两个群集,如果满意,最终切换到新群集。如果您不想花费太多精力,只需进行滚动升级。