MongoDB 的配置項在設定檔中進行配置和資料庫的備份與恢複,mongodb備份與恢複

來源:互聯網
上載者:User

MongoDB 的配置項在設定檔中進行配置和資料庫的備份與恢複,mongodb備份與恢複
一、mongoDB命令列啟動選項配置

mongodb的命令列啟動時我們可以選擇一些選項來改變更配置置,具體的選項如下:

1、--dbpath: 每一個mongodb進行就需要一個獨立的資料存放目錄,如果你在不同的連接埠啟動了多個mongodb進行但是資料存放目錄相同就會報錯:

 

 

 

2、--port :就是程式的不同監聽口,預設是27017

 --port=27017 修改不同的連接埠來啟動多個mongdb進程

 


 

3、--fork: 建立守護mongodb進程

4、--logpath: 指定日誌寫出的路勁

--logpath="mongodb.log"預設放在mongodb安裝的/bin目錄下

5、--config: 設定檔

--config='設定檔路勁以及設定檔'

(1)、使用設定檔會簡化啟動,因為一次配置多次使用,在目錄建立一個設定檔,設定檔建立執行個體如下:

#  “#”其注釋作用

dbpath=E:\DB\mongodb\data

port=27017

fork=true

logpath=mongdb.log

logappend=true

// 預設情況下日誌是會將之前的日誌清除,在寫,如果要追加則可以使用logappend=true

配置之後啟動進程:

 

6、關閉服務:db.shutdownServer()

 

二、資料的備份 恢複:

mongo Database Backup恢複

1.     檔案備份(冷備)

直接備份mongodb的資料目錄。需要停止mongo server 拷貝資料目錄進行完整有效備份。

2.     工具備份(熱備)

 mongodump 是將資料以二進位形式匯出,

而 mongoexport匯出的資料格式為 csv 或 json 格式; mongodump 可以匯出一個資料庫,或者整個 MongoDB 服務上的所有資料庫,因此 mongodump是更大範圍的備份工具。

(1)、mongodump 備份一個資料庫

mongodump -h 127.0.0.1 -d test -o E:\DB\mongodb\data\testdump.dmp


//從日誌看出,mongodump 的結果會產生一個目錄,第一層目錄為資料庫名,再下一層為每個集合對應的備份檔案。


(2)、備份資料庫中的一個集合

 mongodump-h 127.0.0.1 -d test -c mytest -o E:\DB\mongodb\data.dmp

 

// mongodump 加上-c(全稱:collection)  參數則可備份指定集合。


(3)、備份整個執行個體

mongodump -h 127.0.0.1 -o E:\DB\mongodb\data.dmp

//mongodump 如果不指定 -d 參數,剛會備份整個 MongoDB 執行個體。在目錄 data.dmp下產生了和mongo執行個體中資料庫個數相同的目錄,目錄名分別對應 MongoDB 上執行個體上的資料庫名。

 

恢複:使用mongorestore 命令

(1)、恢複一個資料庫

 mongorestore-d dbname E:\DB\mongo\data

  -d 使用的資料庫名稱

   後面直接加你剛才匯出的目錄,這樣是直接恢複所有表

   如果-c 是恢複一個表

例:mongorestore  -d resdb E:\DB\mongodb\data\dump.dmp\test

//就是將指定目錄下的資料匯入到resdb這個資料庫中,如果沒有則會自動建立


//匯入成功之後我們登入產看資料庫:show dbs

 


(2)、恢複一個集合

 mongorestore -ddbname -ccollectinname   E:\DB\mongo\data

例:mongorestore  -h 127.0.0.1 -d test -c restesss E:\DB\mongodb\data\test\mytest.bson

// 將指定目錄下的匯出的集合mytest.bson匯入到test資料庫下的restesss集合中

 

// 匯入之後我們在登入產看test這個資料庫下的所有集合:db.getCollectionNames(),我們發現有匯入的集合

 

三、匯出匯入

1、匯出工具mongoexport

Mongodb中的mongoexport工具可以把一個collection匯出成JSON格式或CSV格式的檔案。可以通過參數指定匯出的資料項目,也可以根據指定的條件匯出資料。mongoexport具體用法如下所示:

(1)、mongoexport --help    // 查看mongoexport工具使用方式

參數說明:

-h:指明資料庫宿主機的IP

-u:指明資料庫的使用者名稱

-p:指明資料庫的密碼

-d:指明資料庫的名字

-c:指明collection的名字

-f:指明要匯出那些列

-o:指明到要匯出的檔案名稱

-q:指明匯出資料的過濾條件

 

執行個體:test庫中存在著一個students集合:

文檔中存在著3個欄位:classid、age、name

(2)、mongoexport -d test -c students -o students.dat  

命令執行完後查看,發現目錄下產生了一個students.dat的檔案

參數說明:

-d:指明使用的庫,本例中為test

-c:指明要匯出的集合,本例中為students

-o:指明要匯出的檔案名稱,本例中為students.dat

//從上面的結果可以看出,我們在匯出資料時沒有顯示指定匯出樣式,預設匯出了JSON格式的資料。如果我們需要匯出CSV格式的資料,則需要使用--csv參數,具體如下所示:

 

(3)、mongoexport -d test -c students --csv -f classid,name,age -o students_csv.dat  

參數說明:

-csv:指明要匯出為csv格式

-f:指明需要匯出classid、name、age這3列的資料

//由上面結果可以看出,mongoexport成功地將資料根據csv格式匯出到了students_csv.dat檔案中。

 

2、匯入工具mongoimport

Mongodb中的mongoimport工具可以把一個特定格式檔案中的內容匯入到指定的collection中。該工具可以匯入JSON格式資料,也可以匯入CSV格式資料。具體使用如下所示:

(1)、mongoimport --help  

參數說明:

-h:指明資料庫宿主機的IP

-u:指明資料庫的使用者名稱

-p:指明資料庫的密碼

-d:指明資料庫的名字

-c:指明collection的名字

-f:指明要匯入那些列

 執行個體:

(2)、mongoimport -d test -c students students.dat   

參數說明:

-d:指明資料庫名,本例中為test

-c:指明collection名,本例中為students

students.dat:匯入的檔案名稱

//上面示範的是匯入JSON格式的檔案中的內容,如果要匯入CSV格式檔案中的內容,則需要通過--type參數指定匯入格式,具體如下所示:

再匯入之前置出的students_csv.dat檔案

(3)、mongoimport -d test -c students --type csv --headerline --file students_csv.dat   

參數說明:

-type:指明要匯入的檔案格式

-headerline:指明第一行是列名,不需要匯入

-file:指明要匯入的檔案

 

四、將記憶體中修改的資料刷出到磁碟

1. fsync and lock

 強制重新整理所有更改到磁碟,並維護一個全域鎖。再進行拷貝資料目錄進行備份。重新整理期間影響系統效能,鎖的過程中阻塞讀。


> use admin

switched to db admin

>db.runCommand({"fsync":1,"lock":1});

{

      "info" : "now locked against writes, use db.fsyncUnlock() tounlock",

      "seeAlso" :

      "ok" : 1

}

 

恢複

--repair      mongod 啟動選項,mongod異常退出後,可使用repair參數啟動。修複的過程:驗證所有的資料,忽略損壞的資料,重建所有的索引。同時對資料空間做了整理。

線上修複:

> use db

switched to db db

>db.repairDatabase()

{ "ok" : 1}

>

相關文章

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.