备份与恢复规划
备份 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 命令 |
功能/用法 | 备份/恢复 |
转储/加载 |
复制 |
---|---|---|---|
Neo4j 版本 |
企业版 |
所有 |
企业版 |
从在线 Neo4j DBMS 运行 |
仅限企业版 |
||
从离线 Neo4j DBMS 运行 |
|||
对用户数据库运行 |
|||
对 |
|||
对复合数据库运行 |
|||
执行完整备份 |
不适用 |
||
执行增量备份 |
不适用 |
||
应用于在线数据库 |
|||
应用于离线数据库 |
仅 |
||
可远程运行 |
仅 |
||
命令输入 |
数据库/存档 (.backup) |
数据库/存档 (.dump) |
数据库 |
命令输出 |
存档 (.backup)/数据库 |
存档 (.dump)/数据库 |
数据库;无模式存储 |
清理数据库不一致性 |
|||
压缩数据存储 |
要备份的数据库
Neo4j DBMS 可以托管多个数据库。Neo4j 社区版和企业版都有一个默认用户数据库,名为 neo4j
,以及一个 system
数据库,其中包含配置,例如数据库的运行状态、安全配置、模式定义、登录凭据和角色。在企业版中,您还可以创建额外的用户数据库。这些数据库中的每一个都独立备份。
将数据库(包括 |
其他要备份的文件
以下文件必须与数据库分开备份:
-
neo4j.conf 文件。如果您有集群部署,则应为每个集群成员备份配置文件。
-
所有用于加密的文件,即私钥、公共证书,以及 trusted 和 revoked 目录的内容。这些文件的位置在SSL 框架中描述。如果您有集群,则应为每个集群成员备份这些文件。
-
如果使用自定义插件,请确保将插件保存在安全位置。
-
如果使用 Bloom 或 GDS 企业版,也请备份这些产品的许可证密钥文件。