注意事项与规划

本章介绍了在规划 Neo4j DBMS 升级或迁移时需要考虑的事项。

规划升级或迁移对于确保一切顺利进行至关重要,并能确保在发生故障时有相应的应对措施。本节旨在强调一些需要重点关注的事项。

常规注意事项

耗时

由于涉及的变动环节较多(包括但不限于以下内容),预先了解升级或迁移所需的时间是不可能的:

  • 您的数据存储大小。

  • 是否需要迁移存储格式?

  • 是否需要迁移索引?

  • 您的索引有多大?

  • 您的硬件速度如何?

因此,建议准备一个环境,以便您可以进行完整的升级或迁移过程测试。这将为您提供比预估更准确的时间,并让您对整个过程的预期耗时有大致了解。根据经验,升级或迁移过程中的数据迁移部分(非整个过程)对于 600GB 的存储而言,大约需要 50~55 分钟。

配置更改

PATCHMINOR(补丁和次要版本)升级中,您无需更改配置设置。如果您保持 neo4j.conf 文件不变,一切应该都能像旧版本一样工作。但是,由于某些版本可能包含新功能,因此查看 Configuration settings(配置设置)Procedures(过程) 的更改并根据需要更新设置总是一个好习惯。

MAJOR(主要)版本会引入配置设置的变更,例如新的配置名称、已弃用或已移除的功能。建议检查 configuration settings(配置设置) 的更改,以了解所有必需的调整。

在此阶段,一个好的做法是检查您当前的 neo4j.conf 并记录下您可能拥有的任何非默认配置。您需要将这些配置添加到您的 Neo4j 4.x 的 neo4j.conf 文件中。

您可以使用以下命令去除 neo4j.conf 文件中的所有注释/空行

grep -v "^#" neo4j.conf | sed -e '/^$/d' | sort

日志

所有的日志格式/布局在 Neo4j 4.x 中都有所变化。有些是微小的,有些则影响重大,因此请花点时间熟悉新的格式及其包含的信息。如果您正在使用这些日志并基于它们生成警报,那么检查日志格式更改的影响非常必要。

有关可用日志及其配置方法(包括日志轮转和保留)的更多信息,请参阅您要升级到的版本的 Operations Manual → Logging(操作手册 → 日志记录)

指标 (Metrics)

关于指标,有三点需要注意:

  • 默认启用的指标在 4.2 版本中已更改。您希望启用的任何特定指标都必须在配置中指定。

  • 从 4.0 版本开始,指标的命名规则已更改,包含数据库名称前缀。

  • Neo4j 4.0 版本还为指标引入了命名空间,默认情况下处于禁用状态。

如果您是从 3.5 迁移到 4.x,并且已经设置了监控仪表板(无论是自建的还是来自第三方供应商的),您应该了解这些更改在迁移后将如何影响仪表板。

操作手册中包含关于此主题的两个实用章节:

嵌入式部署

对于使用嵌入式部署(将 Neo4j 包含在您的项目中)的用户,从 4.2 版本开始,Neo4j 支持以嵌入模式运行因果集群 (Causal Cluster)。但是,从 Neo4j HA 嵌入模式迁移过来时,需要进行少量更改。有关详细信息,请参阅 Java Reference → Using Neo4j embedded in Java applications(Java 参考 → 在 Java 应用程序中使用嵌入式 Neo4j)Operations Manual → Embedded usage(操作手册 → 嵌入式使用)

迁移注意事项

停机时间

迁移到较新的 Neo4j MAJOR 版本时,仅支持离线迁移。因此,这需要规划停机时间。请据此做好相应安排。由于每个案例都是独一无二的,建议进行一次或多次测试迁移,以准确了解该过程需要多长时间。这些信息将使您能够更好地规划所需的停机窗口。

磁盘空间注意事项

迁移需要大量的空闲磁盘空间,因为它会创建整个数据库的副本并生成临时文件。同时建议对生产存储进行备份,以防出现问题。基于上述原因,迁移时建议预留两倍于数据库目录大小的空间(如果事先进行了备份,则为三倍)。

Java 版本

Neo4j 4.x 运行在 Java 11 上。下表显示了运行 Neo4j 实例兼容的 Java 虚拟机 (JVM)。

表 1. Neo4j 版本与 JVM 要求
Neo4j 版本 Java 版本

4.x

Java SE 11

3.x

Java SE 8

如果您在托管 Neo4j 的机器上运行了其他 Java 应用程序,请确保这些应用程序与 Neo4j 运行的 Java 版本兼容。或者,您应该配置在同一台机器上运行多个 JDK。

数据库命名规则

随着多数据库功能的引入,数据库命名规则已更改。例如,数据库名称中不再允许使用下划线。有关命名规则的完整列表,请参阅 Operations Manual → Administrative commands(操作手册 → 管理命令)

应用程序代码

根据您的应用程序与 Neo4j 的交互方式,您应准备好审查您的应用程序代码。Neo4j 4.x 中的更改可能会影响您的应用程序,例如(但不限于):

所有可能影响您的应用程序与 Neo4j 的破坏性更改均可在 Breaking changes between Neo4j 3.5 and Neo4j 4.x(Neo4j 3.5 与 Neo4j 4.x 之间的破坏性更改) 中找到。

驱动程序

Neo4j 官方驱动程序有一些重大且具有破坏性的更改,您需要注意。Breaking changes between Neo4j 1.7 drivers and Neo4j 4.x drivers(Neo4j 1.7 驱动程序与 Neo4j 4.x 驱动程序之间的破坏性更改) 一节包含了所有相关信息并列出了所有的破坏性更改。

以下是一些可能导致困惑的关键更改:

  • 从 Neo4j 4.0 开始,数据库、驱动程序和协议的版本方案均已统一。对于受支持的驱动程序,这意味着版本号从 1.7 变为 4.0。这仅仅是一个外观上的更改,实际上 4.0 版本的驱动程序仅比 1.7 版本领先一个发布周期。

    每个官方 Neo4j 驱动程序的版本号均从 1.7 提升至 4.0。不存在 1.8、2.x 和 3.x 版本的驱动程序。

  • 驱动程序的加密默认配置现在为 false。4.x 驱动程序默认只尝试明文连接。

  • 当明确启用加密时,持有自签名证书的连接在默认情况下将无法通过证书验证。在 Neo4j 4.x 上,默认的信任模式是信任操作系统信任的 CA。

  • v1 已从驱动程序的包名中移除。

  • neo4j:// 方案取代了 bolt+routing://,并可同时用于集群和单实例配置。

  • 对于 4.0 服务器,会话实例现在应针对特定数据库获取。

  • 书签 (Bookmark) 已从字符串或字符串列表更改为 Bookmark 对象。

  • 针对特定语言的驱动程序有若干更改。

以上列表并未涵盖驱动程序中的所有更改,因此务必通读 Breaking changes between Neo4j 1.7 drivers and Neo4j 4.x drivers(Neo4j 1.7 驱动程序与 Neo4j 4.x 驱动程序之间的破坏性更改) 一节。未能做到这一点可能会在迁移后您的应用程序尝试连接到 Neo4j 时导致意外问题。作为提示,您还可以查看 Neo4j Drivers documentation(Neo4j 驱动程序文档)(适用于所有官方支持的语言),它将指导您了解所有驱动程序功能配置,例如深入探讨身份验证、异步会话和响应式会话(客户端背压)。

插件(包括自定义插件)

请注意您正在使用的插件,并确保它们与 Neo4j 4.x 兼容。

以下是最常用的插件/插件类型:

  • 最常用的插件之一是 APOC,这是一个扩展 Neo4j 功能的过程库。如果您正在使用 APOC,请查看 版本兼容性矩阵,并确保计划在进行 Neo4j 迁移的同时升级 APOC。

    要快速检查您的 APOC 版本,可以运行 RETURN apoc.version();

  • 如果您正在使用 Neo4j Bloom 或图形数据科学库 (GDSL),可以在 Neo4j Deployment Center(Neo4j 部署中心) 中找到这些产品的最新版本。请注意,某些旧版本的 Bloom 和 GDSL 最初可能与 Neo4j 4.0 不兼容。此问题已得到彻底解决,整个产品套件均与 4.x 系列兼容。因此,建议直接升级到这些产品的最新版本。

  • 如果您开发了任何自定义插件,您应该像审查应用程序代码一样审查它们。Neo4j 4.x 中的多项更改可能会影响这些自定义插件的行为,因此,强烈建议为此预留一些时间。

其他第三方软件和工具

注意您在 Neo4j 旁边使用的任何其他第三方软件和工具。也许您利用了操作脚本来安装、管理、备份或监控您的 Neo4j 部署。您可能还设置了警报并构建了完整的监控仪表板。您需要修改这些内容,因为指标方面发生了变化(如 指标 章节所述),并且 Neo4j 操作工具现在支持多数据库。因此,建议检查所有脚本/工具/第三方软件,并确保它们已做好准备并与 Neo4j 4.x 兼容。

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