如何通过 oak-run 运行数据存储一致性检查
了解如何在Adobe Experience Manager中通过oak-run运行数据存储一致性检查。
描述 description
环境
Adobe Experience Manager (AEM)
问题
数据存储一致性检查将报告任何缺失但仍被引用的数据存储二进制文件。 一致性检查可由Felix控制台直接触发。
它可以从MarkSweepGarbageCollector#checkConsistency Mbean触发。
如果BlobGC MBeans已在MBeanServer中注册,则也可以使用以下mbean:
BlobGCMbean#checkConsistency
一致性检查完成后,将显示一条消息,显示报告的二进制文件数缺失。 如果数字大于 0(zero),请检查为org.apache.jackrabbit.oak.plugins.blob .MarkSweepGarbageCollector配置的日志以了解有关缺少的二进制文件的更多详细信息。
以下是如何在日志中报告缺少的二进制文件的示例:
11:32:39.673 INFO [ main] MarkSweepGarbageCollector.java:600 Consistency check found 1 missing blobs 11:32:39.673 WARN [ main] MarkSweepGarbageCollector.java:602 Consistency check failure in the the blob store : DataStore backed BlobStore [ org.apache.jackrabbit.oak.plugins.blob.datastore.OakFileDataStore] , check missing candidates in file /tmp/gcworkdir-1467352959243/gccand-1467352959243
与/system/console/repositorycheck UI不同,除了其余内容路径之外,oak-run工具还会检查/oak: index下隐藏的Lucene索引文件。 oak-run 的datastorecheck命令可用于对数据存储执行一致性检查。 有关如何执行命令的详细步骤详述如下:
解决方法 resolution
-
将oak-run jar 1.8.8或更高版本下载到AEM服务器。
-
将oak run jar放在放置
crx-quickstart的同一个目录中,否则在执行以下命令时提供oak-run-*.jar的完整路径。 -
运行以下命令(根据您的环境更新段存储和数据存储的路径):
code language-none java -jar oak-run-*.jar datastorecheck --consistency --ref --id --fds crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config --repoHome crx-quickstart/repository --store crx-quickstart/repository/segmentstore --dump temp --verbose --track -
该命令将输出数据存储一致性检查。
DataStore 的一致性检查器还可用于列出节点存储中的所有 blob 引用以及数据存储中可用的所有 blob id。 使用以下命令:
$ java-jar oak-run-*.jar datastorecheck [ --id] [ --ref] [ --consistency] \
[ --store |] \
[ --s3ds |--fds] \
[ --dump] \
[ --track]
提供以下一个或多个可用选项:
—id — 列出数据存储中的所有id。
—ref — 列出节点存储中的所有blob引用。
—consistency — 通过执行一致性检查列出所有缺失的Blob。
以下选项可选:
—store - mongo uri段存储的路径(上述 — ref和 — consistency选项必需)。
—dump — 转储文件的路径(可选)。 否则,文件将转储到用户 tmp 目录中。
—s3ds - S3DataStore配置文件的路径。
—fds - FileDataStore配置文件的路径('path'属性是必需的)。
—track — 本地存储库主文件夹的路径(可选)。 它放置要跟踪的已下载 blob id 的副本。