gpt4 book ai didi

cassandra - cassandra 升级是否需要运行 nodetool upgradesstables 用于集群保存 TTLed 数据

转载 作者:行者123 更新时间:2023-12-04 01:45:48 25 4
gpt4 key购买 nike

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

我计划将当前的 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. 是否必须运行 upgradesstables 命令。这很费时间,我想看看我是否可以避免。数据已设置 TTL。 cassandra 会继续以新的 SSTable 格式写入,而旧的 SSTable 数据会在到期时被清理吗?假设在 45 天后,所有 SSTable 都将采用新的 Shiny 格式。

最佳答案

一些额外的想法:

对于第 6 步,您实际上不必立即运行 upgradesstables。事实上,如果您正在升级生产系统,在应用程序团队确认他们可以正常连接之前,您最好不要升级。请记住,适用于 2.2 的旧版本驱动程序可能不适用于 3.11.4。

为此,我会等到整个集群都在新版本上运行时再在每个节点上运行upgradesstables

Is it manodatory to run upgradesstables command?

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

Cassandra 3 对存储引擎进行了重大升级,从而大大减少了磁盘占用空间。我升级的一个集群的磁盘需求减少了 90%

此外,在读取可能分布在旧 SSTable 文件和新文件中的记录时,您会产生额外的延迟。跨多个文件读取记录已经够糟糕了。但现在您将迫使 Cassandra 读取和整理两种格式的结果。

因此,虽然我不会说它是“强制性的”,但我肯定会说它是一个“好主意”。

关于cassandra - cassandra 升级是否需要运行 nodetool upgradesstables 用于集群保存 TTLed 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com