恢复数据库备份企业版
命令
可以使用 neo4j-admin 的 restore 命令将数据库备份工件(完整或增量备份)还原到相同或更高版本的 Neo4j 中。
您还可以使用 neo4j-admin database load 命令加载完整数据库备份工件。此功能在社区版中可用。
|
不支持将数据库备份还原到旧版本的 Neo4j。 |
除非您要替换现有数据库,否则在还原操作完成后,必须创建数据库(通过对 system 数据库执行 CREATE DATABASE 命令)。必须以 neo4j 用户身份调用 neo4j-admin database restore,以确保文件权限正确。有关更多信息,请参阅 创建数据库。
|
如果您正在使用 CDC,请确保使用相同的 |
|
在还原备份链时,必须首先重放包含在增量备份工件中的事务日志。此恢复操作非常耗费资源,可以通过使用 aggregate 命令将此操作与还原操作解耦。 |
语法
neo4j-admin database restore [-h] [--expand-commands] [--verbose] [--overwrite-destination
[=true|false]] [--source-database[=source-database-name]]
[--additional-config=<file>] --from-path=<path> [,<path>...]
[--restore-until=<recovery-criteria>] [--temp-path=<path>]
[--to-path-data=<path>] [--to-path-txn=<path>] [<database>]
参数
| 参数 | 描述 |
|---|---|
|
还原后的数据库名称。仅当 |
选项
| 选项 | 描述 | 默认 | ||
|---|---|---|---|---|
|
包含额外配置的配置文件。 |
|||
|
允许在配置值评估中进行命令扩展。 |
|||
|
路径可以指向单个备份工件、包含工件的文件夹或以逗号分隔的备份工件文件列表。工件文件可以是:1) 完整备份,此时直接还原;或 2) 增量备份,此时命令首先尝试在文件夹中查找以该特定增量备份结尾的备份链,然后还原该链。可以使用相应的 URI 作为路径来还原 AWS S3 存储桶、Google Cloud 存储桶和 Azure 存储桶中的备份。 |
|||
|
显示此帮助消息并退出。 |
|||
|
如果要替换现有数据库。
|
|
||
|
增量备份工件包含事务日志,在还原备份链时,这些日志可以被重放并应用于完整备份工件中包含的存储。数据库应用日志直到满足恢复谓词为止。目前支持的谓词有:
|
|||
|
2025.02 引入 源数据库名称。如果 |
|||
|
数据库的基础目录。仅当 |
|||
|
事务日志的基础目录。仅当 |
|||
|
提供一个临时空目录的路径,用于在命令完成前存储备份文件。命令完成后,这些文件将被删除。 |
|||
|
启用详细输出。 |
|||
1. 有关详细信息,请参阅 Neo4j Admin 和 Neo4j CLI → 配置。 | ||||
|
|
|
在执行与备份相关的命令时, 如果未设置 如果您不提供 因此,强烈建议提供 |
示例
以下示例展示了如何检查备份目录并还原在 备份在线数据库 一节中创建的数据库备份。假设备份工件(完整和增量)位于 /path/to/mybackups 目录中。
检查备份工件
使用以下命令检查备份目录
bin/neo4j-admin database backup --inspect-path=/path/to/mybackups
| FILE | DATABASE | DATABASE ID | TIME | FULL | COMPRESSED | LOWEST TX | HIGHEST TX |
| file:///path/to/mybackups/neo4j-2023-06-29T14-46-27.backup | neo4j | c8368b24-55e2-474d-bb41-75657f5bfcde | 2023-06-29T13:46:27 | true | true | 1 | 11 |
| file:///path/to/mybackups/neo4j-2023-06-29T14-50-45.backup | neo4j | c8368b24-55e2-474d-bb41-75657f5bfcde | 2023-06-29T13:50:45 | false | true | 12 | 14 |
| file:///path/to/mybackups/neo4j-2023-06-29T14-51-33.backup | neo4j | c8368b24-55e2-474d-bb41-75657f5bfcde | 2023-06-29T13:51:33 | false | true | 15 | 18 |
示例输出显示备份工件是备份链的一部分。第一个工件是完整备份,另外两个是增量备份。LOWEST TX 和 HIGHEST TX 列显示了备份工件中第一个和最后一个事务的事务 ID。这意味着,如果您还原 neo4j-2023-06-29T14-50-45.backup,您的数据库将以 14 作为最后的事务 ID。
还原数据库备份
以下示例假设您要将数据还原到名为 mydatabase 的新数据库中。如果要替换现有数据库,则需要先停止该数据库,并在还原命令中添加 --overwrite-destination=true 选项。
-
通过运行以下命令还原数据库备份
bin/neo4j-admin database restore --from-path=/path/to/backups/neo4j-2023-06-29T14-51-33.backup mydatabase--from-path=参数必须包含备份链中最后一个备份的路径,在本例中为neo4j-2023-06-29T14-51-33.backup。如果您想同时还原多个数据库,则必须先停止它们,然后可以通过指定以逗号分隔的备份工件路径列表来修改命令,并删除
<database>参数。如果您要替换现有数据库,也应跳过后续的CREATE DATABASE步骤。 -
使用
CREATE DATABASE对system数据库创建新数据库。CREATE DATABASE mydatabase
将数据还原到特定日期
要将数据还原到特定日期,您需要传递包含该日期之前数据的备份工件。
此示例假设您要将数据还原到名为 mydatabase 的新数据库中。如果要替换现有数据库,则需要先停止该数据库,并在还原命令中添加 --overwrite-destination=true 选项。
-
从包含所需日期之前数据的备份中进行还原。
bin/neo4j-admin database restore --from-path=/path/to/mybackups/neo4j-2023-06-29T14-50-45.backup --restore-until="2023-06-29 13:50:45" mydatabase--from-path=参数必须包含完整或增量备份工件的路径。--restore-until=参数必须包含 UTC 日期和时间。还原过程将恢复在提供的日期和时间之前提交的所有事务。如果您想同时还原多个数据库,则必须先停止它们,然后可以通过指定以逗号分隔的备份工件路径列表来修改命令,并删除
<database>参数。如果您要替换现有数据库,也应跳过后续的CREATE DATABASE步骤。如果您知道要在其之前还原的日期之前提交的最后一个事务的 ID,则可以使用
--restore-until=参数配合事务 ID 而不是日期。例如,--restore-until=123。 -
使用
CREATE DATABASE对system数据库创建新数据库CREATE DATABASE mydatabase;
还原存储在云存储中的备份
在 Neo4j 2025.03 中,引入了新的云集成设置,为云生态系统中的部署和管理提供更好的支持。详情请参阅 配置设置 → 云存储集成设置。
以下示例展示了如何使用 --from-path 选项还原存储在云存储桶中的数据库。
|
Neo4j 使用 AWS SDK v2 通过 AWS URL 调用 AWS 上的 API。或者,您可以使用系统变量 |
-
按照 AWS 官方文档中的说明安装 AWS CLI — 安装 AWS CLI 版本 2。
-
使用 AWS CLI 创建 S3 存储桶和用于存储备份文件的目录:
aws s3 mb --region=us-east-1 s3://myBucket aws s3api put-object --bucket myBucket --key myDirectory/有关如何创建存储桶和使用 AWS CLI 的更多信息,请参阅 AWS 官方文档 — 使用 AWS CLI 使用 Amazon S3 和 使用 AWS CLI 的高级 (s3) 命令。
-
通过运行以下命令验证
~/.aws/config文件是否正确:cat ~/.aws/config输出应如下所示:
[default] region=us-east-1
-
通过在
~/.aws/credentials文件中设置aws_access_key_id和aws_secret_access_key并根据需要使用存储桶策略,来配置对 AWS S3 存储桶的访问。例如:-
使用
aws configure set aws_access_key_id aws_secret_access_key命令设置您的 IAM 凭据,并验证~/.aws/credentials是否正确:cat ~/.aws/credentials输出应如下所示:
[default] aws_access_key_id=this.is.secret aws_secret_access_key=this.is.super.secret
-
此外,您可以使用基于资源的策略向您的 S3 存储桶及其中的对象授予访问权限。创建包含以下内容的策略文档并将其附加到存储桶。请注意,为了能够下载和上传文件,两个资源条目都很重要。
{ "Version": "2012-10-17", "Id": "Neo4jBackupAggregatePolicy", "Statement": [ { "Sid": "Neo4jBackupAggregateStatement", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::myBucket/*", "arn:aws:s3:::myBucket" ] } ] }
-
-
运行
neo4j-admin database restore命令以还原存储在 AWS S3 中的数据库。示例假设您的存储桶的myBucket/myDirectory文件夹中有备份工件。bin/neo4j-admin database restore --from-path=s3://myBucket/myDirectory/myBackup.backup mydatabase
-
确保您拥有 Google 帐户,并在 Google Cloud Platform (GCP) 中创建了项目。
-
按照 Google 官方文档中的说明安装
gcloudCLI — 安装 gcloud CLI。 -
根据 Google 官方文档创建服务帐户和服务帐户密钥 — 创建服务帐户 和 创建和管理服务帐户密钥。
-
下载服务帐户的 JSON 密钥文件。
-
将
GOOGLE_APPLICATION_CREDENTIALS和GOOGLE_CLOUD_PROJECT环境变量分别设置为 JSON 密钥文件的路径和项目 ID:export GOOGLE_APPLICATION_CREDENTIALS="/path/to/keyfile.json" export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID -
使用您创建的服务帐户的电子邮件地址、JSON 密钥文件的路径和项目 ID 对
gcloudCLI 进行身份验证:gcloud auth activate-service-account service-account@example.com --key-file=$GOOGLE_APPLICATION_CREDENTIALS --project=$GOOGLE_CLOUD_PROJECT有关更多信息,请参阅 Google 官方文档 — gcloud auth activate-service-account。
-
按照 Google 官方文档在 Google Cloud Storage 中创建存储桶 — 创建存储桶。
-
运行以下命令验证存储桶已创建:
gcloud storage ls输出应列出创建的存储桶。
-
-
运行
neo4j-admin database restore命令以还原存储在 Google 存储桶中特定文件夹内的数据库。示例假设您的存储桶的myBucket/myDirectory文件夹中有备份工件。bin/neo4j-admin database restore --from-path=gs://myBucket/myDirectory/myBackup.backup mydatabase
-
确保您拥有 Azure 帐户、Azure 存储帐户和 blob 容器。
-
您可以使用 Azure 门户创建存储帐户。
有关详细信息,请参阅 Azure 官方文档 创建存储帐户。 -
在 Azure 门户中创建 blob 容器。
有关详细信息,请参阅 Azure 官方文档 快速入门:使用 Azure 门户上传、下载和列出 blob。
-
-
按照 Azure 官方文档中的说明安装 Azure CLI — Azure 官方文档。
-
使用默认 Azure 凭据针对 Azure 对 neo4j 或 neo4j-admin 进程进行身份验证。
有关详细信息,请参阅 Azure 官方文档 默认 Azure 凭据。az login完成后,您应该可以在 neo4j 或 neo4j-admin 中使用 Azure URL。
-
要验证您是否可以使用登录凭据访问容器,请运行以下命令:
# Upload a file: az storage blob upload --file someLocalFile --account-name accountName - --container someContainer --name remoteFileName --auth-mode login # Download the file az storage blob download --account-name accountName --container someContainer --name remoteFileName --file downloadedFile --auth-mode login # List container files az storage blob list --account-name someContainer --container someContainer --auth-mode login -
运行
neo4j-admin database restore命令以还原存储在 Azure blob 存储容器中特定文件夹内的数据库。示例假设您的myStorageAccount/myContainer/myDirectory文件夹中有备份工件。bin/neo4j-admin database restore --from-path=azb://myStorageAccount/myContainer/myDirectory/myBackup.backup mydatabase
在集群中还原数据库备份
要在集群中还原数据库备份,请指定一台服务器作为种子(seeder),并在该服务器上还原数据库备份。然后,使用该服务器在集群中的其他服务器上创建还原后的数据库。有关更多信息,请参阅 指定种子。
还原用户和角色元数据
如果您在备份数据库时使用了 --include-metadata 选项,则可以手动还原用户和角色元数据。
在 <NEO4J_HOME> 目录中,使用 Cypher Shell 运行 neo4j-admin database restore 命令输出的 Cypher 脚本 /data/scripts/databasename/restore_metadata.cypher
使用 cat (UNIX)
cat ../data/scripts/databasename/restore_metadata.cypher | bin/cypher-shell -u user -p password -a ip_address:port -d system --param "database => 'databasename'"
使用 type (Windows)
type ..\data\scripts\databasename\restore_metadata.cypher | bin\cypher-shell.bat -u user -p password -a ip_address:port -d system --param "database => 'databasename'"