集群的就地滚动升级
重要
建议在继续之前阅读简介和从 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.endpoints` 替换 `dbms.cluster.discovery.v2.endpoints`。否则,您可以稍后执行此操作。 |
这是一个如何执行滚动升级的示例,通过逐个升级单个服务器。这种方法在整个升级过程中保持集群可用。但是,在每个服务器脱机时,它会降低容错能力。
升级步骤(需对每台服务器重复)
-
检查集群是否健康。
-
使用以下查询检查服务器是否托管所有分配的数据库。该查询应不返回任何结果。
SHOW SERVERS YIELD name, hosting, requestedHosting, serverId WHERE requestedHosting <> hosting
复合数据库同时出现在 `hosting` 和 `requestedHosting` 字段中。
-
使用以下查询检查所有数据库是否处于预期状态。该查询应不返回任何结果。
SHOW DATABASES YIELD name, address, currentStatus, requestedStatus, statusMessage WHERE currentStatus <> requestedStatus RETURN name, address, currentStatus, requestedStatus, statusMessage
-
-
对于就地滚动升级,单个服务器的步骤与升级独立服务器的步骤相同。具体步骤取决于您选择如何部署 Neo4j。
常见部署的示例可用。
-
(从 Neo4j 5.26 迁移时推荐)在您重启服务器之前,请在 _neo4j.conf_ 文件中移除 `dbms.cluster.discovery.version`,并用 `dbms.cluster.endpoints` 替换 `dbms.cluster.discovery.v2.endpoints`。
-
重启服务器并确认其成功运行。
运行以下命令,检查服务器状态是否为 `Enabled`(已启用)且健康状况是否为 `Available`(可用)。
SHOW SERVERS WHERE name = [server-id];
-
运行以下命令,确认所有数据库均处于预期状态。
SHOW DATABASES YIELD name, address, currentStatus, requestedStatus, serverID WHERE currentStatus <> requestedStatus AND serverID = [server-id] RETURN name, address, currentStatus, requestedStatus
-
在下一台服务器上重复这些步骤,直到您升级所有服务器。
监控日志
Neo4j 重启时,最好监控日志以查找升级引起的任何错误或警告。neo4j.log 文件包含升级信息。