备份与恢复规划

备份 Neo4j 数据库并将其存储在安全的异地位置主要有两个原因:

  • 以便在发生故障(例如与硬件、人为错误或自然灾害相关的故障)时能够快速恢复数据。

  • 能够执行日常管理操作,例如将数据库从一个实例移动到另一个实例、升级或回收空间。

备份与恢复策略

根据您特定的部署和环境,设计一个适当的备份与恢复策略非常重要。

在决定您的策略时,有多种因素需要考虑,例如:

  • 环境类型 – 开发、测试或生产。

  • 数据量。

  • 数据库数量。

  • 可用系统资源。

  • 备份和恢复期间的停机容忍度。

  • 备份和恢复期间对 Neo4j 性能的要求。此因素可能会促使您决定在非高峰期执行这些操作。

  • 故障时的数据丢失容忍度。

  • 故障时的停机容忍度。如果您对停机和数据丢失零容忍,您可能需要考虑执行在线备份甚至计划备份。

  • 数据库更新频率。

  • 备份和恢复方法的类型(在线或离线),这可能取决于您是否希望:

    • 执行完整备份(在线或离线)。

    • 执行增量备份(仅在线)。

    • 对备份网络通信使用 SSL/TLS(仅在线)。

    • 将数据库保留为存档文件(在线或离线)。

  • 您希望保留多少个备份。

  • 备份将存储在哪里 — 驱动器或远程服务器、云存储、不同的数据中心、不同的位置等。

    建议将数据库备份存储在与数据库文件分开的异地服务器(驱动器或远程)上。这可以确保如果您的 Neo4j DBMS 因某种原因崩溃,您将能够访问备份并执行恢复。

  • 您将如何以及多久测试恢复例程。

备份与恢复选项

Neo4j 支持在线和离线数据库的备份与恢复。它使用 Neo4j Admin 工具命令,这些命令可以在运行中的 Neo4j DBMS 以及离线 Neo4j DBMS 上执行。所有 neo4j-admin 命令都必须以 neo4j 用户身份调用,以确保适当的文件权限。

  • neo4j-admin database backup/restore(仅限企业版)-– 用于执行在线备份(完整备份增量备份)和恢复操作。要备份的数据库必须处于在线模式。该命令生成一个不可变工件,该工件具有可检查的 API,有助于管理和操作。此命令适用于无法承受停机时间的生产环境。

    如果使用 server.backup.listen_address 启用访问,该命令也可以通过网络调用。

    确保将备份服务器端口的访问权限限制为完全受信任的特定设备。应考虑防火墙策略。有关更多信息,请参阅服务器配置部分

    在集群中使用 neo4j-admin database backup 时,建议从外部实例进行备份,而不是重用构成集群一部分的实例。

  • neo4j-admin database dump/load –- 用于执行离线转储和加载操作。要转储的数据库必须处于离线模式。dump 命令只能从服务器命令行调用,适用于停机时间不是影响因素的环境。该命令生成一个遵循 <数据库名称><时间戳>.dump 格式的存档文件。

  • neo4j-admin database copy –- 用于复制离线数据库或备份。此命令可用于清理数据库不一致性并回收未使用的空间。

不支持文件系统复制粘贴数据库,这可能导致不必要的行为,例如存储损坏。

在集群中备份和恢复数据库的注意事项

在集群环境中备份数据库与单机备份没有本质区别,不同之处在于您必须知道要连接到集群中的哪个服务器。使用 SHOW DATABASE <database> 来了解哪些服务器正在托管您要备份的数据库。有关更多信息,请参阅列出单个数据库

然而,在集群中恢复数据库是不同的,因为无法提前知道数据库将如何分配给集群中的服务器。此方法依赖于其中一个服务器上已存在的种子。在集群中恢复数据库的推荐方法是从 URI 播种

Neo4j Admin 命令 backuprestoredumploadcopycheck-consistency 不支持用于复合数据库。它们必须直接在其关联的数据库上运行。

表 1. 下表描述了命令的功能和用法。
功能/用法 备份/恢复 转储/加载 复制

Neo4j 版本

企业版

所有

企业版

从在线 Neo4j DBMS 运行

仅限企业版

从离线 Neo4j DBMS 运行

对用户数据库运行

system 数据库运行

对复合数据库运行

执行完整备份

不适用

执行增量备份

不适用

应用于在线数据库

应用于离线数据库

restore

可远程运行

backup

命令输入

数据库/存档 (.backup)

数据库/存档 (.dump)

数据库

命令输出

存档 (.backup)/数据库

存档 (.dump)/数据库

数据库;无模式存储

清理数据库不一致性

压缩数据存储

要备份的数据库

Neo4j DBMS 可以托管多个数据库。Neo4j 社区版和企业版都有一个默认用户数据库,名为 neo4j,以及一个 system 数据库,其中包含配置,例如数据库的运行状态、安全配置、模式定义、登录凭据和角色。在企业版中,您还可以创建额外的用户数据库。这些数据库中的每一个都独立备份。

将数据库(包括 system 数据库)的最新备份存储在安全位置非常重要。

其他要备份的文件

以下文件必须与数据库分开备份:

  • neo4j.conf 文件。如果您有集群部署,则应为每个集群成员备份配置文件。

  • 所有用于加密的文件,即私钥、公共证书,以及 trustedrevoked 目录的内容。这些文件的位置在SSL 框架中描述。如果您有集群,则应为每个集群成员备份这些文件。

  • 如果使用自定义插件,请确保将插件保存在安全位置。

  • 如果使用 Bloom 或 GDS 企业版,也请备份这些产品的许可证密钥文件。

存储注意事项

对于任何备份,将数据与生产系统分开存储非常重要,最好是异地存储,且不共享依赖关系。如果您在云中运行 Neo4j,可以使用不同的可用区甚至独立的云提供商。由于备份会长时间保存,因此应将归档存储的持久性视为备份规划的一部分。

© . All rights reserved.