cassandra-通道未打开进行写入-无法将文件扩展到所需大小
在运行时,我在一个节点上损坏了sstable文件cassandra-通道未打开进行写入-无法将文件扩展到所需大小,cassandra,datastax-enterprise,Cassandra,Datastax Enterprise,在运行时,我在一个节点上损坏了sstable文件 sstablescrub --skip-corrupted demo test 命令返回错误 java.io.IOException: Channel not open for writing - cannot extend file to required size Exception in thread "main" FSReadError in /var/lib/cassandra/data/demo/test-1ac451f0265
sstablescrub --skip-corrupted demo test
命令返回错误
java.io.IOException: Channel not open for writing - cannot extend file to required size
Exception in thread "main" FSReadError in /var/lib/cassandra/data/demo/test-1ac451f0265811e6b09b4342782e6533/mb-12248-big-Data.db
我不知道为什么会出错。我可以删除文件,运行cassandra和nodetool--完全修复吗?是的,您可以关闭主机,删除文件并进行修复。根据数据模型和用例,它在某些场景下可以工作,但默认情况下我不推荐它
- 如果该sstable中有一个超过gc_grace的墓碑,则所有其他主机可能会清除它,如果该sstable的墓碑不遮挡真实数据,它可能会在读取时复活,并在读取修复时重新分发
- 如果使用cl.quorum插入数据,则数据可能仅在2台主机上,并且在删除该sstable的情况下,仅在1台主机上,因此在quorum读取时,您违反了一致性(损坏的节点+其他缺少数据的节点在节点使用数据之前作出响应)
- 若使用cl.one插入,则该主机可能是唯一一个磁盘上有数据的主机。如果给出提示、读取修复和提交日志,这是不太可能的,但数据可能会完全丢失,并且还会出现一些问题