知识库

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

在 v3.4.0 引入的实例磁盘空间耗尽后的恢复过程改进之后,本文旨在提供 Neo4j 在这种情况下的行为概览。

在 3.4 之前,磁盘空间耗尽会导致事务日志损坏。当我们尝试追加内容但设备上已没有空间时,日志就会损坏。这本身并没有问题,因为从用户的角度来看事务实际上从未提交,问题在于我们无法从此情形中恢复。

这是 3.4+ 版本的预期行为(以及恢复方式)

独立实例

  • 实例磁盘空间耗尽

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

  • 在服务器上手动释放空间

  • 重启实例

因果集群

  • 实例磁盘空间耗尽

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

  • 系统会自动选举出新的 Leader,写操作可以立即恢复

  • 在旧 Leader 上手动释放空间

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

  • 重启实例

如果不重启,旧 Leader 仍会作为从节点成为集群的一部分,对驱动程序而言仍可见,客户端请求可能会被路由到它并超时

虽然我们努力使该过程尽可能无缝,但这仍被视为灾难性场景。您应该始终在操作系统层面监控磁盘空间使用情况,以防止此类情况发生。

© . This site is unofficial and not affiliated with Neo4j, Inc.