集群的新服务器滚动升级

重要

建议在继续之前阅读简介从 Neo4j 5 到 2025.x 的变更

在 2025.01 版本中,发现服务 v1 已移除。因此,在升级到 Neo4j 2025.01 之前,您必须过渡到 v2。有关更多详细信息,请参阅操作手册 → 从发现服务 v1 迁移到 v2。此外,dbms.cluster.discovery.version 设置在 Neo4j 2025.01 及更高版本中被忽略,并且 dbms.cluster.discovery.v2.endpoints 已弃用,取而代之的是 dbms.cluster.endpoints。因此,建议在更换二进制文件时,移除每个服务器的 neo4j.conf 文件中的 dbms.cluster.discovery.version,并将 dbms.cluster.discovery.v2.endpoints 替换为 dbms.cluster.endpoints。否则,您可以稍后执行此操作。

这是一个在不降低容错能力的情况下进行滚动升级的示例,通过在移除旧服务器之前添加新服务器。此方法适用于使用可替换云或容器资源的部署。

开始之前

  1. 通过使用以下命令,确保在滚动升级期间数据库无法停止、创建或删除。

    DENY STOP ON DATABASE * TO PUBLIC
    DENY DATABASE MANAGEMENT ON DBMS TO PUBLIC
  2. 验证所有数据库均已在线。有关详细信息,请参阅操作手册 → 启动数据库

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

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

  1. 检查集群是否健康。

    1. 在替换服务器之前,请确保集群处于健康状态。使用以下查询检查服务器是否托管了所有分配的数据库。该查询应不返回任何结果

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

      复合数据库出现在 hostingrequestedHosting 字段中。

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

      SHOW DATABASES YIELD name, address, currentStatus, requestedStatus, statusMessage WHERE currentStatus <> requestedStatus RETURN name, address, currentStatus, requestedStatus, statusMessage
  2. 创建新服务器。

  3. (从 Neo4j 5.26 迁移时推荐)在 neo4j.conf 文件中,移除 dbms.cluster.discovery.version 并将 dbms.cluster.discovery.v2.endpoints 替换为 dbms.cluster.endpoints

  4. 将新服务器添加到集群

    1. 启动新服务器,并等待它对集群可见。

    2. 使用 SHOW SERVERS 查看新服务器,其状态应为 Free。记下新服务器的 ID。

    3. 通过运行 ENABLE SERVER [new-server-id] 将服务器添加到 DBMS。这允许 DBMS 使用该服务器来托管数据库。

  5. 准备移除服务器

    1. 运行 SHOW SERVERS 检索其中一个旧服务器的 ID。该服务器必须是 Available

    2. 通过运行以下命令将所有数据库从旧服务器中移出

      DEALLOCATE DATABASES FROM SERVER [old-server-id]
    3. 等待所有数据库解除分配。您可以使用 SHOW SERVER WHERE name = [old-server-id] 来跟踪该过程。一旦数据库完成迁移,hosting 列将只包含 system,并且所有已解除分配数据库的 state 列将显示 DEALLOCATED

    4. 通过运行以下命令验证所有已迁移的数据库在其新主机上都已在线

      SHOW DATABASES
  6. 移除旧服务器

    1. 关闭旧服务器。

    2. 当进程停止时,通过运行 DROP SERVER [old-server-id] 移除旧服务器。在进程停止之前,它可能仍会以 Dropped 状态显示在 SHOW SERVERS 中。

  7. (可选)如果您安装了任何插件,请确保它们与新版本兼容。

    最新的 APOC 可在 /labs 下获得,而 GDS、Bloom、GenAI 和 NOM 可在 /products 下获得。目前,不兼容的 GDS 或 APOC 版本会阻止 Neo4j 启动。

  8. (可选)恢复 PUBLIC 角色停止数据库的权限

    REVOKE DENY STOP ON DATABASE * FROM PUBLIC
  9. (可选)恢复 PUBLIC 角色创建和删除数据库的权限

    REVOKE DENY DATABASE MANAGEMENT ON DBMS FROM PUBLIC
  10. (可选)如果您在滚动升级的准备阶段启动了离线数据库,则需要停止每个数据库以将其恢复到原始状态。

  11. 如果您在升级所有服务器后使用 LIST 发现方法,请确保将dbms.cluster.endpoints设置为只包含新服务器。

监控日志

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

© . All rights reserved.