Neo4j 在磁盘空间不足时的行为 (3.4+)
在 v3.4.0 引入的实例磁盘空间耗尽后的恢复过程改进之后,本文旨在提供 Neo4j 在这种情况下的行为概览。
在 3.4 之前,磁盘空间耗尽会导致事务日志损坏。当我们尝试追加内容但设备上已没有空间时,日志就会损坏。这本身并没有问题,因为从用户的角度来看事务实际上从未提交,问题在于我们无法从此情形中恢复。
这是 3.4+ 版本的预期行为(以及恢复方式)
独立实例
-
实例磁盘空间耗尽
-
JVM 不会崩溃,但 Neo4j 处于不可用状态(需要手动干预)
-
在服务器上手动释放空间
-
重启实例
因果集群
-
实例磁盘空间耗尽
-
JVM 不会崩溃,但 Neo4j 处于不可用状态(需要手动干预)
-
系统会自动选举出新的 Leader,写操作可以立即恢复
-
在旧 Leader 上手动释放空间
-
使用
neo4j-admin unbind解绑实例(如果可能,这将在启动时触发本地数据库的恢复,而不是复制存储) -
重启实例
|
如果不重启,旧 Leader 仍会作为从节点成为集群的一部分,对驱动程序而言仍可见,客户端请求可能会被路由到它并超时 |
虽然我们努力使该过程尽可能无缝,但这仍被视为灾难性场景。您应该始终在操作系统层面监控磁盘空间使用情况,以防止此类情况发生。
此页面有帮助吗?