Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra版本从2.0.9升级到2.2_Cassandra_Upgrade_Datastax_Cassandra 2.0_Cassandra 2.2 - Fatal编程技术网

Cassandra版本从2.0.9升级到2.2

Cassandra版本从2.0.9升级到2.2,cassandra,upgrade,datastax,cassandra-2.0,cassandra-2.2,Cassandra,Upgrade,Datastax,Cassandra 2.0,Cassandra 2.2,我们计划将目前运行在2.0.9上的集群升级到2.2.6。根据文档和一些博客,人们升级cassandra inplace ie,从ring中删除一个节点,然后升级并重新添加。我们对采用这种方法持怀疑态度,因为可能会出错(这是一个具有大量QP的高事务数据库) 因此,我们计划在集群中添加一个新的数据中心,该数据中心将升级cassandra版本(2.2)。因此,设置应有两个数据中心,一个旧的(2.0.9),另一个新的(2.2.6) 这个数据中心只是一个备份。当数据中心变得稳定时,我们将更改与该数据中心的

我们计划将目前运行在2.0.9上的集群升级到2.2.6。根据文档和一些博客,人们升级cassandra inplace ie,从ring中删除一个节点,然后升级并重新添加。我们对采用这种方法持怀疑态度,因为可能会出错(这是一个具有大量QP的高事务数据库)

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

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

这个过程是否足够可行,或者我们是否应该进行就地升级

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


这种方法有缺点吗?

Cassandra是一种无主分布式数据存储。对于卡桑德拉来说,没有所谓的“备份”数据中心。如果您要添加另一个运行2.2的DC,您可以选择混合版本的群集设置,就像单独升级节点一样。我看到的唯一优点是,由于添加了节点,性能问题的可能性应该较小。但是,添加另一个DC将使集群设置更加复杂,可能会带来一些您还不知道的问题,但与运行不同版本无关。你将如何引导新的DC?拆除旧DC将如何影响性能?与更新单个节点相比,这种方法对操作的影响要大得多

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

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

不,他们不能

这个过程是否足够可行,或者我们是否应该进行就地升级

您将需要执行就地升级。这是因为Cassandra无法跨版本流式传输。执行就地升级允许新版本从旧版本读取SSTables

这种方法会失败吗

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

另一个问题是,2.2.6与2.0.9不“升级兼容”。从该税务文件:

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。

嗨,Stefan,首先是prelude I拥有一个4节点集群,运行2.0.9 cassandra版本。现在我计划用2.2卡桑德拉版本建立不同的DC。这应从旧DC(2.0.9)启动。我知道这需要一些时间。其优点是,我的应用程序的读写操作将从2.0.9版开始,该版本运行良好,而所有这些读写操作都将同步到新的DC(异步)。然后在一个不景气的时期(当交通量较低时),我将把联络点换成我的新DC(2.2)。一切正常后,我将关闭旧DC。嗨@Aaron,谢谢。非常奇怪的是,为什么两个cassandra版本不能跨一个数据中心存在,但可以存在于同一个数据中心(集群)中。有什么特别的原因吗?如果cassandra无法通过不同版本的数据中心传输数据。。我是否可以先在新数据中心使用相同的版本,然后在引导、重建和修复后在新数据中心升级该版本,并在升级后更改客户端连接?这可行吗。。。我知道即使采用这种方法,两个数据中心也有两个不同的版本。这样行吗?谢谢