MongoDB-伺服器管理

來源:互聯網
上載者:User

標籤:

前言

      本文主要涉及一下內容:資料庫的備份和恢複,對於任一資料庫來說備份至關重要;資料的匯入和匯出;資料庫修複;資料庫狀態監控工具mongostat;在使用過程遇到其他命令會總結在此。

1.資料庫的備份和恢複

1.1 複製資料檔案

備份:使用此方法時必須保證資料檔案不發生變化,可以使用fsynclock命令,> db.fsyncLock()

      一旦運行該命令,就會鎖定資料庫,禁止任何寫入,並進行同步,把資料刷到磁碟。當命令返回後,就可以複製資料檔案了,如備份名為myDB的資料庫,只需複製所有名為myDB.*的檔案,如果使用了—directoryperdb選項,只需複製該資料庫對應的整個資料目錄。複製完成後,使用> db.fsyncUnlock()解鎖資料庫。

注意:如果啟用了身分識別驗證,那麼,在調用fsyncLock和fsyncUnlock期間不要關閉shell否則只能重啟mongod服務了。

恢複:保證mongod服務沒啟動,待恢複目錄為空白,將備份的資料檔案拷貝到資料庫目錄,最後啟動mongod服務即可。

1.2 使用mongodump

      使用mongodump可以單獨備份資料庫,集合,只不過備份和恢複的比較慢。可以使用mongodump –help查看可用選項。

備份:

備份整個foo資料庫

   mongodump –h 127.0.0.1:30000 –d foo –o /data/dbback/foo

備份foo資料庫中的bar集合

   mongodump –h 127.0.0.1:30000 –d foo –c foo.bar –o /data/dbback/foo/bar

備份多個集合,foo中的bar,info集合,使用逗號隔開

   mongodump –h 127.0.0.1:30000 –d foo –c foo.bar, foo.infi –o /data/dbback/foo/cols

恢複:

使用mongorestore命令,其中有兩個選項值得一提:

   --drop:在恢複前刪除現有集合,否則直接插入現有集合中

   --noobjcheck:忽略對象插入集合之前的驗證步驟

恢複單個資料庫

   mongorestore –h 127.0.0.1:30000 –d foo –dir /data/dbback/foo  

恢複單個集合

   mongorestore –h 127.0.0.1:30000 –d foo –c foo.bar –dir /data/dbback/foo/bar

恢複多個集合

   mongorestore –h 127.0.0.1:30000 –d foo –c foo.bar,foo.infi –dir /data/dbback/foo /cols

1.3 備份副本集

      直接使用複製資料檔案的方式備份,這種方式備份副本集時無需做任何修改。

1.4 備份分區叢集

第一步:關閉均衡器,

第二步:串連mongos執行mongodump備份

第三步:啟用均衡器,

恢複備份的話,使用mongorestore串連到一個mongos執行即可

備份單個分區和備份單個伺服器一樣。

2.資料的匯入和匯出

資料匯入匯出就是兩個命令:mongoimport和mongoexport

mongoimport,可以把CSV, TSV或者JSON格式的資料匯入mongodb,其中幾個有用的選項:

   --headerline:對於CSV,TSV格式檔案,使用第一行作為欄位名稱

   --drop:匯入前刪除集合,否則追加集合後面

   --ignoreblanks:不匯入空欄位

mongoimport –h 127.0.0.1:30000 –d foo –c foo.bar –type csv –headerline < csvfile

mongoexport,可以把mongodb資料匯出JSON,CSV格式的檔案。其中幾個有用的選項:

   --q:指定查詢條件匯出資料,預設為{}

   --f:指定匯出的欄位名稱

mongoexport –h 127.0.0.1:30000 –d foo –c foo.bar –q {} –type=csv > bar.csv

3.資料庫狀態監控

      使用mongostat預設每一秒輸出服務目前狀態,輸出主要欄位說明表,使用方法mongostat –port 30000。

      使用db.currentOp()可以查看資料庫當前執行的操作有哪些。

表1 mongostat欄位說明

insert

每秒插入的次數

query

每秒查詢的次數

update

每秒更新的次數

delete

每秒刪除的次數

getmore

每秒查詢遊標getmore次數

command

每秒執行的命令樹,除增刪改查,還有其它統計命令

flushes

每秒執行fsync將資料寫入磁碟的次數

mapped

所有被mmap映射進記憶體的資料量,單位M

vsize

虛擬記憶體使用量,單位M

res

實體記憶體使用量,單位M

faults

每秒訪問失敗的次數,當faults居高不下時,一般是以下幾個原因:

1. 磁碟空間不足

2. 記憶體不足

3. 磁碟IO達到瓶頸

qr|qw

表示讀,寫隊列,高並發時隊列的值一般會升高

ar|aw

表示活躍的讀,寫用戶端數

netIn

每秒通過網路輸入的位元組數

netOut

每秒通過網路輸出的位元組數

conn

伺服器開啟的串連數,包括輸入和輸出串連

MongoDB-伺服器管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.