就地滚动升级集群

重要提示

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

在 Neo4j 5.23 版本中,发现服务 v1 (discovery service v1) 被弃用,并引入了发现服务 v2。在 2025.01 版本中,发现服务 v1 已被移除。因此,强烈建议从 v1 过渡到 v2,并且必须在升级到 Neo4j 2025.01 之前完成。有关更多详细信息,请参考 操作手册 → 从发现服务 v1 迁移到 v2

这是一种滚动升级的示例,通过一次升级单个服务器来实现。此方法在升级期间保持集群可用。然而,在每台服务器离线时会降低容错能力。

准备工作

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

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

  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 文件包含有关升级的信息。

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