理解 4.x 中的升级和迁移

本节介绍可能需要升级或迁移的 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 MAJORMINOR 版本而改变。因此,每次将 Neo4j 部署升级到新的 MAJORMINOR 版本时,也必须转换 system 数据库的内容。

升级

Neo4j 升级是将现有单实例或集群部署升级到更新的 PATCHMINOR 版本的过程。

此类升级**不需要**更改 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 文件不变,则所有内容都应与旧版本一样工作。但是,某些版本可能包含新功能,因此始终建议查看对 配置设置过程 的更改,并在需要时更新设置。

迁移

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

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

要迁移的内容

  • Neo4j 产品。

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

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

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

  • 应用程序代码 - 必须根据新版本更新应用程序的源代码,才能正常工作。

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

存储副本

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

限制

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

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

  • 迁移需要 Neo4j DBMS 停机。