任何一种数据库都有各种各样的日志,MongoDB也不例外。
MongoDB中有4种日志:分别是系统日志(log)、Journal日志、主从日志(oplog)、慢查询日志等。
这些日志记录着MongoDB数据库不同方面的踪迹。
- 系统日志
系统日志在MongoDB数据库中很重要,它记录着MongoDB启动和停止的操作,以及服务器在运行过程中发生的任何异常信息。
配置系统日志的方法比较简单,在启动mongod时指定logpath参数即可
mongod -logpath=/path/to/mongod.log -logappend
系统日志会向logpath指定的文件持续追加。
- Journal日志
journaling日志功能则是 MongoDB 里面非常重要的一个功能 ,
它保证了数据库服务器在意外断电 、 自然灾害等情况下数据的完整性。
它通过预写式的redo日志为MongoDB增加了额外的可靠性保障。
开启该功能时,MongoDB会在进行写入时建立一条Journal日志,其中包含了此次写入操作具体更改的磁盘地址和字节。
因此一旦服务器突然停机,可在启动时对日记进行重放,从而重新执行那些停机前没能够刷新到磁盘的写入操作。
WiredTiger使用检查点以提供磁盘上数据的一致视图,并允许MongoDB从最后一个检查点恢复。
但是,如果MongoDB在检查点之间意外退出,则需要日记来恢复上一个检查点之后发生的信息。
从MongoDB 4.0开始,对于使用WiredTiger存储引擎的副本集成员,不能指定—nojournal选项或storage.journal.enabled:false。
使用日志记录的恢复过程:
1.在数据文件中查找最后一个检查点的标识符
2.在日记文件中搜索与最后一个检查点的标识符匹配的记录
3.从上一个检查点开始,将操作应用于日志文件。
- 主从日志oplog
Replica Sets复制集用于在多台服务器之间备份数据。
MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作。
oplog是主节点的local数据库中的一个固定集合。备份节点通过查询这个集合就可以知道需要进行复制的操作。
- 慢查询日志
MongoDB中使用系统分析器(system profiler)来查找耗时过长的操作。
系统分析器记录固定集合system.profile中的操作,
并提供大量有关耗时过长的操作信息,
但相应的mongod的整体性能也会有所下降。
因此我们一般定期打开分析器来获取信息。
参考
mongoDB 参考 > 存储 > 日志记录 > 管理日记
https://mongodb.net.cn/manual/tutorial/manage-journaling
MongoDB中有几种日志?
https://www.cnblogs.com/leoyang63/articles/12023731.html
https://www.cnblogs.com/duanxz/p/4375252.html
MongoDB日志记录
https://mongoing.com/archives/76040
https://mongodb.net.cn/manual/core/journaling
MongoDB 使用规范及最佳实践
https://mongoing.com/archives/82633
一文读懂如何查询 MongoDB 文档
https://mongoing.com/archives/82302
网友评论