日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongodb检查点_Mongodb 日志原理和操作

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongodb检查点_Mongodb 日志原理和操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

日志原理:

WiredTiger使用檢查點在磁盤上提供一致性數據視圖,并允許MongoDB從上一個檢查點恢復。?但是,如果MongoDB在檢查點之間意外退出,則需要使用日志記錄來恢復上次檢查點之后發生的信息。

通過日志記錄,恢復過程如下:

查看數據文件以查找上一個檢查點的標識符。

在日志文件中搜索與上一個檢查點的標識符相匹配的記錄。

自上次檢查點以來,在日志文件中應用這些操作。

MongoDB WiredTiger 首先使用內存緩沖來存儲日志記錄,直到超過128 kB,才寫入磁盤。根據以下時間間隔或條件,WiredTiger將緩沖的日記記錄同步到磁盤:

3.2版新增功能:每50毫秒。

版本3.6中:MongoDB?設置檢查點以60秒的間隔執行。

如果寫入操作包含?j:true?的寫入指令,則WiredTiger會強制WiredTiger日志文件同步。

由于MongoDB使用的日志文件大小限制為100 MB,WiredTiger大約每隔100 MB創建一個新的日志文件。當WiredTiger創建新的日志文件時,WiredTiger將同步前一個日志文件。

注意:

在寫操作之間,當日志記錄保留在WiredTiger緩沖區中時,在mongod強制關閉時更新可能會丟失。

日志方式:

不開啟 ? ? ?journal

,寫入 wiredtiger ? ? ?的數據,并不會立即持久化存儲;而是每分鐘會做一次全量的checkpoint(

storage.syncPeriodSecs

配置項,默認為1分鐘),將所有的數據持久化。

開啟 journal 后

,每次寫入會記錄一條操作日志(通過journal可以重新構造出寫入的數據)。這樣即使出現宕機,啟動時 ? ? ?Wiredtiger 會先將數據恢復到最近的一次checkpoint的點,然后重放后續的 journal 操作日志來恢復數據。

MongoDB 里的 journal 行為 主要由2個參數控制,

storage.journal.enabled

決定是否開啟journal,

storage.journal.commitInternalMs

決定 journal 刷盤的間隔(

journal操作的最大間隔時間。可以是2-300ms之間的值,低的值有助于持久化,但是會增加磁盤的額外負擔。

如果journal和數據文件在同一磁盤上,默認為100ms。如果在不同的磁盤上為30ms。

如果強制mongod提交日志文件,可以指定j:true,指定后,時間變為原來的三分之一

),默認為100ms,用戶也可以通過寫入時指定 writeConcern 為 {j: ture} 來每次寫入時都確保 journal 刷盤。

日志切換:

use admin

db.runCommand( { logRotate : 1 } )

后者:

1 3 * * * killall -SIGUSR1 mongod

3 3 * * * killall -SIGUSR1 mongos

15 3 * * * /usr/bin/find /data/mongodb/data/prod_shard2_1/log/ -name "mongodb.log.*" -mtime +30 -exec rm -fr {} \;

19 3 * * * /usr/bin/find /data/mongodb/data/prod_configdb2/log/ -name "mongodb.log.*" -mtime +30 -exec rm -fr {} \;

21 3 * * * /usr/bin/find /data/mongodb/data/prod_mongos/log/ -name "mongodb.log.*" -mtime +30 -exec rm -fr {} \;

日志級別在配置文件中的加入:

use admin

db.runCommand( {

setParameter: 1,

logComponentVerbosity: {

verbosity: 1,

query: {

verbosity: 2

},

storage: {

verbosity: 2,

journal: {

verbosity: 1

}

}

}

} )

或者:

verbose&&quiet

mongodb默認情況下日志文件非常大,每秒都會記錄大量的connection等調試信息,這對于我們管理日志和定位 ? ? ? ?錯誤有很大影響,需要修改它的默認日志級別。

mongodb的日志級別在配置文件中的verbose和quiet參數決定。verbose表示會打印debug信息,范例配置如下

verbose=true

vv=true

注:這里的vv表示debug級別,有vv-vvvvv,v越多則記錄的日志信息越詳細。

而如果設置了quiet=true參數,表示安靜地輸出,即不會再有debug信息,日志中只會打印一些關鍵的信息,比如 ? ? ? ?自動故障切換,系統錯誤等信息,相當于error log。這時需要注釋掉verbose參數。范例配置如下:

#verbose=true

quiet=true

總結

以上是生活随笔為你收集整理的mongodb检查点_Mongodb 日志原理和操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。