集群就地滚动升级

重要提示

建议在继续之前阅读简介升级到 5.x 或 5 LTS

在 Neo4j 5.23 版本中,发现服务 v1 已弃用,并引入了发现服务 v2。在 2025.01 版本中,发现服务 v1 被移除。因此,强烈建议在升级到 Neo4j 2025.01 之前完成从 v1 到 v2 的转换。更多详细信息,请参阅操作手册 → 从发现服务 v1 迁移到 v2

这是一个如何通过逐个升级独立服务器来执行滚动升级的示例。这种方法使集群在整个升级过程中保持可用。但是,在每台服务器离线时,它会降低容错能力。

开始之前

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

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

  1. 检查集群是否健康。

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

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

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

    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` 数据库

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

CALL dbms.upgrade();

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

监控日志

Neo4j 重启时,最好监控日志中是否有因升级引起的任何错误或警告。neo4j.log 文件包含升级信息。

© . All rights reserved.