从 URI 创建数据库企业版
此方法使用由 URI 指定的外部来源中的相同种子(seed)来初始化所有数据库。
您可以在 CREATE DATABASE 命令中指定种子 URI 作为参数。
CREATE DATABASE foo OPTIONS { existingData: 'use', seedURI:'s3://myBucket/myBackup.backup' }
CREATE DATABASE foo OPTIONS { seedURI:'s3://myBucket/myBackup.backup' }
|
在 Cypher 5 中需要 |
种子的下载和验证仅在新数据库启动时执行。如果失败,数据库将不可用,并且 SHOW DATABASES 命令会显示 statusMessage 为:Unable to start database。
SHOW DATABASES 的失败输出示例| name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "seed3" | "standard" | [] | "read-write" | "localhost:7682" | "unknown" | FALSE | "online" | "offline" | "Unable to start database `DatabaseId{3fe1a59b[seed3]}`" | FALSE | FALSE | [] |
要确定问题原因,请检查 debug.log 文件。
|
从 Neo4j 2025.01 开始,基于 URI 的种子还可以与 |
Neo4j 中的种子提供程序
种子可以是完整备份、增量备份(请参阅 CloudSeedProvider)或现有数据库的转储文件(dump)。当使用 CloudSeedProvider 时,URI 还可以指向包含备份链的文件夹。这些种子来源被称为种子提供程序。
备份文件具有 .backup 扩展名,而转储文件可以使用用户选择的任何扩展名。例如,备份文件可以命名为 myBackup.backup,而转储文件可以命名为 myDump.dump 或 myBackup.backup,或是任何其他名称。
该机制是可插拔的,允许支持新的种子来源(有关详细信息,请参阅 Java 参考 → 实现自定义种子提供程序)。
该产品内置了对以下挂载文件系统(file)、FTP 服务器、HTTP/HTTPS 服务器、Amazon S3、Google Cloud Storage 和 Azure Cloud Storage 的种子支持。
|
默认支持 Amazon S3、Google Cloud Storage 和 Azure Cloud Storage,但其他提供程序需要配置 |
URLConnectionSeedProvider
URLConnectionSeedProvider 支持以下协议
-
ftp -
http -
https
从 Neo4j 2025.01 开始,URLConnectionSeedProvider 不再支持 file。这适用于 Cypher 5 和 Cypher 25。
CloudSeedProvider
CloudSeedProvider 支持
-
s3 -
gs -
azb
CloudSeedProvider 支持使用 增量备份 文件作为种子。使用提供的增量备份文件时,CloudSeedProvider 会在包含增量备份文件的目录中搜索以该增量备份结尾的 备份链,然后使用此备份链进行种子初始化。
|
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" ] } ] }
-
-
从
myBackup.backup创建数据库。此备份可以是完整备份、增量备份或转储文件。使用 Cypher 5
CREATE DATABASE foo OPTIONS { existingData: 'use', seedURI: 's3://myBucket/myBackup.backup' }使用 Cypher 25 引入于 2025.06
CREATE DATABASE foo OPTIONS { seedURI: 's3://myBucket/myBackup.backup' }
-
确保您拥有 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输出应列出创建的存储桶。
-
-
从
myBackup.backup创建数据库。此备份可以是完整备份、增量备份或转储文件。使用 Cypher 5
CREATE DATABASE foo OPTIONS { existingData: 'use', seedURI: 'gs://myBucket/myBackup.backup' }使用 Cypher 25 引入于 2025.06
CREATE DATABASE foo OPTIONS { seedURI: 'gs://myBucket/myBackup.backup' }
-
确保您拥有 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 -
从
myBackup.backup创建数据库。此备份可以是完整备份、增量备份或转储文件。使用 Cypher 5
CREATE DATABASE foo OPTIONS { existingData: 'use', seedURI: 'azb://myStorageAccount/myContainer/myBackup.backup' }使用 Cypher 25 引入于 2025.06
CREATE DATABASE foo OPTIONS { seedURI: 'azb://myStorageAccount/myContainer/myBackup.backup' }
S3SeedProviderCypher 5已弃用
S3SeedProvider 支持
-
s3:5.26 中弃用
|
Neo4j 捆绑了 AWS S3 连接所需的库。因此,如果您使用 |
S3SeedProvider 需要额外的配置。这是通过 seedConfig 选项指定的,该选项接受逗号分隔的配置列表。每个配置项均以 key=value 的格式指定,如下所示
CREATE DATABASE foo OPTIONS {
existingData: 'use',
seedURI: 's3://myBucket/myBackup.backup',
seedConfig: 'region=eu-west-1'
}
S3SeedProvider 还需要传入凭据。这些凭据通过 seedCredentials 选项指定。种子凭据会从 Cypher 命令安全地传递给托管数据库的每个服务器。为了使其生效,必须在集群中的每个服务器上将 Neo4j 配置为具有相同的密钥库(keystore)。这与远程别名所需的配置相同,请参阅 配置带有远程数据库别名的 DBMS。如果没有此配置,seedCredentials 选项将会失败。
CREATE DATABASE foo OPTIONS {
existingData: 'use',
seedURI: 's3://myBucket/myBackup.backup',
seedConfig: 'region=eu-west-1',
seedCredentials: <accessKey>;<secretKey>
}
其中 <accessKey> 和 <secretKey> 由 AWS 提供。
种子提供程序参考
| URL 方案 | 种子提供程序 | URI 示例 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
支持基于日期或事务 ID 进行种子初始化
从 Neo4j 2025.01 开始,在创建数据库时,可以通过 seedRestoreUntil 选项将种子初始化到特定日期或事务 ID。
CloudSeedProvider 和 FileSeedProvider 支持 seedRestoreUntil 选项。
- 初始化到特定日期
-
要初始化到特定日期,请提供包含该日期之前数据的增量备份。
CREATE DATABASE foo OPTIONS { existingData: 'use', seedURI: 's3://myBucket/myBackup.backup', seedRestoreUntil: datetime('2019-06-01T18:40:32.142+0100') }引入于 2025.06CREATE DATABASE foo OPTIONS { seedURI: 's3://myBucket/myBackup.backup', seedRestoreUntil: datetime('2019-06-01T18:40:32.142+0100') }这将使用在提供的日期之前提交的事务来初始化数据库。
- 初始化到特定事务 ID
-
要初始化到特定事务 ID,请提供包含该事务 ID 之前数据的增量备份。
CREATE DATABASE foo OPTIONS { existingData: 'use', seedURI: 's3://myBucket/myBackup.backup', seedRestoreUntil: 123 }引入于 2025.06CREATE DATABASE foo OPTIONS { seedURI: 's3://myBucket/myBackup.backup', seedRestoreUntil: 123 }这将使用事务 123 之前(不包括 123)的事务来初始化数据库。