恢复数据库转储
neo4j-admin database load
命令可用于从通过 neo4j-admin database dump
命令创建的归档文件或 Neo4j Enterprise 版中通过 neo4j-admin database backup
命令创建的完整备份工件加载数据库。
如果要替换现有数据库,则必须在运行命令之前将其关闭,并使用 --overwrite-destination
选项。
企业版 如果不替换现有数据库,则必须在加载操作完成后创建数据库(使用针对 system
数据库的 CREATE DATABASE
)。
该命令可在企业版的在线或离线 Neo4j DBMS 上运行。对于社区版,该命令只能在离线 Neo4j DBMS 上运行。该命令必须以 neo4j
用户身份执行,以确保正确的文件权限。
变更数据捕获(Change Data Capture)不会捕获因使用 |
语法
neo4j-admin database load [-h] [--expand-commands] [--info] [--verbose] [--overwrite-destination[=true|false]]
[--additional-config=<file>] [--from-path=<path> | --from-stdin] <database>
描述
从归档文件加载数据库。<archive-path> 必须是包含归档文件的目录。归档文件可以是使用 dump 命令创建的数据库转储,也可以是 Neo4j Enterprise 版中由 backup 命令创建的完整备份工件。如果未提供 --from-path
或 --from-stdin
,则将在 server.directories.dumps.root
设置中搜索归档文件。现有数据库可以通过指定 --overwrite-destination
来替换。无法替换正在运行的 Neo4j 服务器中已挂载的数据库。如果指定了 --info
,则不加载数据库,而是打印有关归档文件信息(即文件计数、字节计数和加载文件格式)。
参数
参数 | 描述 |
---|---|
|
要加载的数据库名称。可包含 * 和 ? 进行全局匹配。请注意,* 和 ? 在某些 shell 中具有特殊含义,可能需要转义或用引号引起来。 |
选项
选项 | 描述 | 默认值 |
---|---|---|
|
包含附加配置的配置文件。 |
|
|
允许在配置值评估中扩展命令。 |
|
|
包含归档文件的目录路径。可以使用适当的 URI 作为路径从 AWS S3 存储桶、Google Cloud 存储桶和 Azure 存储桶加载数据库。 |
|
|
从标准输入读取归档文件。 |
|
|
显示此帮助消息并退出。 |
|
|
打印归档文件的元数据信息,而不是加载其中包含的数据库。 |
|
|
是否应替换现有数据库。 |
|
|
启用详细输出。 |
|
1. 有关详细信息,请参阅 Neo4j Admin 和 Neo4j CLI → 配置。 |
|
示例
以下示例展示了如何使用 neo4j-admin database load
命令加载在 备份离线数据库 部分创建的数据库转储 (database.dump),或使用 neo4j-admin database backup
命令由 备份在线数据库 创建的完整备份工件。替换现有数据库时,您必须在运行命令之前将其关闭。由于您正在替换现有数据库,因此需要 --overwrite-destination
选项。
如果您未在企业版中替换现有数据库,则必须在加载操作完成后创建数据库(使用针对 system
数据库的 CREATE DATABASE
)。
当使用 |
|
从本地目录加载转储
您可以使用以下命令从本地目录加载转储:
bin/neo4j-admin database load --from-path=/full-path/data/dumps neo4j --overwrite-destination=true
您可以使用相同的命令从其完整备份工件加载数据库:
bin/neo4j-admin database load --from-path=/full-path/to/backups neo4j --overwrite-destination=true
以下示例显示了如何为 load
命令指定特定的归档文件。
cat foo.dump | neo4j-admin database load --from-stdin mydatabase
从云存储加载转储
在 Neo4j 2025.03 中,引入了新的云集成设置,以提供对云生态系统中部署和管理的更好支持。有关详细信息,请参阅 配置设置 → 云存储集成设置。
以下示例显示了如何使用 --from-path
选项加载位于云存储桶中的数据库转储。
Neo4j 使用 AWS SDK v2 调用 AWS 上的 API,使用 AWS URL。或者,您可以通过系统变量 |
-
按照 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 官方文档 — 将 Amazon S3 与 AWS CLI 结合使用 和 将高级 (s3) 命令与 AWS CLI 结合使用。
-
通过运行以下命令验证
~/.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
命令设置您的 AWS 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 load
命令从您的 AWS S3 存储中加载转储。此示例假设您的存储桶的myBucket/myDirectory
文件夹中包含转储工件。bin/neo4j-admin database load mydatabase --from-path=s3://myBucket/myDirectory/ --overwrite-destination=true
-
确保您拥有 Google 帐户并在 Google Cloud Platform (GCP) 中创建了项目。
-
按照 Google 官方文档中的说明安装
gcloud
CLI — 安装 gcloud CLI。 -
按照 Google 官方文档中的说明创建服务帐户和服务帐户密钥 — 创建服务帐户 和 创建和管理服务帐户密钥。
-
下载服务帐户的 JSON 密钥文件。
-
将
GOOGLE_APPLICATION_CREDENTIALS
和GOOGLE_CLOUD_PROJECT
环境变量分别设置为 JSON 密钥文件的路径和项目 IDexport GOOGLE_APPLICATION_CREDENTIALS="/path/to/keyfile.json" export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
-
使用您创建的服务帐户的电子邮件地址、JSON 密钥文件的路径和项目 ID 对
gcloud
CLI 进行身份验证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 load
命令从您的 Google 存储桶加载转储。此示例假设您的存储桶的myBucket/myDirectory
文件夹中包含转储工件。bin/neo4j-admin database load mydatabase --from-path=gs://myBucket/myDirectory/ --overwrite-destination=true
-
确保您拥有 Azure 帐户、Azure 存储帐户和 blob 容器。
-
您可以使用 Azure 门户创建存储帐户。
有关更多信息,请参阅 Azure 官方文档中的 创建存储帐户。 -
在 Azure 门户中创建 blob 容器。
有关更多信息,请参阅 Azure 官方文档中的 快速入门:使用 Azure 门户上传、下载和列出 blob。
-
-
按照 Azure 官方文档中的说明安装 Azure CLI — Azure 官方文档。
-
使用默认的 Azure 凭证对 neo4j 或 neo4j-admin 进程进行 Azure 身份验证。
有关更多信息,请参阅 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 load
命令以从您的 Azure blob 存储容器加载转储。此示例假设您的 Azure 帐户的myStorageAccount/myContainer/myDirectory
文件夹中包含转储工件。bin/neo4j-admin database load mydatabase --from-path=azb://myStorageAccount/myContainer/myDirectory --overwrite-destination=true