大部分的数据目录中的文件的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
- git克隆<一个href="https://github.com/wiredtiger/wiredtiger.git">https://github.com/wiredtiger/wiredtiger.git一个>
- cd wiredtiger
- ——所有| grep mongodb git分支#发现一个分支匹配您正在使用mongodb的主要版本
- git checkout mongodb - 4.4通过WT代码匹配mongodb 4.4 #作为一个例子
- sh任务
- . / configure——disable-shared with-builtins = lz4上口,zlib zstd
- 使美元- j (nproc)# - j $ (nproc)并行化构建的核心
- 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。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/
*
*
*
表
的
MongoDB
<
- >
WiredTiger
<
- >
日志
版本
数字
:
*
*
|
MongoDB
|
WiredTiger
|
日志
|
*
|
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
- - -
- - -
- - -
- - -
- - -
- - -
+
- - -
- - -
- - - - - -
|
*
|
3.0.15
|
2.5.3
|
1
|
*
|
3.2.20
|
2.9.2
|
1
|
*
|
3.4.15
|
2.9.2
|
1
|
*
|
3.6.4
|
3.0.1
|
2
|
*
|
4.0.16
|
3.1.1
|
3
|
*
|
4.2.1
|
3.2.2
|
3
|
*
|
4.2.6
|
3.3.0
|
3
|
*
|
4.2.6
(
祝福
通过
4.4
)
|
3.3.0
|
4
|
*
|
4.4.0
|
10.0.0
|
5
|
*
/
|
(这有用的表是目前发现在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命令
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29日
30.
31日
32
33
34
35
36
|
美元
wt
WiredTiger
数据
引擎
(
版本
10.0
)
MongoDB
wiredtiger_open
配置
:
。
。
。
global_options
:
- - - - - -
B
维护
释放
3.3
日志
文件
兼容性
- - - - - -
C
配置
wiredtiger_open
配置
- - - - - -
E
关键
秘密
加密
关键
- - - - - -
h
家
数据库
目录
- - - - - -
l
转
日志记录
从
为
调试
- - - - - -
模式
- - - - - -
米
运行
验证
在
元数据
- - - - - -
R
运行
复苏
(
如果
复苏
配置
)
- - - - - -
r
访问
的
数据库
通过
一个
只读的
连接
- - - - - -
年代
运行
打捞
复苏
(
如果
复苏
配置
)
- - - - - -
V
显示
图书馆
版本
和
退出
- - - - - -
v
详细的
命令
:
改变
改变
一个
对象
备份
数据库
备份
紧凑的
紧凑的
一个
对象
版权
显示
版权
信息
创建
创建
一个
对象
降级
降级
一个
数据库
下降
下降
一个
对象
转储
转储
一个
对象
列表
|
上面的选项是全球的,每个子命令其他选项没有上面所示。如。子命令列表有两个选择- c和- v(参见下面的帮助输出)。subcommand-specific选项(- c - v在这种情况下)必须出现后子命令(“列表”、“转储”,等等)在命令行上,和全球选项(-LmRrSVv, - c - e)必须之前它。
|
1
2
3
4
5
6
|
美元
wt
列表
- - -
帮助
wt
:
非法
选项
- - -
- - - - - -
使用
:
wt
(
- - - - - -
LmRrSVv
]
(
- - - - - -
C
配置
]
(
- - - - - -
E
secretkey
]
(
- - - - - -
h
家
]
列表
(
- - - - - -
简历
]
(
uri
]
选项
:
- - - - - -
c
显示
检查点
在
人类
- - - - - -
可读的
格式
(
通过
默认的
检查点
是
不
显示
)
- - - - - -
v
显示
的
完整的
模式
表
(
通过
默认的
只有
一个
子集
是
显示
)
|
设置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.)
|
1
2
|
美元
猫
WiredTiger
config
&
盼
;
日志
=
(
压缩机
=
时髦的
,
路径
=
杂志
)
|
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分布!一个>





