wiredtiger文件取证大部分的数据目录中的文件的MongoDB服务器是由WiredTiger存储引擎。如果你想看看里面的内容您可以使用工具“wt”WiredTiger库:

https://github.com/wiredtiger/wiredtiger/

http://source.wiredtiger.com/10.0.0/command_line.html

检查WiredTiger文件不是一个必要的MongoDB DBA技能——这只是好奇。或者后数据恢复,如果你不使用一个复制集。但对于某种类型的人这是有趣的,如果你主动点击一个页面链接到“文件取证”似乎是你。

构建和安装“wt”执行

文档:http://source.wiredtiger.com/develop/install.html

  1. git克隆<一个href="https://github.com/wiredtiger/wiredtiger.git">https://github.com/wiredtiger/wiredtiger.git
  2. cd wiredtiger
  3. ——所有| grep mongodb git分支#发现一个分支匹配您正在使用mongodb的主要版本
  4. git checkout mongodb - 4.4通过WT代码匹配mongodb 4.4 #作为一个例子
  5. sh任务
  6. . / configure——disable-shared with-builtins = lz4上口,zlib zstd
  7. 使美元- j (nproc)# - j $ (nproc)并行化构建的核心
  8. sudo make install

使配置上面的点:

使用——disabled-shared力构建的“wt”二进制包括libwiredtiger静态代码和其他一些填词。(你仍然需要安装(自由)上口,libzstd、libz,和liblz4包在其他服务器上你复制wt二进制)。

如果你没有禁用共享库模式,最终建立产品将有所不同。顶部的“wt”目标可执行的源目录(和安装/usr/local/bin/)将是一个脚本,而不是编译后的二进制文件。脚本将执行一个已编译的二进制构建在lib / wt,但之前修复LD_LIBRARY_PRELOAD环境变量二进制可以找到libwiredtiger。所以,也在lib /。黑客需要如果你然后尝试移动这些文件。

也使用——with-builtins = lz4上口,zlib zstd符合正常mongod二进制文件的预期。但随时去掉“lz4”、“zlib”和/或“zstd”如果有麻烦安装这些库的开发方案。只使用时髦的99% + MongoDB的部署。

——with-builtins lz4,上口,zlib zstd,即。没有一个“=”选项名称和值之间,将失败的消息“检查构建系统类型…无效配置时髦”:机时髦的“不承认”。把“=”。

您可以使用配置选项-enable-XXX(如。-enable-snappy)构建扩展而不是作为独立的库,但这是困难的。你必须不断地指定完整路径独立的扩展库作为额外扩展配置每次wt程序。

版本

你需要建立一个wiredtiger这取决于mongodb的不同分支版本的数据你看。下表中的“日志”意味着事务日志,又名《华尔街日报》在mongodb。

(这有用的表是目前发现在mongo评论/ db /存储/ wiredtiger / wiredtiger_kv_engine.cpp。)

构建WT匹配4.4做“git checkout mongodb - 4.4”, 4.2最新的小版本“git checkout mongodb - 4.2”,等等。还有标签(而非分支机构)对很多次要版本。使用“git分支——”和“git标签附些”。

“wt”建立快捷方式

如果你已经有一个compilable源代码的目录MongoDB社区雷竞技下载官网MongoDB Percona服务器,稍微能快速构建和安装wt是运行您“wt”作为目标(而不是“mongod”,或“install-core”,等等)。WiredTiger库代码的子目录src / third_party / WiredTiger /已经精心地匹配哪个版本的MongoDB有检出。

构建二进制文件将被创建在构建/ opt / third_party / wiredtiger / wt如果构建与遗留(< = v4.2风格)安装模式。否则,它安装到您的前缀选择+ / bin /我相信。

执行wt命令

上面的选项是全球的,每个子命令其他选项没有上面所示。如。子命令列表有两个选择- c和- v(参见下面的帮助输出)。subcommand-specific选项(- c - v在这种情况下)必须出现子命令(“列表”、“转储”,等等)在命令行上,和全球选项(-LmRrSVv, - c - e)必须之前它。

设置wiredtiger_open配置字符串

MongoDB配置WiredTiger这(默认)时髦的压缩机,和WT事务日志文件放置在《/”子目录下。

一些wt子命令不需要读事务日志,所以你可能没有设置这个生存。但如果你做“wt: __wt_log_scan, 2114:没有找到日志文件:操作不支持”是错误消息,你会看到,你应该遵循本节的建议。

无论是“杂志”事务日志目录或时髦的压缩是WT库的默认值。输出显示了当前v10.0.0 wt的帮助“MongoDB wiredtiger_open配置:日志=(启用= true,路径= journal,压缩机=时髦)”第二或第三行输出,但这是误导。它只是一个提示消息,而不是配置字符串实际上效果

所以在配置中设置这个值字符串wiredtiger连接API知道如何打开wiredtiger事务日志文件。(选项设置方法解释“如何将配置生效”部分稍微进一步页面。)

日志=(压缩机=时髦的,路径=杂志)

2021年5月:我不包括启用日志= (= true,…)价值因为它不似乎是必要的,它导致“WT_LOGSCAN_FIRST不设置”当使用错误wt printlog至少子命令。

配置字符串的语法

看到http://source.wiredtiger.com/10.0.0/config_strings.html关于所谓的笔记“兼容JavaScript对象表示法(JSON)”配置WT使用的字符串格式。

在配置字符串在WT或MongoDB代码,您将看到,本文中使用的,没有括号“{}”或”:“键-值分隔符。相反,它将“对象= (key1 = val1 key2 = val2 . .), array_val = (val1, val2 val3)”风格。很奇怪JSON,但是想必也完全符合一些标准JSON写的地方。

这些配置选项的WT C APIwiredtiger_open函数初始化一个WT_CONNECTION对象。在util_main (grep wiredtiger_open_configuration”。cpp如果你想确认代码。)

如何让配置生效

最低优先级:WiredTiger。配置文件

这可能是最舒适的选择。把配置文件WiredTiger字符串。配置在的data directory (i.e. alongside WiredTiger.wt, WiredTiger.turtle, all the collection and index *.wt files, etc.)

http://source.wiredtiger.com/1.4.2/database_config.html config_file

中等优先级:WIREDTIGER_CONFIG环境变量

设置将覆盖那些来自WiredTiger。配置文件。

如。这个设置将使详细日志消息的代码的地方__wt_verbose(会话、WT_VERB_METADATA…)被称为。

出口WIREDTIGER_CONFIG=“verbose =(元数据)”

http://source.wiredtiger.com/1.4.2/database_config.html config_file

最高优先级:使用- c选项

这还包括值合并前两个来源,但是最终决定权在配置字符串传递到什么wiredtiger_open (. .,. .,配置_string, &conn)

注意- c值之前子命令。如。

wt- - - - - -C“日志=(压缩机=上口,路径= journal)”列表

“wt”实效的一些其他选项会增加这个配置字符串。如。- m补充道“verify_metadata = true”, - r补充道“日志= =(恢复)”,等等。

配置合并规则

…我不清楚。在实际测试中,它有时似乎覆盖,但在其他时候合并。看到的代码wiredtiger_open ()如果你想找出答案。

MongoDB使用什么wiredtiger_open()配置呢?

正好你可以很容易地看到配置字符串mongod使用因为它初始化一个内部连接WiredTiger库。只是搜索“开放WiredTiger”mongod诊断日志文件。MongoDB 4.4 +,结构化json-style日志文件中,您可以为一个独特的日志消息或者grep标识号码22315年

grep - m 1美元的开放WiredTiger /数据/ node_s1n1 / mongod.log

{" t ":{" $日期":" 2021 - 04 - 27 t21:58:09.580 + 9”},“s”:“我”,“c”:“储存”,“id”: 22315年,“ctx”:“initandlisten”、“味精”:“打开WiredTiger”,“attr”:{“配置”:“创建、cache_size = 7375 session_max = 33000,驱逐= (threads_min = 4, threads_max = 4), config_base = false,统计=(快),日志= (= true,启用归档= true,路径= journal,压缩机=时髦),file_manager = (close_idle_time = 100000, close_scan_interval = 10, close_handle_minimum = 250), statistics_log =(等待= 0),详细= [recovery_progress、checkpoint_progress compact_progress),"}}

可以使用整个配置字符串开始wt工具面板时,但是你不需要。有些为异步过程,例如。驱逐和文件管理器计时器,wt util不会运行。和一些我不会使用:如。日志=(归档= true)将丢弃旧日志文件恢复后和检查点,如果你设法使这仅仅发生在wt命令。

总结

这篇文章是一个相对短暂的指南如何构建“wt”WiredTiger图书馆的效用;+信息运行时配置值时需要检查数据目录由MongoDB。

请看下一篇文章“<一个href="//m.doggingzone.com/blog/2021/05/18/wiredtiger-file-forensics-part-2-wt-dump">WiredTiger文件取证(第2部分:wt转储)“看到如何使用这个工具mongod节点的数据目录文件。

雷竞技下载官网MongoDB Percona分布是一个免费的MongoDB数据库选择,给你一个解决方案,结合了最好的和最重要的开放源码社区的企业组件,设计和测试一起工作。

今天下载Mongo雷竞技下载官网DB Percona分布!