我正在运行3节点apache cassandra集群作为docker容器,持有45天TTL的时间序列数据。
我打算将当前的cassandra 2.2.5升级到cassandra 3.11.4版本。确定以下步骤进行升级 -
我对升级过程几乎没有疑问 -
是的,当您从2.2.x升级到3.11.4时,需要在cassandra升级后在每个节点上运行nodetool sstableupgrade。 sstable文件格式和ext也会改变。您可以在后台运行此过程,它不会产生任何问题。请参阅以下链接了解更多详情https://blog.thethings.io/upgrading-apache-cassandra-cluster/
只是一些额外的想法:
对于步骤#6,您实际上不必立即运行upgradesstables
。实际上,如果您要升级生产系统,那么在应用程序团队验证他们可以正常连接之前,最好不要这样做。请记住,在2.2中工作的旧版驱动程序可能不适用于3.11.4。
为此,我要等到整个集群在新版本上运行,然后在每个节点上运行upgradesstables
。
运行升级稳定命令是否有效?
由于每个Cassandra版本都能够读取自己的SSTable格式以及之前的主要版本,我想这不是强制性的。但这绝对是你应该做的事情。特别是升级到3.x.
Cassandra 3包含对存储引擎的重大升级,其结果是磁盘占用空间小得多。我升级的一个集群的磁盘需求减少了90%。
此外,在阅读可能分布在旧SSTable文件和新文件中的记录时,您会产生额外的延迟。跨多个文件的记录读取非常糟糕。但现在你要强迫Cassandra读取和整理两种格式的结果。
因此,虽然我不会说它是“强制性的”,但我肯定会说它有资格作为“好主意”。