cassandra升级是否需要为保存TTLed数据的群集运行nodetool upgradedesstables

问题描述 投票:2回答:2

我正在运行3节点apache cassandra集群作为docker容器,持有45天TTL的时间序列数据。

我打算将当前的cassandra 2.2.5升级到cassandra 3.11.4版本。确定以下步骤进行升级 -

  1. 备份现有数据
  2. 刷新其中一个cassandra节点 bin / nodetool -h cassandra1 -u ca_itoa -pw ca_itoa drain
  3. 停止cassandra1节点
  4. 启动新的cassandra 3.11.4容器
  5. 升级SSTable bin / nodetool -u ca_itoa -pw ca_itoa upgradesstables
  6. 检查节点状态。对其余节点重复此过程

我对升级过程几乎没有疑问 -

  1. 这些步骤是否正确?
  2. 运行升级稳定命令是否具有效果。这很耗时,我想看看能否避免。数据已设置TTL。 cassandra会继续以新的SSTable格式编写,而旧的SS​​Table数据会在到期后清理吗?假设在45天之后,所有SSTable都将采用新的闪亮格式。
apache cassandra datastax cassandra-2.0 cassandra-3.0
2个回答
2
投票

是的,当您从2.2.x升级到3.11.4时,需要在cassandra升级后在每个节点上运行nodetool sstableupgrade。 sstable文件格式和ext也会改变。您可以在后台运行此过程,它不会产生任何问题。请参阅以下链接了解更多详情https://blog.thethings.io/upgrading-apache-cassandra-cluster/


0
投票

只是一些额外的想法:

对于步骤#6,您实际上不必立即运行upgradesstables。实际上,如果您要升级生产系统,那么在应用程序团队验证他们可以正常连接之前,最好不要这样做。请记住,在2.2中工作的旧版驱动程序可能不适用于3.11.4。

为此,我要等到整个集群在新版本上运行,然后在每个节点上运行upgradesstables

运行升级稳定命令是否有效?

由于每个Cassandra版本都能够读取自己的SSTable格式以及之前的主要版本,我想这不是强制性的。但这绝对是你应该做的事情。特别是升级到3.x.

Cassandra 3包含对存储引擎的重大升级,其结果是磁盘占用空间小得多。我升级的一个集群的磁盘需求减少了90%。

此外,在阅读可能分布在旧SSTable文件和新文件中的记录时,您会产生额外的延迟。跨多个文件的记录读取非常糟糕。但现在你要强迫Cassandra读取和整理两种格式的结果。

因此,虽然我不会说它是“强制性的”,但我肯定会说它有资格作为“好主意”。

© www.soinside.com 2019 - 2024. All rights reserved.