备份离线数据库

请记住仔细规划备份并备份您的每个数据库,包括 system 数据库。

命令

neo4j-admin database dump 命令可用于对离线数据库执行完全备份。它将数据库转储为单个文件存档,称为 <database>.dump,并将其存储在 <NEO4J_HOME>/data 目录中。此外,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>

描述

将数据库转储为单个文件存档。该存档可供加载命令使用。<to-path> 应该是一个目录(在这种情况下将创建名为 <database>.dump 的文件),或者可以提供 --to-stdout 以使用标准输出。如果既未提供 --to-path 也未提供 --to-stdout,则将使用 server.directories.dumps.root 设置作为目标。无法转储在运行中的 Neo4j 服务器中挂载的数据库。

参数

表 1. neo4j-admin database dump 参数
参数 描述

<database>

要转储的数据库名称。可以包含 * 和 ? 进行通配符匹配。请注意,* 和 ? 在某些 shell 中具有特殊含义,可能需要转义或使用引号。

选项

neo4j-admin database dump 命令具有以下选项

表 2. neo4j-admin database dump 选项
选项 描述 默认值

--additional-config=<file>[1]

包含附加配置的配置文件。

--expand-commands

允许在配置值评估中进行命令扩展。

-h, --help

显示此帮助消息并退出。

--overwrite-destination[=true|false]

覆盖目标文件夹中任何现有转储文件。

false

--to-path=<path>

数据库转储的目标文件夹。可以使用适当的 URI 作为路径,将数据库转储到 AWS S3 桶、Google Cloud 存储桶和 Azure 桶。

--to-stdout

使用标准输出作为数据库转储的目标。

--verbose

启用详细输出。

1. 有关详细信息,请参阅Neo4j Admin 和 Neo4j CLI → 配置

--to-path=<path> 选项还可以将数据库转储到 AWS S3 桶、Google Cloud 存储桶和 Azure 桶。更多信息请参见将数据库转储到云存储中的文件夹

示例

以下示例展示了如何使用 neo4j-admin database dump 命令转储数据库。该命令将创建一个名为 database.dump 的文件,其中 database 是命令中指定的数据库。

neo4j-admin database dump 不能应用于复合数据库。它必须直接在与该复合数据库关联的数据库上运行。

将默认数据库 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.endpointUrls3aws.endpointUrlS3aws.endpointUrl,或者环境变量 AWS_ENDPOINT_URL_S3AWS_ENDPOINT_URL 覆盖端点,以便 AWS SDK 可以与替代存储系统(例如 Ceph、Minio 或 LocalStack)进行通信。

  1. 按照 AWS 官方文档中的说明安装 AWS CLI——安装 AWS CLI 版本 2

  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 结合使用

  3. 运行以下命令,验证 ~/.aws/config 文件是否正确

    cat ~/.aws/config

    输出应如下所示

    [default]
    region=us-east-1
  4. 通过在 ~/.aws/credentials 文件中设置 aws_access_key_idaws_secret_access_key,并在需要时使用桶策略,来配置对 AWS S3 桶的访问。例如:

    1. 使用 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
    2. 此外,您可以使用基于资源的策略来授予对 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"
                  ]
              }
          ]
      }
  5. 运行 neo4j-admin database dump 命令将数据库转储到 AWS S3 桶中

    bin/neo4j-admin database dump mydatabase --to-path=s3://myBucket/myDirectory/
  1. 确保您拥有 Google 帐户并在 Google Cloud Platform (GCP) 中创建了项目。

    1. 按照 Google 官方文档中的说明安装 gcloud CLI——安装 gcloud CLI

    2. 使用 Google 官方文档创建服务账号和服务账号密钥——创建服务账号创建和管理服务账号密钥

    3. 下载服务账号的 JSON 密钥文件。

    4. GOOGLE_APPLICATION_CREDENTIALSGOOGLE_CLOUD_PROJECT 环境变量分别设置为 JSON 密钥文件的路径和项目 ID

      export GOOGLE_APPLICATION_CREDENTIALS="/path/to/keyfile.json"
      export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
    5. 使用您创建的服务账号的电子邮件地址、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

    6. 使用 Google 官方文档在 Google Cloud Storage 中创建一个存储桶——创建存储桶

    7. 运行以下命令验证存储桶是否已创建

      gcloud storage ls

      输出应该列出已创建的存储桶。

  2. 运行 neo4j-admin database dump 命令将数据库转储到 Google 存储桶中

    bin/neo4j-admin database dump mydatabase --to-path=gs://myBucket/myDirectory/
  1. 确保您拥有 Azure 帐户、Azure 存储帐户和 Blob 容器。

    1. 您可以使用 Azure 门户创建存储帐户。
      更多信息,请参阅 Azure 官方文档:创建存储帐户

    2. 在 Azure 门户中创建 Blob 容器。
      更多信息,请参阅 Azure 官方文档:快速入门:使用 Azure 门户上传、下载和列出 Blob

  2. 按照 Azure 官方文档中的说明安装 Azure CLI——Azure 官方文档

  3. 使用默认的 Azure 凭据对 neo4j 或 neo4j-admin 进程进行身份验证。
    更多信息请参阅 Azure 官方文档中的默认 Azure 凭据

    az login

    然后您应该可以使用 Azure URL 在 neo4j 或 neo4j-admin 中。

  4. 要验证您是否可以使用登录凭据访问容器,请运行以下命令

    # 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
  5. 运行 neo4j-admin database dump 命令将数据库转储到 Azure 容器中

    bin/neo4j-admin database dump mydatabase --to-path=azb://myStorageAccount/myContainer/myDirectory/
© . All rights reserved.