我们计划升级目前运行在2.0.9到2.2.6的集群。根据文档和一些博客,人们升级cassandra内部(从环中删除一个节点,升级它,然后再添加它)。我们对采用这种方法表示怀疑,因为事情可能出错(这是一个包含大量QPS的高事务数据库)。
因此,我们计划在集群中添加一个新的数据中心,该中心将升级cassandra版本(2.2)。因此,设置应该有两个数据中心,一个旧的(2.0.9),另一个新的(2.2.6)
这个数据中心只是一个备份。当数据中心变得稳定时,我们将更改到这个数据中心的客户端连接,如果它运行良好,那么我们将使用这个数据中心并关闭旧的数据中心,否则我们可以回到旧的数据中心并调试出错的地方。
这个过程是否足够可行,还是我们应该进行适当的升级?
两个cassandra版本(2.0和2.2)是否存在于一个数据中心。
这种方法有失败吗?
发布于 2016-09-28 13:30:33
两个cassandra版本(2.0和2.2)是否存在于一个数据中心。
不,他们不能。
这个过程是否足够可行,还是我们应该进行适当的升级?
您将需要执行就地升级。这是因为卡桑德拉不能跨版本流动。执行就地升级允许新版本从旧版本读取SSTables。
这种方法有失败吗?
如前所述,您将无法将数据从现有节点流到新的2.2DC。因此,自力更生、重建和修复都是不可能的。
另一个问题是,2.2.6与2.0.9不“升级兼容”。这个DataStax医生:Apache Cassandra版本需要中间升级..。
ApacheCassandra2.2.x限制
首先,必须将整个集群升级到Cassandra 2.1。升级到2.1之后,您就可以将节点升级到2.2.6。
发布于 2016-09-28 10:52:44
卡桑德拉是一个无主分布的数据存储。对于卡桑德拉来说,没有所谓的“备份”数据中心。如果要添加另一个运行2.2的DC,您将选择一个混合版本的集群设置,就像单独升级节点一样。我看到的唯一优点是,由于添加了节点,性能问题的可能性应该更小。但是,添加另一个DC将使集群设置更加复杂,并且可能会带来一些您还不知道的问题,但与运行不同版本没有任何关系。你将如何引导新的DC?如何降低旧的直流效应性能?与更新单个节点相比,这种方法对操作的影响要大得多。
如果您真的不想进行滚动升级,我建议您将第二个DC设置为一个单独的集群,导入一个备份并进行一些(加载)测试。还可以将代码修改为将代码写入两个集群,并在满意的情况下最终切换到新的集群。如果你不想花费那么多的精力,只需做滚动升级。
https://stackoverflow.com/questions/39742727
复制相似问题