您好,登錄后才能下訂單哦!
最近再用mongodb做開發,在linux上嘛,習慣性的會使用kill -9 PID來關閉服務。
結果每次關閉再重啟mongodb后,mongodb總會自己關閉。看日志也沒看出什么來,然后就百度唄。
發現用kill -9殺死mongodb的后果挺嚴重。
然后去官網逛了一圈,查了一下
MongoDB使用的是內存映射存儲引擎:
它會把磁盤IO操作轉換成內存操作,如果是讀操作,內存中的數據起到緩存的作用,如果是寫操作,內存還可以把隨機的寫操作轉換成順序的寫操作,總之可以大幅度提升性能。
寫操作會被每隔60秒(syncdelay設定)的flush到磁盤里。如果在這60秒內flush處于停止事情我們進行kill -9那么從上次flush之后的寫入數據將會全部丟失。
如果在flush操作進行時執行kill -9則會造成文件混亂,可能導致數據全丟了。
官方描述:
Sending a KILL signal kill -9 will probably cause damage as mongod will not be able to cleanly exit. (In such a scenario, run the repairDatabase command.)
幸虧發現的早啊...不然指不定出什么事故
最后查到可以用以下方法關閉mongodb
1、使用killall mongod
2、使用kil -15 PID
3、在admin用戶下執行db.shutdownServer()命令
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。