从单机部署迁移到集群

可以将具有单个 system 数据库的单机部署迁移到具有多个 system 主库的集群。其核心流程是:将 system 数据库从单机服务器转储(dump),然后将其加载到将要构成集群的其他服务器中。以下示例展示了如何从具有单个 system 主库的单机服务器迁移到具有三个 system 主库的集群。

另一种具有单个 system 数据库的部署方式是具有单个 system 主库的分析集群 (analytics cluster)。如果希望迁移到具有多个 system 主库的集群,以下示例同样适用,只需额外舍弃辅助库即可(这可以在第一步修改 neo4j.conf 文件时完成)。有关分析集群的更多信息,请参阅 部署分析集群

从单个 system 数据库迁移到具有三个 system 主库的集群

在此示例中,当前运行着一台名为 server01 的单机服务器,计划添加 server02server03 两台服务器以组成集群。这两台新增服务器需按照 配置三节点集群 进行配置。这两台新服务器目前不应启动。所有三台服务器上均已安装 Neo4j 企业版。

首先停止单机服务器。停止后,编辑 neo4j.conf 文件,填入它自身以及将要构成集群的其他服务器的发现端点(discovery endpoints)。

以下示例使用 dbms.cluster.discovery.resolver_type=LIST

server01.example.com 上的 neo4j.conf
server.default_listen_address=0.0.0.0
server.default_advertised_address=server01.example.com
dbms.cluster.endpoints=server01.example.com:6000,server02.example.com:6000,server03.example.com:6000
initial.dbms.default_primaries_count=3

(所有三台服务器上的 neo4j.conf 文件除了 server.default_advertised_address 外看起来完全相同。请参考 配置三节点集群 以获取更多信息。)

server01(单机服务器)上,使用 neo4j-admin database dump 命令转储 system 数据库。

bin/neo4j-admin database dump system --to-path=/full/path/to/dumps/

有关 dump 命令的更多信息,请参阅 备份离线数据库

使用 neo4j-admin database load 命令将 server01system 数据库转储文件加载到 server02server03 中。

bin/neo4j-admin database load --from-path=/full-path/data/dumps system

有关 load 命令的更多信息,请参阅 还原数据库转储

一旦 system 数据库在 server02server03 上加载完成,启动所有服务器。新添加的服务器(server02server03)应处于 Free(空闲)状态,这可以通过运行 SHOW SERVERS 来验证。

SHOW SERVERS;
+-----------------------------------------------------------------------------------------------------------+
| name                                   | address         | state     | health      | hosting              |
+-----------------------------------------------------------------------------------------------------------+
| "d6fbe54b-0c6a-4959-9bcb-dcbbe80262a4" | "server01:7687" | "Enabled" | "Available" | ["system", "neo4j"]  |
| "e56b49ea-243f-11ed-861d-0242ac120002" | "server02:7687" | "Free"    | "Available" | ["system"]           |
| "73e9a990-0a97-4a09-91e9-622bf0b239a4" | "server03:7687" | "Free"    | "Available" | ["system"]           |
+-----------------------------------------------------------------------------------------------------------+

server01(原先的单机服务器)上,使用 SHOW DATABASES 验证所有用户数据库是否仍在运行。

最后一步是使用 ENABLE SERVER 启用这些 Free 状态的服务器(有关服务器状态的更多信息,请参阅 管理集群中的服务器)。

一旦所有服务器均已启用,如果需要,可以使用 ALTER DATABASE 扩容用户数据库。