考量与规划
本章描述了规划 Neo4j DBMS 升级或迁移时需要考虑的事项。
规划升级或迁移至关重要,以确保一切顺利进行,并在发生故障时有所保障。本节旨在强调一些需要关注的重要事项。
一般考量
持续时间
由于涉及众多动态因素,例如(但不限于),无法提前了解升级或迁移所需的时间:
-
您的数据存储大小。
-
您需要迁移存储格式吗?
-
索引需要迁移吗?
-
您的索引有多大?
-
您的硬件速度如何?
因此,建议准备一个环境,以便您可以反复测试升级或迁移过程。这将为您提供比您估计的更准确的时间,以及对整个过程持续时间的预期。根据经验法则,升级或迁移过程中数据迁移部分(而非整个过程)对于 600GB 的存储大约需要 50~55 分钟。
配置变更
在 PATCH
和 MINOR
升级中,您无需更改配置设置。如果您保持 neo4j.conf 文件不变,一切都应像旧版本中一样工作。但是,某些版本可能包含新功能,因此最好始终审查 配置设置 和 存储过程 的变更,并根据需要更新设置。
新的 MAJOR
版本引入了配置设置的变更,例如新的配置名称、已弃用和已删除的功能。建议检查 配置设置 的变更以了解所有必需的变更。
在此阶段,一个好的做法是检查您当前的 neo4j.conf 文件,并记录您可能拥有的任何非默认配置。您需要将这些配置添加到 Neo4j 4.x 的 neo4j.conf 文件中。
您可以使用以下方法删除 neo4j.conf 文件中的所有注释/空行
|
日志
Neo4j 4.x 中所有日志格式/布局都有变更。有些是微小的,有些则更显著,因此请花时间熟悉新的格式及其包含的信息。如果您正在消费这些日志并根据它们生成警报,则值得检查日志格式变更的影响。
有关可用日志以及如何配置它们的更多信息,包括日志轮转和保留,请参阅您要升级到的版本的操作手册 → 日志记录。
指标
关于指标,有三件重要的事情需要注意:
-
在 4.2 版本中,默认启用的指标已发生变更。您希望启用的任何特定指标都必须在配置中指定。
-
从 4.0 开始,指标命名规则已更改为包含数据库名称前缀。
-
Neo4j 4.0 版本还引入了指标命名空间,默认情况下是禁用的。
如果您正在从 3.5 迁移到 4.x,并且您已经设置了监控仪表板,无论是内部构建的还是来自第三方供应商的,您都应该了解这些变更在迁移后将如何影响仪表板。 操作手册中包含关于此主题的两个有用章节: |
嵌入式部署
对于使用嵌入式部署的用户(当您将 Neo4j 包含在您的项目中时),从 4.2 版本开始,Neo4j 支持在嵌入模式下运行因果集群。但是,从 Neo4j HA 嵌入式部署迁移过来,需要进行少量更改。更多信息,请参阅Java 参考 → 在 Java 应用程序中嵌入 Neo4j 和操作手册 → 嵌入式用法。
迁移考量
停机时间
当迁移到新的 Neo4j MAJOR
版本时,仅支持离线迁移。因此,需要规划一些停机时间。请据此进行规划。由于每个案例都是独特的,建议运行一次或多次测试迁移,以了解整个过程所需的时间。这些信息将使您能够更好地规划所需的停机窗口。
磁盘空间考量
迁移需要大量的可用磁盘空间,因为它会复制整个数据库并创建临时文件。还建议备份您的生产存储,以防出现问题。由于上述原因,最好为迁移目的预留数据库目录大小的两倍空间(如果事先进行备份,则为三倍)。
Java 版本
Neo4j 4.x 运行在 Java 11 上。下表显示了运行 Neo4j 实例的兼容 Java 虚拟机 (JVM)。
Neo4j 版本 | Java 版本 |
---|---|
4.x |
Java SE 11 |
3.x |
Java SE 8 |
如果您在托管 Neo4j 的机器上运行其他 Java 应用程序,请确保这些应用程序与您的 Neo4j 正在运行的 Java 版本兼容。或者,您应该配置在同一台机器上运行多个 JDK。 |
数据库命名规则
随着多数据库的引入,数据库命名规则发生了变化。例如,不再允许在数据库名称中使用下划线。有关命名规则的完整列表,请参阅操作手册 → 管理命令。
应用程序代码
根据您的应用程序与 Neo4j 交互的方式,您应该准备好审查您的应用程序代码。Neo4j 4.x 包含可能影响您应用程序的变更,例如(但不限于):
所有可能影响您的应用程序和 Neo4j 的重大变更都可以在Neo4j 3.5 与 Neo4j 4.x 之间的重大变更中找到。
驱动
Neo4j 的官方驱动程序有一些您需要注意的重大变更。 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 对象。
-
一些特定语言的驱动程序变更。
上述列表并未反映驱动程序中的所有变更,因此务必仔细阅读Neo4j 1.7 驱动与 Neo4j 4.x 驱动之间的重大变更部分。未能这样做可能会导致您的应用程序在迁移后尝试连接 Neo4j 时出现意外问题。作为提示,您还可以查看Neo4j 驱动程序文档(适用于所有官方支持的语言),它将引导您了解所有驱动程序功能配置,例如深入了解身份验证、异步会话和响应式会话(客户端背压)。 |
插件(包括自定义插件)
请注意您正在使用的插件,并确保它们与 Neo4j 4.x 兼容。
以下是最常用的插件/插件类型:
-
最常用的插件之一是 APOC,这是一个扩展 Neo4j 功能的存储过程库。如果您正在使用 APOC,请检查版本兼容性矩阵,并确保您计划在 Neo4j 迁移的同时升级 APOC。
要快速检查您的 APOC 版本,您可以运行
RETURN apoc.version();
-
如果您正在使用 Neo4j Bloom 或图数据科学库 (GDSL),您可以在Neo4j 部署中心找到这些产品的最新版本。请注意,Bloom 和 GDSL 的某些早期版本最初与 Neo4j 4.0 不兼容。此问题已完全纠正,所有产品套件均与 4.x 系列兼容。因此,建议直接升级到这些产品的最新版本。
-
如果您开发了任何自定义插件,您应该像审查应用程序代码一样审查它们。Neo4j 4.x 中的多项变更可能会影响这些自定义插件的行为,因此,强烈建议为此预留一些时间。
其他第三方软件和工具
请注意您与 Neo4j 一起使用的任何其他第三方软件和工具。您可能已经利用操作脚本来安装、管理、备份或监控您的 Neo4j 部署。您可能还设置了警报并构建了完整的监控仪表板。您需要修改这些,因为指标已发生变更(如指标部分所述),并且 Neo4j 操作工具现在支持多个数据库。因此,建议审查所有脚本/工具/第三方软件,并确保它们已准备好并与 Neo4j 4.x 兼容。