集群的新服务器滚动升级

重要提示

如果您要从 5.26 LTS 版本迁移到任何 2025-2026 版本,建议在继续操作前阅读简介从 Neo4j 5.26 LTS 到 Neo4j 2025.01 及更高版本的变更

在 2025.01 版本中,discovery service v1 已被移除。因此,在升级到任何 2025-2026 版本之前,您必须过渡到 v2。有关更多详细信息,请参阅《操作手册》→ 从发现服务 v1 迁移到 v2。此外,Neo4j 2025.01 及更高版本中将忽略 dbms.cluster.discovery.version 设置,并且 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 LTS 迁移时建议执行)从 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] 移除旧服务器。在进程停止之前,它在 SHOW SERVERS 中可能仍显示为 Dropped

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

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