离线备份数据库
|
请务必仔细规划备份,并备份每一个数据库,包括 |
命令
neo4j-admin database dump 命令可用于对离线数据库执行完整备份。它仅将数据库内容转储为一个名为 <database>.dump 的单文件归档,并将其存储在 <NEO4J_HOME>/data 目录中。
在运行 neo4j-admin database dump 命令之前,请检查目标目录的权限。目标目录绝对不能是全员可读或全员可执行的。即使内部文件受到限制,全员可执行的目录也可能泄露结构信息。更多信息,请参阅 文件权限。
请注意,neo4j-admin database dump 命令不支持备份用户和角色的元数据。
或者,neo4j-admin database dump 可以将转储流式传输到标准输出,从而允许将输出通过管道传输到另一个程序,例如 neo4j-admin database load。
如果数据库托管在集群中,请确保数据库在您连接的服务器上已停止。该命令只能在企业版 Neo4j DBMS 上本地运行(无论是在线还是离线状态)。在社区版中,该命令只能在离线 Neo4j DBMS 上运行。它不支持 SSL/TLS。
语法
neo4j-admin database dump [-h] [--expand-commands]
[--verbose] [--overwrite-destination[=true|false]]
[--additional-config=<file>]
[--to-path=<path> | --to-stdout]
<database>
描述
将数据库转储为单文件归档。该归档可被 load 命令使用。<to-path> 应为一个目录(在这种情况下,将创建一个名为 <database>.dump 的文件),或者可以提供 --to-stdout 以使用标准输出。如果既未提供 --to-path 也未提供 --to-stdout,将使用 server.directories.dumps.root 设置作为目标路径。无法转储挂载在正在运行的 Neo4j 服务器上的数据库。
参数
| 参数 | 描述 |
|---|---|
|
要转储的数据库名称。可以包含 * 和 ? 以进行通配符匹配。请注意,* 和 ? 在某些 shell 中具有特殊含义,可能需要进行转义或加引号使用。 |
选项
neo4j-admin database dump 命令具有以下选项
| 选项 | 描述 | 默认 |
|---|---|---|
|
包含额外配置的配置文件。 |
|
|
允许在配置值评估中进行命令扩展。 |
|
|
显示此帮助消息并退出。 |
|
|
覆盖目标文件夹中任何现有的转储文件。 |
|
|
数据库转储的目标文件夹。可以使用适当的 URI 作为路径,将数据库转储到 AWS S3 存储桶、Google Cloud 存储桶和 Azure 存储桶中。 |
|
|
使用标准输出作为数据库转储的目标。 |
|
|
启用详细输出。 |
|
1. 有关详细信息,请参阅 Neo4j Admin 和 Neo4j CLI → 配置。 | ||
|
|
示例
以下示例展示了如何使用 neo4j-admin database dump 命令转储数据库。该命令会创建一个名为 database.dump 的文件,其中 database 是命令中指定的数据库名称。
|
|
将默认数据库 neo4j 转储到本地目录
您可以使用以下命令在本地目录中创建默认数据库 neo4j 的转储文件。运行命令前目标目录必须已经存在,且数据库必须处于离线状态。
bin/neo4j-admin database dump neo4j --to-path=/full/path/to/dumps
将数据库转储到云存储中的文件夹
在 Neo4j 2025.03 中,引入了新的云集成设置,为云生态系统中的部署和管理提供更好的支持。详情请参阅 配置设置 → 云存储集成设置。
以下示例展示了如何使用 --to-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 dump命令将数据库转储到您的 AWS S3 存储桶中bin/neo4j-admin database dump mydatabase --to-path=s3://myBucket/myDirectory/
-
确保您拥有 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 dump命令将数据库转储到您的 Google 存储桶中bin/neo4j-admin database dump mydatabase --to-path=gs://myBucket/myDirectory/
-
确保您拥有 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 dump命令将数据库转储到您的 Azure 容器中bin/neo4j-admin database dump mydatabase --to-path=azb://myStorageAccount/myContainer/myDirectory/