知识库

Neo4j 在磁盘空间不足时的行为 (3.4+)

在 v3.4.0 中引入了实例磁盘空间不足后的恢复过程改进后,本文旨在阐述 Neo4j 在这种情况下表现出的行为。

在 3.4 之前,磁盘空间不足会导致事务日志损坏。当我们尝试追加内容但设备上没有剩余空间时,它们会损坏。这本身问题不大,因为从用户角度来看事务实际上从未提交,问题在于我们无法从这种情况中恢复。

这是 3.4+ 上的预期行为(和恢复)

独立实例

  • 实例磁盘空间不足

  • JVM 不会崩溃,但 neo4j 处于不可用状态(需要手动干预)

  • 手动释放服务器空间

  • 重启实例

因果集群

  • 实例磁盘空间不足

  • JVM 不会崩溃,但 neo4j 处于不可用状态(需要手动干预)

  • 新的领导者会自动选出,写入操作可以立即恢复

  • 手动释放旧领导者空间

  • 使用 `neo4j-admin unbind` 解绑实例(这会在启动时触发本地数据库恢复,如果可能的话,而不是存储副本)

  • 重启实例

如果不重启,旧的领导者仍将作为集群的一部分(作为追随者),驱动程序可能会将客户端请求路由到它并导致超时

尽管我们尽量使这个过程尽可能顺畅,但这仍然被视为灾难场景。您应该始终在操作系统级别监控您的磁盘空间使用情况,以防止出现这种情况。

© . All rights reserved.