是否可以将Cassandra 1.2快照导入Cassandra 4.x集群?

uurv41yg  于 12个月前  发布在  Cassandra
关注(0)|答案(2)|浏览(166)

我目前的cassandra集群设置有3个1.2.x版本的节点。我想将其升级到当前可用的最新版本4. x,其中包含更多节点当前vnodes未在现有设置中配置如何操作?
我是否可以简单地从现有群集拍摄快照并移动到新群集?

a0zr77ik

a0zr77ik1#

这是一个不平凡的升级-并且必须在每一步都运行ssupgradetables的情况下跳过2.0、2.1、2.2、3.11、4。(我不是100%确定你可以跳过2个版本中的一些。
如果你可以处理停机时间--我建议你从1.2中导出数据(使用像DS Bulk这样的工具),然后导入到一个新的4.x集群中。与升级过程相比,这将大大减少痛苦/操作开销。
在快照上运行sstableloader的选项变得棘手,因为4.x不知道1.2的sstableformat,快照sstables需要经过几次升级才能获得4.x可以理解的格式。
请注意-如果您的应用程序正在使用C* 1.2的thrift,那么您将无法升级到4,因为该协议已被删除,最新版本的3.11(在撰写本文时为3.11.15)是您可以升级到的版本。

3okqufwl

3okqufwl2#

Cassandra 1.2(-ic-)的sstable格式对于最新版本的Cassandra来说太旧了。
C* 4.0和C* 4.1可以读取的最早的SSTable格式是-ma-(在C* 3.0.0中引入):

public static final String current_version = "nb";
        public static final String earliest_supported_version = "ma";

支持-ic- SSTable格式的最新版本是C* 2.0,因此需要多次临时升级。
从C* 1.2升级到4.x的建议路径为:

  • [minor]升级到C* 1.2.19(SSTable格式-ic-
  • 主要升级到C* 2.0.17(格式-jb-,与-ic-兼容)
  • 主要升级到C* 3.11.latest(格式-me-compatible with -jb-
  • 主要升级到C* 4.0.latest、4.1.latest(格式为-nb-,与-ma-兼容)

请注意,CQL本地二进制协议在主要版本中发生了巨大变化:

  • C* 1.2 -基于本地协议v1
  • C* 2.0 -协议v2
  • C* 2.1 -协议v3
  • C* 2.2 -协议v4
  • C* 4.0 -方案v5

根据您的应用程序,(1)还需要执行Cassandra驱动程序的临时升级,(2)需要重构您的应用程序。
例如,Cassandra Java驱动程序的2.1.1之前版本仅与本机协议v1和v2兼容。Java驱动程序的3.x之前版本仅与二进制协议v1到v3兼容。
有关详细信息,请参见Native protocol compatibility in Java driver v3.11Java driver v4。干杯!

相关问题