检查数据库一致性
您可以使用 neo4j-admin database check
命令来检查数据库、转储或备份的一致性。neo4j-admin
工具位于 /bin 目录中。
语法
neo4j-admin database check
命令具有以下语法
neo4j-admin database check [-h] [--expand-commands] [--force] [--verbose]
[--check-counts[=true|false]] [--check-graph[=true|false]]
[--check-indexes[=true|false]] [--check-property-owners[=true|false]]
[--additional-config=<file>] [--max-off-heap-memory=<size>]
[--report-path=<path>] [--threads=<number of threads>]
[[--from-path-data=<path> --from-path-txn=<path>] | [--from-path=<path> [--temp-path=<path>]]]
<database>
描述
此命令允许检查数据库、转储或备份的一致性。它不能与当前正在使用的数据库一起使用。
某些检查可能相当耗时,因此对于非常大的数据库,关闭其中一些检查可能很有用。增加堆大小可能是一个好主意。
不建议使用 NFS 检查数据库、转储或备份的一致性,因为这会显著降低过程速度。 |
选项
neo4j-admin database check
命令具有以下选项
选项 | 描述 | 默认值 |
---|---|---|
|
启用详细输出。 |
|
|
显示此帮助信息并退出。 |
|
|
允许在配置值评估中进行命令扩展。 |
|
|
包含附加配置的配置文件。 |
|
|
强制运行一致性检查,无论资源如何,并可能运行更彻底的检查。 |
|
|
对索引执行一致性检查。 |
|
|
在节点、关系、属性、类型和令牌之间执行一致性检查。 |
|
|
对计数执行一致性检查。需要 <check-graph>,并且如果未明确禁用,则可能隐式启用 <check-graph>。 |
|
|
对属性所有权执行一致性检查。需要 <check-graph>,并且如果未明确禁用,则可能隐式启用 <check-graph>。 |
|
|
一致性报告的写入路径。除非具有 |
|
|
|
|
|
用于检查一致性的线程数。 |
|
|
数据库目录的路径,其中包含要从中获取的数据库目录。 |
|
|
事务目录的路径,其中包含要从中获取的数据库的事务目录。 |
|
|
包含需要检查一致性的转储/备份工件的目录路径。如果目录包含多个备份,它将根据找到的事务 ID 选择最新的备份链来执行一致性检查。 |
|
|
用作暂存区域以提取转储/备份工件(如果需要)的目录路径。 |
|
1. 有关详细信息,请参阅 Neo4j Admin 和 Neo4j CLI → 配置。 |
|
输出
如果一致性检查器未发现错误,它将正常退出且不生成报告。如果一致性检查器发现错误,它将以非 0
的退出代码退出,并写入一个名为 inconsistencies-YYYY-MM-DD.HH24.MI.SS.report
的报告文件。报告文件的位置是当前工作目录,或由参数 report-path
指定的位置。
示例
以下是检查数据库、转储或备份一致性的示例。
|
检查本地数据库的一致性
请注意,数据库必须先停止。
bin/neo4j-admin database check neo4j
输出将类似于以下内容
Running consistency check with max off-heap:618.6MiB
Store size:160.0KiB
Allocated page cache:160.0KiB
Off-heap memory for caching:618.5MiB
ID Generator consistency check
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
.................... 100%
Index structure consistency check
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
.................... 100%
Consistency check
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
.................... 100%
检查备份/转储的一致性
使用 --from-path
选项运行以检查备份或转储的一致性
bin/neo4j-admin database check --from-path=<directory-with-backup-or-dump> neo4j
检查存储在云存储中的备份/转储的一致性
以下示例显示如何使用 --from-path
选项检查存储在云存储桶中的备份或转储的一致性。
Neo4j 使用 AWS SDK v2 通过 AWS URL 调用 AWS 上的 API。另外,您可以覆盖端点,以便 AWS SDK 可以与替代存储系统(例如 Ceph、Minio 或 LocalStack)通信,使用系统变量 |
-
按照 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" ] } ] }
-
-
运行
bin/neo4j-admin database check
命令以检查位于 AWS S3 存储桶中的数据库的一致性。该示例假设您的存储桶的myBucket/myDirectory
文件夹中包含备份或转储工件。bin/neo4j-admin database check mydatabase --from-path=s3://myBucket/myDirectory/
-
确保您拥有 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
输出应列出已创建的存储桶。
-
-
运行
bin/neo4j-admin database check
命令以检查位于 Google 存储桶中的数据库的一致性。该示例假设您的存储桶的myBucket/myDirectory
文件夹中包含备份或转储工件。bin/neo4j-admin database check mydatabase --from-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
-
运行
bin/neo4j-admin database check
命令以检查位于 Azure Blob 存储容器中的数据库的一致性。该示例假设您的 Azure 中的myStorageAccount/myContainer/myDirectory
文件夹中包含备份或转储工件。bin/neo4j-admin database check mydatabase --from-path=azb://myStorageAccount/myContainer/myDirectory/