MongoDB如何查oplog.rs集合裡的操作日誌
首先需要介紹一下mongodb local庫的作用
local庫是MongoDB的系統庫,記錄著時間戳和索引和複製集等資訊
test:PRIMARY> use local
switched to db local
test:PRIMARY> show tables;
system.replset
me
startup_log
replset.minvalid
oplog.rs
replset.election
test:PRIMARY>
local庫下的每個集合分別記錄的內容
local庫下面的me集合儲存了伺服器名稱
local庫下面的replset.minvalid集合儲存了資料庫最新操作的時間戳
local庫下面的startup_log集合記錄這mongod每一次的啟動資訊
local庫下面的system.indexes集合記錄當前庫的所有索引資訊
local庫下面的system.replset記錄著複製集的成員配置資訊rs.conf()讀取這個集合
local庫下面的oplog.rs集合記錄著所有操作,MongoDB就是透過oplog.rs來實現資料同步的。當Primary節點插入一條資料後,oplog.rs集合中就會多一條記錄
op:操作型別,插入對應i;更新對應u;刪除對應d;但有一種情況是n,它表示無操作(no-op),緊緊代表一個訊息資訊。
例如:
查詢oplog裡的insert記錄,對應op為i的記錄:
test:PRIMARY> db.oplog.rs.find({"op" : "i"}).pretty().limit(3)
查update操作命令:
test:PRIMARY> db.oplog.rs.find({"op" : "u"}).pretty().limit(3)
test:PRIMARY>
查delete操作命令:
test:PRIMARY> db.oplog.rs.find({"op" : "d"}).pretty().limit(3)
根據時間範圍查操作:
例如:
查詢2017年9月1日之後的操作記錄:
test:PRIMARY> db.oplog.rs.find({"o.createTime": {$gte:new Date(2017,9,1)}}).limit(3)
查2017年9月1日到10月31日之間的操作記錄:
test:PRIMARY> db.oplog.rs.find({"o.createTime": {$gte:new Date(2017,9,1),$lte:new Date(2017,10,31)}}).limit(3)
我們查查對chenfeng表進行操作的所有的 oplog 記錄
test:PRIMARY> db.oplog.rs.find({ns : "testdb.chenfeng"})
查操作的時間戳:
db.oplog.rs.find({"op" : "i","ns" : "testdb.chenfeng",},{ts:1}).pretty()
{ "ts" : Timestamp(1509246747, 1) }
{ "ts" : Timestamp(1509246747, 2) }
{ "ts" : Timestamp(1509246747, 3) }
{ "ts" : Timestamp(1509246747, 4) }
{ "ts" : Timestamp(1509246747, 5) }
當前操作時間點的時間戳:
test:PRIMARY> rs.status().members[0].optime.ts
Timestamp(1509247609, 3001)
如何備份oplog集合:
[root@192 new]# mongodump --host localhost --port 9336 -uadmin -padmin --authenticationDatabase=admin -d local -c oplog.rs -o /root/new
2017-10-29T12:36:45.605+0800 writing local.oplog.rs to local/oplog.rs.bson
2017-10-29T12:36:48.606+0800 [#.......................] local.oplog.rs 398917/4937240 (8.1%)
2017-10-29T12:36:51.610+0800 [###.....................] local.oplog.rs 812569/4937240 (16.5%)
2017-10-29T12:36:54.611+0800 [#####...................] local.oplog.rs 1208741/4937240 (24.5%)
2017-10-29T12:36:57.607+0800 [#######.................] local.oplog.rs 1570342/4937240 (31.8%)
2017-10-29T12:37:00.617+0800 [#########...............] local.oplog.rs 1948323/4937240 (39.5%)
2017-10-29T12:37:03.606+0800 [###########.............] local.oplog.rs 2346269/4937240 (47.5%)
2017-10-29T12:37:06.606+0800 [#############...........] local.oplog.rs 2741569/4937240 (55.5%)
2017-10-29T12:37:09.609+0800 [###############.........] local.oplog.rs 3137392/4937240 (63.5%)
2017-10-29T12:37:12.606+0800 [#################.......] local.oplog.rs 3533685/4937240 (71.6%)
2017-10-29T12:37:15.610+0800 [##################......] local.oplog.rs 3897290/4937240 (78.9%)
2017-10-29T12:37:19.672+0800 [###################.....] local.oplog.rs 3947430/4937240 (80.0%)
2017-10-29T12:37:21.609+0800 [####################....] local.oplog.rs 4147978/4937240 (84.0%)
2017-10-29T12:37:24.607+0800 [#####################...] local.oplog.rs 4518546/4937240 (91.5%)
2017-10-29T12:37:27.606+0800 [#######################.] local.oplog.rs 4910376/4937240 (99.5%)
2017-10-29T12:37:27.758+0800 writing local.oplog.rs metadata to local/oplog.rs.metadata.json
2017-10-29T12:37:27.770+0800 done dumping local.oplog.rs (4937240 documents)
用bsondump查操作記錄:
查插入操作:
# bsondump oplog.rs.bson | grep "\"op\":\"i\"" | head
查刪除操作:
# bsondump oplog.rs.bson | grep "\"op\":\"d\"" | head
查更新操作:
[root@192 local]# bsondump oplog.rs.bson | grep "\"op\":\"u\"" | head
恢復oplog集合命令:
mongorestore --host localhost --port 9336 -uadmin -padmin --authenticationDatabase=admin -d local -c oplog.rs /root/new/local/oplog.rs.bson
local庫是MongoDB的系統庫,記錄著時間戳和索引和複製集等資訊
test:PRIMARY> use local
switched to db local
test:PRIMARY> show tables;
system.replset
me
startup_log
replset.minvalid
oplog.rs
replset.election
test:PRIMARY>
local庫下的每個集合分別記錄的內容
local庫下面的me集合儲存了伺服器名稱
local庫下面的replset.minvalid集合儲存了資料庫最新操作的時間戳
local庫下面的startup_log集合記錄這mongod每一次的啟動資訊
local庫下面的system.indexes集合記錄當前庫的所有索引資訊
local庫下面的system.replset記錄著複製集的成員配置資訊rs.conf()讀取這個集合
local庫下面的oplog.rs集合記錄著所有操作,MongoDB就是透過oplog.rs來實現資料同步的。當Primary節點插入一條資料後,oplog.rs集合中就會多一條記錄
op:操作型別,插入對應i;更新對應u;刪除對應d;但有一種情況是n,它表示無操作(no-op),緊緊代表一個訊息資訊。
例如:
查詢oplog裡的insert記錄,對應op為i的記錄:
test:PRIMARY> db.oplog.rs.find({"op" : "i"}).pretty().limit(3)
查update操作命令:
test:PRIMARY> db.oplog.rs.find({"op" : "u"}).pretty().limit(3)
test:PRIMARY>
查delete操作命令:
test:PRIMARY> db.oplog.rs.find({"op" : "d"}).pretty().limit(3)
根據時間範圍查操作:
例如:
查詢2017年9月1日之後的操作記錄:
test:PRIMARY> db.oplog.rs.find({"o.createTime": {$gte:new Date(2017,9,1)}}).limit(3)
查2017年9月1日到10月31日之間的操作記錄:
test:PRIMARY> db.oplog.rs.find({"o.createTime": {$gte:new Date(2017,9,1),$lte:new Date(2017,10,31)}}).limit(3)
我們查查對chenfeng表進行操作的所有的 oplog 記錄
test:PRIMARY> db.oplog.rs.find({ns : "testdb.chenfeng"})
查操作的時間戳:
db.oplog.rs.find({"op" : "i","ns" : "testdb.chenfeng",},{ts:1}).pretty()
{ "ts" : Timestamp(1509246747, 1) }
{ "ts" : Timestamp(1509246747, 2) }
{ "ts" : Timestamp(1509246747, 3) }
{ "ts" : Timestamp(1509246747, 4) }
{ "ts" : Timestamp(1509246747, 5) }
當前操作時間點的時間戳:
test:PRIMARY> rs.status().members[0].optime.ts
Timestamp(1509247609, 3001)
如何備份oplog集合:
[root@192 new]# mongodump --host localhost --port 9336 -uadmin -padmin --authenticationDatabase=admin -d local -c oplog.rs -o /root/new
2017-10-29T12:36:45.605+0800 writing local.oplog.rs to local/oplog.rs.bson
2017-10-29T12:36:48.606+0800 [#.......................] local.oplog.rs 398917/4937240 (8.1%)
2017-10-29T12:36:51.610+0800 [###.....................] local.oplog.rs 812569/4937240 (16.5%)
2017-10-29T12:36:54.611+0800 [#####...................] local.oplog.rs 1208741/4937240 (24.5%)
2017-10-29T12:36:57.607+0800 [#######.................] local.oplog.rs 1570342/4937240 (31.8%)
2017-10-29T12:37:00.617+0800 [#########...............] local.oplog.rs 1948323/4937240 (39.5%)
2017-10-29T12:37:03.606+0800 [###########.............] local.oplog.rs 2346269/4937240 (47.5%)
2017-10-29T12:37:06.606+0800 [#############...........] local.oplog.rs 2741569/4937240 (55.5%)
2017-10-29T12:37:09.609+0800 [###############.........] local.oplog.rs 3137392/4937240 (63.5%)
2017-10-29T12:37:12.606+0800 [#################.......] local.oplog.rs 3533685/4937240 (71.6%)
2017-10-29T12:37:15.610+0800 [##################......] local.oplog.rs 3897290/4937240 (78.9%)
2017-10-29T12:37:19.672+0800 [###################.....] local.oplog.rs 3947430/4937240 (80.0%)
2017-10-29T12:37:21.609+0800 [####################....] local.oplog.rs 4147978/4937240 (84.0%)
2017-10-29T12:37:24.607+0800 [#####################...] local.oplog.rs 4518546/4937240 (91.5%)
2017-10-29T12:37:27.606+0800 [#######################.] local.oplog.rs 4910376/4937240 (99.5%)
2017-10-29T12:37:27.758+0800 writing local.oplog.rs metadata to local/oplog.rs.metadata.json
2017-10-29T12:37:27.770+0800 done dumping local.oplog.rs (4937240 documents)
用bsondump查操作記錄:
查插入操作:
# bsondump oplog.rs.bson | grep "\"op\":\"i\"" | head
查刪除操作:
# bsondump oplog.rs.bson | grep "\"op\":\"d\"" | head
查更新操作:
[root@192 local]# bsondump oplog.rs.bson | grep "\"op\":\"u\"" | head
恢復oplog集合命令:
mongorestore --host localhost --port 9336 -uadmin -padmin --authenticationDatabase=admin -d local -c oplog.rs /root/new/local/oplog.rs.bson
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2149056/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MongoDB 集合的插入、更新、刪除操作MongoDB
- 如何優雅的記錄操作日誌?
- 如何精準查詢日誌
- Mongodb預設日誌的清理!MongoDB
- 如何記錄可讀性的操作日誌?
- mongodb 日誌分析工具mtoolsMongoDB
- MongoDB 日誌分析工具 mtoolsMongoDB
- mysql 日誌之慢查詢日誌MySql
- MySQL裡的那些日誌們MySql
- MongoDB小技巧之如何使用帶下劃線的集合名查詢MongoDB
- 如何優雅地記錄操作日誌?
- 如何優雅地記錄操作日誌
- loki的日誌查詢Loki
- mysql 日誌之普通查詢日誌MySql
- 基於 MongoDB 的 python 日誌功能MongoDBPython
- 基於MongoDB的python日誌功能MongoDBPython
- mongodb日誌太大的解決辦法MongoDB
- MongoDB增刪改查操作MongoDB
- 微服務體系操作日誌如何記錄?微服務
- 如何使用Journalctl檢視並操作Systemd日誌
- MongoDB之資料查詢(巢狀集合)MongoDB巢狀
- 2.4慢操作日誌
- ELK 5.0.1+Filebeat5.0.1實時監控MongoDB日誌並使用正則解析mongodb日誌MongoDB
- MongoDB的日誌Journaling詳解MongoDB
- 慢查詢日誌的管理
- mysql 查詢日誌MySql
- mysql查詢日誌MySql
- 查詢集合操作intersect與minus
- MongoDB 操作文件 查詢文件MongoDB
- PHP操作MongoDB(增刪改查)PHPMongoDB
- MongoDB之資料查詢操作MongoDB
- 如何線上操作監聽日誌listener.log
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- PHP慢指令碼日誌和Mysql的慢查詢日誌PHP指令碼MySql
- mysql之 日誌體系(錯誤日誌、查詢日誌、二進位制日誌、事務日誌、中繼日誌)MySql中繼
- 如何在MySQL中開啟慢查詢日誌?MySql
- 日誌分析常規操作
- secureCRT記錄操作日誌Securecrt