mongodb數據備份和還原

jopen 9年前發布 | 10K 次閱讀 MongoDB NoSQL數據庫

mongodb數據備份和還原主要分為二種,一種是針對于庫的mongodump和mongorestore,一種是針對庫中表的mongoexport和mongoimport。


一、mongodump備份數據庫

命令格式:

mongodump -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -o 文件存在路徑

        如果沒有用戶誰,可以去掉-u和-p。
        如果導出本機的數據庫,可以去掉-h。
        如果是默認端口,可以去掉--port。
        如果想導出所有數據庫,可以去掉-d。

例子:

         1.導出所有數據庫

             mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/

          2.導出特定數據庫

              mongodump -h 192.168.1.108 -d tank -o /home/zhangy/mongodb/

二、mongodump還原數據庫

命令格式:

mongorestore -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 --drop 文件存在路徑

--drop的意思是,先刪除所有的記錄,然后恢復。其他參數含義和備份一樣

例子:

       1.還原所有數據庫到mongodb中

           mongorestore /home/zhangy/mongodb/  #這里的路徑是所有庫的備份路徑

        2.還原指定的數據庫

            mongorestore -d tank /home/zhangy/mongodb/tank/  #tank這個數據庫的備份路徑

     mongorestore -d tank_new /home/zhangy/mongodb/tank/  #將tank還有tank_new數據庫中

三、mongoexport導出表,或者表中部分字段

命令格式:

mongoexport -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -c 表名 -f 字段 -q 條件導出 --csv -o 文件名

  上面的參數好理解,重點說一下:
  -f    導出指字段,以字號分割,-f name,email,age導出name,email,age這三個字段
  -q    可以根查詢條件導出,-q '{ "uid" : "100" }' 導出uid為100的數據
  --csv 表示導出的文件格式為csv的,這個比較有用,因為大部分的關系型數據庫都是支持csv,在這里有共同點

例子:

     1.導出整張表

        mongoexport -d tank -c users -o /home/zhangy/mongodb/tank/users.dat

     2.導出某些字段

        mongoexport -d tank -c users --csv -f uid,name,sex -o tank/users.csv

  3.根據條件導出

        mongoexport -d tank -c users -q '{uid:{$gt:1}}' -o tank/users.json

四、mongoimport導入表,或者表中部分字段

1.1,還原整表導出的非csv文件
    命令格式:mongoimport -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -c 表名 --upsert --drop 文件名  
    重點說一下--upsert,其他參數上面的命令已有提到,--upsert 插入或者更新現有數據

  例子:mongoimport -d tank -c users --upsert tank/users.dat 

1.2,還原部分字段的導出文件
    命令格式:mongoimport -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -c 表名 --upsertFields 字段 --drop 文件名  

    例子:mongoimport -d tank -c users  --upsertFields uid,name,sex  tank/users.dat  

1.3,還原導出的csv文件
    命令格式:mongoimport -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -c 表名 --type 類型 --headerline --upsert --drop 文件名  

    例子:mongoimport -d tank -c users --type csv --headerline --file tank/users.csv

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!