【问题标题】:Cassandra, removing old, not needed dataCassandra,删除旧的、不需要的数据
【发布时间】:2017-10-03 03:58:09
【问题描述】:

我有一个双节点 Cassandra 集群,RF 为 2。所以两个节点都包含 100% 的数据。

现在,我的磁盘空间不足。我可以删除一些旧数据,因为它们之前已经聚合和处理过,我不再需要它们了。

我尝试从cqlsh 运行delete 查询,但我得到了超时。我尝试增加超时时间,但从cqlsh 运行查询似乎需要更多时间。

如何为单个查询或连接禁用此超时?除了增加超时之外,还有其他方法可以从节点中删除一些数据吗?

我的 Cassandra 版本是3.11.0

PS。我在cassandra.yaml 中增加write_request_timeout_in_ms。这是delete 查询的正确方法吗?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    删除确实不应该超时,除非出现与其他问题相关的问题。它插入一个没有读取或任何内容的墓碑,无论已经存在什么,都应该快速/便宜。另一方面,阅读可能会受到很大影响。我猜想与读取相关的 GC 相关问题。您可以检查 GC 日志并可能增加堆并减少 CMSInitiatingOccupancyFraction(如果使用 cms 而不是 g1)。

    所以检查 GC 和正常日志是否有问题(在系统日志中查找 WARN、ERROR)和 gc 日志中的暂停时间 >1 秒,应该没有问题。

    发出 delete 后,您可以尝试强制压缩 (nodetool compact keyspace table) 以查看它是否有助于磁盘空间。在数据被墓碑压缩之前,删除本身不会减少磁盘空间。

    write_request_timeout_in_ms 是正确的设置,但如果您点击它,就会出现问题并且您只是掩盖它。正常使用应该不到 1 毫秒。

    旁注:2 节点集群上的 RF=2 并不是 C* 的设计运行方式。您在为高可用性而牺牲一致性的数据库上没有可用性。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多