集群的原地滚动升级

建议在继续之前阅读简介升级或修补 5.X

这是一个关于如何通过一次升级一台服务器来执行滚动升级的示例。这种方法使集群在整个升级过程中保持可用。但是,当每台服务器脱机时,它确实会降低容错能力。

开始之前

在继续下一台服务器之前,请在每台服务器上完整执行这些步骤。您必须确保集群在继续下一台服务器之前恢复到稳定状态。

升级步骤(对每台服务器重复)

  1. 检查集群是否健康。

    1. 使用以下查询检查服务器是否托管了所有分配的数据库。查询应返回无结果

      SHOW SERVERS YIELD name, hosting, requestedHosting, serverId WHERE requestedHosting <> hosting

      在 5.9 版之前,如果您有复合数据库,它们将不会出现在 requestedHosting 中,因此此查询将返回所有服务器。因此,您必须手动比较 hostingrequestedHosting 字段,排除任何复合数据库。从 5.10 版开始,复合数据库同时出现在 hostingrequestedHosting 字段中。

    2. 使用以下查询检查所有数据库是否都处于预期状态。查询应返回无结果

      SHOW DATABASES YIELD name, address, currentStatus, requestedStatus, statusMessage WHERE currentStatus <> requestedStatus RETURN name, address, currentStatus, requestedStatus, statusMessage
  2. 对于原地滚动升级,单个服务器的步骤与升级独立服务器相同。确切的步骤取决于您选择部署 Neo4j 的方式。

    常见部署提供了示例

  3. 服务器重新启动后,确认服务器已成功运行。

    运行以下命令并检查服务器的状态是否为 Enabled 且运行状况为 Available

    SHOW SERVERS WHERE name = [server-id];
  4. 确认服务器已启动所有应有的数据库。

    此命令显示任何未处于预期状态的数据库

    SHOW DATABASES YIELD name, address, currentStatus, requestedStatus, serverID WHERE currentStatus <> requestedStatus AND serverID = [server-id] RETURN name, address, currentStatus, requestedStatus
  5. 在下一台服务器上重复这些步骤,直到所有服务器都升级完毕。

手动升级 system 数据库

如果您使用的是 5.8 或更早版本的 Neo4j,则必须手动升级 system 数据库。连接到任何服务器上的 system 数据库并运行以下过程

CALL dbms.upgrade();

从 5.9 版开始,system 数据库在安全时会自动升级。

监控日志

Neo4j 重新启动时,最好监控日志以查找升级导致的任何错误或警告。neo4j.log 文件包含有关升级的信息。