【问题标题】:how much disk space is required to switch from SizeTiered to level compaction strategy in Scylla db?在 Scylla db 中从 SizeTiered 切换到 level 压缩策略需要多少磁盘空间?
【发布时间】:2021-01-29 00:30:58
【问题描述】:

我有一个 20 节点的 scylla 数据库集群,每个节点的磁盘空间使用率为 70%。我想从大小分层策略切换到分层压缩策略。我可以在剩下这么多磁盘空间的情况下做到这一点吗?最多需要多少磁盘空间?

【问题讨论】:

    标签: cassandra scylla


    【解决方案1】:

    通常使用 Size Tiered Compaction Strategy 或 Leveled Compaction Strategy,您希望保留大约 50% 的可用磁盘空间。

    我们有一个 Scylla Enterprise 功能 Incremental Compaction Strategy,它更适合在 70% 的磁盘利用率下舒适地运行。

    更改压缩策略并重写所有当前表将需要两倍于您当前使用的磁盘空间。 (目前使用率的 140%。)所以看起来您可能需要临时扩展集群才能正确运行压缩。

    据我了解,这首先需要时间来均匀地重新平衡节点。然后你应该使用你现有的策略运行一个完整的压缩,并改变你的新策略。然后,如果您通过压缩节省了空间,则可以停用任何不需要的节点。

    如果您有更具体的问题,我会邀请您到 join our Slack 直接询问我们的社区成员。

    【讨论】:

    • 好的,谢谢!这正是我们所做的。添加更多节点,然后在有磁盘空间问题的节点上重建。
    【解决方案2】:

    如前所述,您没有足够的磁盘空间来切换压缩策略。我可以想到 2 种或可能 3 种解决此问题的方法。

    1. 添加更多磁盘空间 - 如果您在云环境中,增加数据磁盘和扩展文件系统可能不会成为问题。
    2. 添加更多节点 - 但是,这需要一段时间,因为数据必须流式传输到所有新节点,然后您需要在集群上运行 nodetool cleanup 以回收未使用的空间。
    3. 一次更改一张表的压缩策略。从可以容纳 30% 空间的小桌子开始。这也将花费很长时间,并且如果您选择错误的表进行 ALTER,则存在空间不足的风险。

    【讨论】:

    • 谢谢。添加更多节点是目前唯一的解决方案。此外,我无法运行nodetool cleanup,因为它还需要大量磁盘空间(我认为它也可以进行压缩)。唯一有效的是清理节点上的数据目录(/var/lib/scylla/data/keyspace/table_uuid/*),然后执行nodetool rebuild。这会从其他节点流式传输数据,并且还摆脱了我们很久以前创建但没有以某种方式发布的 tombone。我本可以做到nodetool repair,但在我的情况下它慢了 2 倍。
    猜你喜欢
    • 2019-06-10
    • 1970-01-01
    • 2015-06-30
    • 2021-11-17
    • 2015-06-27
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    相关资源
    最近更新 更多