迁移数据库
以下步骤假设:
-
您已为所有想要迁移的 Neo4j 4.4 数据库创建了备份。
-
您已安装了用于接收数据库的等效 Neo4j 5 DBMS。
切换到 Neo4j 5
如果您的安装方式(例如 tarball 或 docker)允许您在同一台服务器上同时运行 Neo4j 4.4 和 5,则现在可以关闭 Neo4j 4.4 进程。或者,您也可以选择让它继续运行,并将所有数据库设置为只读模式,直到迁移完成。
|
如果您确实选择同时运行两个 Neo4j 安装实例,请确保服务器有足够的资源来支持,并且两个安装实例的配置不会冲突(例如端口冲突)。 |
从现在开始,您将使用 Neo4j 5 DBMS。如果两个版本位于同一台机器上,您可能需要将默认 Java 运行时更改为 Java 17。从 5.14 版本开始,Neo4j 也支持 Java 21。
|
Neo4j Database 5.26 LTS 是最后一个使用 Java SE 17 平台的版本。建议迁移至 Java SE 21,该版本从 Neo4j Database 5.14 开始提供支持。 |
确保 Neo4j 5 中尚未托管与您要迁移的数据库同名的任何数据库(忽略 system 数据库)。
在 Neo4j 5 上恢复数据库
您现在可以将数据库备份恢复到 Neo4j 5。
如果您要迁移到集群,请仅将其恢复到一台服务器;稍后您将使用此服务器作为种子来配置其他服务器。
|
如果您要从 Neo4j 4.4 社区版 (Community Edition) 安装中迁移数据库,则需要使用 更多信息,请参阅 Operations Manual 5 → 恢复数据库转储。 |
-
使用
neo4j-admin restore命令恢复您的每个数据库(system数据库除外)。/usr/bin/neo4j-admin database restore <databasename> --from-path=/migration-backups/<databasename> -
使用
neo4j-admin database migrate命令将文件元数据更新为 5 格式。/usr/bin/neo4j-admin database migrate <databasename>
|
如果您没有为每个 BTREE 索引和索引支持的约束创建 RANGE、POINT 或 TEXT 索引,该命令将会失败。您可以使用 |
|
如果您还想在迁移到 5.x 时压缩数据库,可以使用 store copy 作为在 4.4 和 5.x 之间迁移数据库的替代方案。 更多信息,请参阅 Operations Manual 5 → 复制数据库存储。 |
重新创建数据库
启动 Neo4j 5 并使用以下 Cypher® 语句重新创建您的每个数据库:
CREATE DATABASE <databasename>
-
启动 Neo4j 5 并通过运行以下命令获取您恢复备份所在服务器的服务器 ID:
SHOW SERVERS YIELD address, serverId在 Neo4j 5 集群上创建数据库时,您可以选择使用
TOPOLOGY参数来指定所需的成员(primary)和副本(secondary)数量。这些值稍后可以使用ALTER DATABASE进行更改。更多信息,请参阅 Operations Manual 5 → 创建数据库。
-
使用以下 Cypher 重新创建您的每个数据库:
CREATE DATABASE <databasename> TOPOLOGY [desired number of primaries] PRIMARIES [desired number of secondaries] SECONDARIES OPTIONS {existingData: 'use', existingDataSeedInstance: '[ServerId for a]'} -
(可选)每个
CREATE DATABASE都会分配数据库,但这可能会导致分布不均衡。您可以运行REALLOCATE DATABASES让集群在集群内的所有服务器之间重新平衡数据库。REALLOCATE DATABASES更多信息,请参阅 Operations Manual 5 → 重新分配数据库。
重新创建数据库别名
如果您正在使用数据库别名,则必须手动重新创建它们。有关别名的更多信息,请参阅 Operations Manual → 管理标准数据库的数据库别名。
恢复角色和权限
您可以使用在 创建每个数据库的备份 一节中备份数据库时生成的元数据脚本,来恢复与每个数据库关联的角色和权限。元数据脚本位于 _migration-backups/<databasname>/tools/metadata_script.cypher_。使用 Cypher Shell 运行相应的元数据脚本:
使用 cat (UNIX)
cat migration-backups/data/databases/databasename/tools/metadata_script.cypher | bin/cypher-shell -u user -p password -a ip_address:port -d system --param "database => '<databasename>'"
使用 type (Windows)
type migration-backups/data/databases/databasename/tools/metadata_script.cypher | bin\cypher-shell.bat -u user -p password -a ip_address:port -d system --param "database => '<databasename>'"
|
如果您在创建备份时未使用 |
监控日志
当 Neo4j 启动时,监控日志以查看迁移引起的任何错误或警告非常有用。您可以在 neo4j.log 文件中找到有关升级的信息。