我在AWS EC2实例中运行了12个Cassandra节点,其中4个节点使用了几乎80%的磁盘空间,因此这些节点上的压缩失败,由于服务器的类型是EC2实例,我无法将模式磁盘空间动态添加到现有的数据卷中,我无法要求IT团队添加更多节点来扩展和扩展集群,因为其他节点的磁盘空间小于40%,在修复不平衡的集群问题之前,有没有办法释放一些磁盘空间?
我的问题是,如何找到未使用的sstables,并将它们移动到另一个分区以运行压缩并释放一些空间?
释放一些磁盘空间的任何其他建议。PS:我已经删除了所有的快照和备份。
发布于 2021-06-04 18:26:25
如果您使用的是vnode,那么数据大小的差异应该不会那么大。在得到解决方案之前,我们必须找到不同节点上数据大小差异较大的原因。您必须查看日志,以查看是否存在导致压缩失败和数据大小增加的大型SStable损坏。或者,您可以在日志中找到磁盘大小增加的原因。
由于一些bug,我们在Cassandra 2.1.16中遇到了一个问题,即使在压缩之后,旧的sstable文件也没有被删除。我们阅读了日志,并确定了可以删除的文件。这是一个示例,我们在读取日志后找到了数据大小增加的原因。
所以你必须在解决方案之前找出原因。如果它是一个可怕的状态,你可以识别在你的主要流量期间没有使用的键位/表,并在备份中移动这些sstables,并删除这些sstables。一旦你的压缩过程结束,你可以把它们带回来。
Warning:在尝试生产之前测试任何过程。
https://stackoverflow.com/questions/67830158
复制相似问题