我的 riak 集群有 10 个节点,运行版本 2.9.8。所有节点都是同一个版本。名为[email protected]的节点使用了大约 95% 的磁盘空间。而其他节点仅使用了不到 50% 的磁盘空间。
我试图找出数据压缩错误,就像这篇文章所说的那样:
find . -name "LOG" -exec grep -l 'Compaction error' {} \;
./308285501624487334308589769401090949458673270784/LOG
./336830455478606531929755488790080852186328203264/LOG
./365375409332725729550921208179070754913983135744/LOG
./793549717144513693868406999013919295828807122944/LOG
分区日志中的错误信息如下:
2024/05/25-16:30:51.332435 7f04c47f8700 Finalize level: 5, grooming 1
2024/05/25-16:30:51.332506 7f04c47f8700 Finalize level: 6, grooming 0
2024/05/25-16:30:51.332570 7f04c3ff7700 Compacting 1@6 + 0@7 files
2024/05/25-16:30:51.333295 7f04c3ff7700 compacted to: files[ 3 0 3 765 482 109 126 ]
2024/05/25-16:30:51.333312 7f04c3ff7700 Compaction error: IO error: /data/riak/leveldb/308285501624487334308589769401090949458673270784/sst_7/307388.sst: No such file or directory
2024/05/25-16:30:51.333319 7f04c3ff7700 Waiting after background compaction error: IO error: /data/riak/leveldb/308285501624487334308589769401090949458673270784/sst_7/307388.sst: No such file or directory
2024/05/25-16:30:52.334919 7f04c3ff7700 Finalize level: 5, grooming 1
2024/05/25-16:30:52.335003 7f04c3ff7700 Finalize level: 6, grooming 0
2024/05/25-16:30:52.335061 7f04c37f6700 Compacting 1@6 + 0@7 files
2024/05/25-16:30:52.335507 7f04c37f6700 compacted to: files[ 3 0 3 765 482 109 126 ]
2024/05/25-16:30:52.335522 7f04c37f6700 Compaction error: IO error: /data/riak/leveldb/308285501624487334308589769401090949458673270784/sst_7/307389.sst: No such file or directory
2024/05/25-16:30:52.335528 7f04c37f6700 Waiting after background compaction error: IO error: /data/riak/leveldb/308285501624487334308589769401090949458673270784/sst_7/307389.sst: No such file or directory
2024/05/25-16:30:53.337142 7f04c37f6700 Finalize level: 5, grooming 1
所有分区每个使用大约 30GB,除非节点有压缩错误。这些分区的大小如下:
1.3T ../308285501624487334308589769401090949458673270784
67G ../336830455478606531929755488790080852186328203264
159G ../365375409332725729550921208179070754913983135744
577G ../793549717144513693868406999013919295828807122944
这些压缩错误是否导致磁盘不断增大?修复这些分区/虚拟节点后,空间会被释放吗?如果没有,我该怎么办?
压缩错误声称 sst 文件丢失(在 leveldb 中,每个 sst 文件中保存了多条数据)。文件丢失似乎是无法将数据压缩到那里的合理原因。
您是否尝试过“修复损坏的 LevelDB”说明?
如果没有的话,我建议你尝试一下。
如果您已尝试修复但没有效果,那么我会尝试使用“修复分区”部分修复列为损坏的所有分区。
如果这不起作用,我建议停止目标节点,删除 leveldb 文件夹每个子文件夹中的所有数据,然后重新启动节点并运行所有分区修复。
最后,如果失败,请停止问题节点并执行
force-remove
此操作。完成后,清除问题节点并进行完全重新安装。重新安装节点后,您可以将其重新添加到集群中。