mongodb的mongod.lock檔案及oplog檔案

來源:互聯網
上載者:User

標籤:style   blog   io   ar   color   使用   sp   for   strong   

   在mongodb的啟動時,在資料目錄下,會產生一個mongod.lock檔案。如果在正常退出時,會清除這個mongod.lock檔案,若要是異常退出,在下次啟動的時候,會禁止啟動,從而保留一份乾淨的一份副本資料。有人可能會想到刪除這個檔案,

建議請不要這麼做。如果這麼做,我們也不知道資料檔案是否會損壞,如果mongod.lock檔案阻止mongod的啟動,請對資料檔案進行修複,而不是簡單的刪除該檔案。而這裡的mongod.lock檔案存放的是:啟動mongod的進程號.

這裡提到了"正常退出",詳細介紹如下:

 

MongoDB 提供幾種關閉服務的命令,具體為以下:


一 使用 Crtl+C 關閉

 [[email protected] data]$ mongod --dbpath=/database/mongodb/data/ --logpath=/var/applog/mongo_log/mongo.log --logappend --port=27017 --journal > start_mongo.log 2>&1
游標:鍵入 Crtl+C 關閉

    備忘:如果以前台方式啟動 MongoDB 服務,使用“Crtl+C” 服務會關閉,這種關閉方式會等待
              當前進行中的的操作完成,所以依然是乾淨的關閉方式。

 

二 使用資料庫命令關閉
--2.1 開啟服務

 [[email protected] data]$ mongod -f /database/mongodb/data/mongodb_27017.conf
forked process: 18155
all output going to: /var/applog/mongo_log/mongo.log
child process started successfully, parent exiting

   
--2.2 登陸資料庫

 [[email protected] data]$ mongo
MongoDB shell version: 2.2.1
connecting to: test

   

--2.3 關閉 MongoDB 服務

 > use admin;
switched to db admin

db.shutdownServer();
Wed Nov 14 06:07:33 DBClientCursor::init call() failed
Wed Nov 14 06:07:33 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1:27017
server should be down...
Wed Nov 14 06:07:33 trying reconnect to 127.0.0.1:27017
Wed Nov 14 06:07:33 reconnect 127.0.0.1:27017 failed couldnt connect to server 127.0.0.1:27017

 

三 使用 mongod 命令關閉

 [[email protected] data]$ mongod  --shutdown  --dbpath /database/mongodb/data/
killing process with pid: 17747

     備忘:mongod 命令的 shutdown 選項能乾淨的關閉 MongoDB 服務。
  

四 使用 kill 命令
--4.1 查看 mongo 相關進程

 [[email protected] data]$ ps -ef | grep mongo
root     17573 14213  0 05:10 pts/1    00:00:00 su - mongo
mongo    17574 17573  0 05:10 pts/1    00:00:00 -bash
mongo    18288     1  0 06:12 ?        00:00:00 mongod -f /database/mongodb/data/mongodb_27017.conf
mongo    18300 17574  6 06:13 pts/1    00:00:00 ps -ef
mongo    18301 17574  0 06:13 pts/1    00:00:00 grep mongo

   
--4.2 kill mongo 服務進程

 [[email protected] data]$ kill 18288

[[email protected] data]$ ps -ef | grep pmon
mongo    18304 17574  0 06:13 pts/1    00:00:00 grep pmon

  備忘:可以使用作業系統的 kill 命令,給 mongod 進程發送 SIGINT 或 SIGTERM 訊號,
             即 "kill -2 PID," 或者 “kill -15 PID“。
      
            建議不要使用 ”kill -9 pid“,因為如果 MongoDB 運行在沒開啟日誌(--journal)的情況下,
            可能會造成資料損失。

 

  在mongo庫中,oplog是資料存放和資料主從同步的,而在本地庫local中,$ show collections 下,有個oplog.rs 的collection,解釋下其中的欄位:


      { ts : ..., op: ..., ns: ..., o: ... o2: ...  }

    上面就是一條oplog資訊,複製機制就是通過這些資訊來進行節點間的資料同步並維護資料一致性的,其中:
   
    ts:8位元組的時間戳記,由4位元組unix timestamp + 4位元組自增計數表示。
        這個值很重要,在選舉(如master宕機時)新primary時,會選擇ts最大的那個secondary作為新primary。
    op:1位元組的操作類型,例如i表示insert,d表示delete。
    ns:操作所在的namespace。
    o:操作所對應的document,即當前操作的內容(比如更新操作時要更新的的欄位和值)
    o2: 在執行更新操作時的where條件,僅限於update時才有該屬性

    
    其中op,可以是如下幾種情形之一:

     "i": insert
     "u": update
     "d": delete
     "c": db cmd
     "db":聲明當前資料庫 (其中ns 被設定成為=>資料庫名稱+ ‘.‘)
     "n":  no op,即空操作,其會定期執行以確保時效性 

 

mongodb的mongod.lock檔案及oplog檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.