了解 Neo4j 4 中的升级与迁移

本节介绍了可能需要升级或迁移的 Neo4j DBMS 组件,以及升级、迁移和存储副本之间的区别。

您应该了解的 DBMS 组件

提前了解以下 DBMS 组件非常有用:

数据库

数据库是 Neo4j DBMS 中用于存储数据(例如节点和关系)的单一数据库。其物理结构组织在与数据库同名的目录中的文件中。默认的 Neo4j 安装包含一个名为 neo4j默认数据库。在首次启动 Neo4j 之前,可以配置不同的名称。

Neo4j 3.5 仅支持一个数据库。Neo4j 4.0 引入了对多数据库的支持。

存储格式

存储格式定义了数据库数据在文件系统上的存储方式。每个数据库都有其自己的存储格式,如果设置了 dbms.allow_upgrade=true,则可以在服务器启动时自动升级该格式。

有关每个 Neo4j 版本可用存储格式、如何配置它们及其限制的更多信息,请参阅 操作手册 → 显示存储信息

system 数据库

Neo4j 4.0 及更高版本支持在同一 DBMS 中管理多个数据库。所有这些数据库都通过一个名为 system 的共享数据库进行控制。system 数据库的作用是为其他数据库定义配置。数据库可以有各种类型的配置,例如操作配置、数据库存在性、状态(在线/离线)和安全配置(RBAC)。
system 数据库中包含的图结构会随着 Neo4j 的每个新的 MAJOR(主)或 MINOR(次)版本而改变。因此,每当将 Neo4j 部署升级到新的 MAJORMINOR 版本时,system 数据库的内容也必须进行转换。

升级 (Upgrade)

Neo4j 升级是将现有的单机或集群部署升级到更新的 PATCH(补丁)或 MINOR(次)版本的过程。

此类升级不需要更改 Neo4j 配置或使用 Neo4j 的应用程序。例如,以下情况之间的升级:

  • 同一 MAJORMINOR 版本内相邻和非相邻的 PATCH 版本,例如,4.2.14.2.24.3.04.3.4

  • 相邻的 MINOR 版本,例如,4.0.04.1.3

升级内容

  • Neo4j 产品本身。

  • 存储格式(仅当引入了新格式,或者您希望更改为其他格式时,例如从 standard 更改为 alignedhigh_limit。反之则不可行)。

  • system 数据库架构,它会重构该数据库的内容。
    从 4.1 版本开始,这在独立服务器上以及离线集群升级(您临时将每台服务器设置为独立模式)中会自动完成。但是,对于滚动升级,在完成其他两项升级(产品和存储)后,必须手动升级 system 数据库。

  • 配置设置。在 PATCHMINOR 升级中,您不需要更改配置设置。如果您保持 neo4j.conf 文件不变,一切应该都能像旧版本一样正常工作。但是,某些版本可能包含新功能,因此最好查看 配置设置过程 的变更,并在需要时更新设置。

迁移 (Migration)

Neo4j 迁移是将现有的单机或集群部署迁移到更新的 MAJOR(主)版本的过程。此类迁移需要审查 Neo4j 配置和使用 Neo4j 的应用程序。例如,以下情况之间的迁移:

  • MAJOR 版本,例如,从 3.5.13 到 4.0.10。

迁移内容

  • Neo4j 产品本身。

  • 数据库的存储格式(在服务器启动时自动升级)。
    有关每个 Neo4j 版本可用存储格式、如何配置它们及其限制的更多信息,请参阅 操作手册 → 显示存储信息

  • system 数据库架构,它会重构该数据库的内容(在 Neo4j 4.x 首次启动时自动创建)。

  • 配置设置 — 必须将新版本的配置更改应用到旧的配置文件中。

  • 应用程序代码 — 必须根据新版本更新应用程序的源代码,以便其正常工作。

  • 插件(包括自定义插件) - 所有插件都必须与新版本的 Neo4j 兼容。

存储副本 (Store copy)

Neo4j 存储副本是将数据库的存储格式从 Neo4j 社区版或企业版迁移到 Neo4j 企业版的过程。它使用 neo4j-admin copy 命令,该命令不会复制模式存储 (schema store),因此,您可以将数据库直接迁移到最新版本的 Neo4j DBMS 中。如果定义了模式,您必须通过运行 neo4j-admin copy 操作输出的命令来重新创建它。请注意,要能够复制数据库,它必须处于离线状态。

限制

  • Neo4j 不支持降级。如果升级或迁移不成功,您必须进行全面回滚,包括恢复升级前或迁移前的备份。

  • Neo4j 的升级和迁移必须作为独立的操作执行。

  • 迁移需要 Neo4j DBMS 的停机时间。

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