迁移您的数据库

以下步骤假设:

  • 您已备份所有要迁移的 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 数据库 5.26 LTS 将是使用 Java SE 17 平台的最后一个版本。建议迁移到 Java SE 21,Neo4j 数据库 5.14 及更高版本都支持该平台。

请确保 Neo4j 5 未托管与您要迁移的数据库同名的任何数据库(忽略 system 数据库)。

在 Neo4j 5 上恢复数据库

您现在可以将数据库备份恢复到 Neo4j 5。

如果您正在迁移到集群,请仅将它们恢复到一个服务器;稍后您将使用此服务器来初始化其他服务器。

如果您正在从 Neo4j 4.4 社区版的安装中迁移数据库,您需要使用 neo4j-admin database load 命令恢复您的转储文件。

更多信息,请参阅 操作手册 5 → 恢复数据库转储

  1. 使用 neo4j-admin restore 命令恢复您的每个数据库,system 数据库除外

    /usr/bin/neo4j-admin database restore <databasename> --from-path=/migration-backups/<databasename>
  2. 使用 neo4j-admin database migrate 命令将文件元数据更新为 5 格式

    /usr/bin/neo4j-admin database migrate <databasename>

如果您的每个 BTREE 索引和索引支持的约束都没有 RANGE、POINT 或 TEXT 索引,则该命令将失败。您可以使用选项 --force-btree-indexes-to-range 强制 neo4j-admin database migrate 删除 BTREE 索引并将其替换为 RANGE 索引。建议阅读 准备迁移 中关于准备索引的部分,以了解其后果。

如果您在迁移到 5.x 时还想压缩数据库,存储复制可以作为在 4.4 和 5.x 之间迁移数据库的替代方法。

更多信息,请参阅 操作手册 5 → 复制数据库存储

重新创建数据库

启动 Neo4j 5 并使用以下 Cypher® 重新创建您的每个数据库

CREATE DATABASE <databasename>
  1. 启动 Neo4j 5 并通过运行以下命令检索您恢复备份的服务器的服务器 ID

    SHOW SERVERS YIELD address, serverId

    当您在 Neo4j 5 集群上创建数据库时,您可以选择使用 TOPOLOGY 参数指定需要多少个主副本和辅助副本。这些值以后可以使用 ALTER DATABASE 更改。

    更多信息,请参阅 操作手册 5 → 创建数据库

  2. 使用以下 Cypher 重新创建您的每个数据库

    CREATE DATABASE <databasename>
    TOPOLOGY [desired number of primaries] PRIMARIES [desired number of secondaries] SECONDARIES
    OPTIONS {existingData: 'use', existingDataSeedInstance: '[ServerId for a]'}
  3. (可选)每个 CREATE DATABASE 都会分配数据库,但这可能导致不平衡的分布。您可以运行 REALLOCATE DATABASES 命令,使集群在所有属于集群的服务器上重新平衡数据库。

    REALLOCATE DATABASES

    更多信息,请参阅 操作手册 5 → 重新分配数据库

重新创建数据库别名

如果您正在使用数据库别名,则必须手动重新创建它们。有关别名的更多信息,请参阅 操作手册 → 管理标准数据库的数据库别名

恢复角色和权限

您可以使用在 创建每个数据库的备份 中备份数据库时创建的元数据脚本来恢复与每个数据库关联的角色和权限。元数据脚本位于 _migration-backups/<数据库名>/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>'"

如果您在创建备份时没有使用 --include-metadata=all 选项,则需要手动重新创建角色和权限。更多信息,请参阅 操作手册 5 → 管理角色操作手册 5 → 内置角色和权限

监控日志

当 Neo4j 启动时,监控日志以查找由迁移引起的任何错误或警告会很有帮助。您可以在 neo4j.log 文件中找到有关升级的信息。

© . All rights reserved.