聚合数据库备份链
命令
聚合备份链的好处主要包括:
-
减少给定备份文件夹中备份构件的大小。
-
通过生成一个准备恢复的单个备份构件来保持恢复时间目标 (RTO) 较低。作为聚合的一部分,差异备份中包含的事务将应用于完整备份构件中包含的存储。此操作称为恢复,可能代价高昂。
-
降低丢失链路风险。
语法
neo4j-admin database aggregate-backup [-h] [--expand-commands]
[--verbose] [--keep-old-backup[=true|false]]
[--parallel-recovery[=true|false]]
[--additional-config=<file>] --from-path=<path>
[--temp-path=<path>] [<database>]
参数
参数 | 描述 |
---|---|
|
要为其聚合工件的数据库名称。可以包含 |
选项
选项 | 描述 | 默认值 |
---|---|---|
|
包含额外配置的配置文件。 |
|
|
允许在配置值评估中扩展命令。 |
|
|
接受单个工件文件的路径或包含备份工件的文件夹。 如果提供文件,则应省略<database>参数。可以使用适当的 URI 作为路径,从 AWS S3 存储桶、Google Cloud 存储桶和 Azure 存储桶聚合备份工件。 |
|
|
显示此帮助消息并退出。 |
|
|
如果设置为 true,则不会删除旧的备份链。 |
|
|
允许多个线程并行将拉取的事务应用于备份。对于某些数据库和工作负载,这可能会显着减少聚合时间。注意:这是一个实验性选项。在使用前咨询 Neo4j 支持。 |
|
|
在 5.24 版本中引入 提供一个路径到一个用于存储备份文件直到命令完成的临时空目录。命令完成后,这些文件将被删除。 |
|
|
启用详细输出。 |
|
Neo4j 5.24 引入了 如果未设置 如果您不提供 因此,强烈建议提供 |
示例
聚合位于给定文件夹中的备份链
以下是如何对位于给定文件夹中的一组备份(针对neo4j
数据库)执行聚合的示例。
bin/neo4j-admin database aggregate-backup --from-path=/mnt/backups/ neo4j
该命令首先在/mnt/backups/
目录中查找数据库neo4j
的备份链。如果找到,则将其聚合到单个备份工件中。
使用给定备份文件标识的聚合备份链
以下是如何对使用给定备份文件(针对neo4j
数据库)标识的一组备份执行聚合的示例。
bin/neo4j-admin database aggregate-backup --from-path=/mnt/backups/neo4j-2022-10-18T13-00-07.backup
该命令检查/mnt/backups/
目录中是否存在包括文件neo4j-2022-10-18T13-00-07.backup的备份链,用于数据库neo4j
。如果找到,则将其聚合到单个备份工件中。此选项仅在 Neo4j 5.2 及更高版本中可用。
聚合位于云存储中的备份链
以下示例显示了如何对位于云存储中的一组备份执行聚合。
Neo4j 使用 AWS SDK v2 通过 AWS URL 调用 AWS 上的 API。或者,您可以覆盖端点,以便 AWS SDK 可以使用系统变量 |
-
按照 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
命令设置来自 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" ] } ] }
-
-
然后,使用以下命令聚合位于 AWS S3 存储桶中给定文件夹中的备份链。此示例假设您在
myBucket/myDirectory
文件夹中有一个可通过文件myBackup.backup
识别的备份链。bin/neo4j-admin database aggregate-backup --from-path=s3://myBucket/myDirectory/myBackup.backup mydatabase
-
确保您有 Google 帐户和在 Google Cloud Platform (GCP) 中创建的项目。
-
按照 Google 官方文档中的说明安装
gcloud
CLI — 安装 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 对
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
输出应列出已创建的存储桶。
-
-
然后,使用以下命令聚合位于 Google 存储桶中给定文件夹中的备份链。此示例假设您在
myBucket/myDirectory
文件夹中有一个可通过文件myBackup.backup
识别的备份链。bin/neo4j-admin database aggregate-backup --from-path=gs://myBucket/myDirectory/myBackup.backup mydatabase
-
确保您有 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
-
然后,使用以下命令聚合位于 Azure Blob 存储容器中给定文件夹中的备份链。此示例假设您在
myStorageAccount/myContainer/myDirectory
文件夹中有一个可通过文件myBackup.backup
识别的备份链。bin/neo4j-admin database aggregate-backup --from-path=azb://myStorageAccount/myContainer/myDirectory/myBackup.backup mydatabase