先碼後看 mongodb資料備份與恢復

2021-08-20 13:32:50 字數 4447 閱讀 5159

**:

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

一,mongodump備份資料庫

1,常用命令格

mongodump -h ip --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -o 檔案存在路徑

如果沒有使用者誰,可以去掉-u和-p。

如果匯出本機的資料庫,可以去掉-h。

如果是預設埠,可以去掉--port。

如果想匯出所有資料庫,可以去掉-d。

2,匯出所有資料庫

[root@localhost mongodb]# mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/ 

connected to: 127.0.0.1

tue dec 3 06:15:55.448 all dbs

tue dec 3 06:15:55.449 database: test to /home/zhangy/mongodb/test

tue dec 3 06:15:55.449 test.system.indexes to /home/zhangy/mongodb/test/system.indexes.bson

tue dec 3 06:15:55.450 1 objects

tue dec 3 06:15:55.450 test.posts to /home/zhangy/mongodb/test/posts.bson

tue dec 3 06:15:55.480 0 objects

。。。。。。。。。。。。。。。。。。。。省略。。。。。。。。。。。。。。。。。。。。。。。。。。

3,匯出指定資料庫

[root@localhost mongodb]# mongodump -h 192.168.1.108 -d tank -o /home/zhangy/mongodb/ 

connected to: 192.168.1.108

tue dec 3 06:11:41.618 database: tank to /home/zhangy/mongodb/tank

tue dec 3 06:11:41.623 tank.system.indexes to /home/zhangy/mongodb/tank/system.indexes.bson

tue dec 3 06:11:41.623 2 objects

tue dec 3 06:11:41.623 tank.contact to /home/zhangy/mongodb/tank/contact.bson

tue dec 3 06:11:41.669 2 objects

tue dec 3 06:11:41.670 metadata for tank.contact to /home/zhangy/mongodb/tank/contact.metadata.json

tue dec 3 06:11:41.670 tank.users to /home/zhangy/mongodb/tank/users.bson

tue dec 3 06:11:41.685 2 objects

tue dec 3 06:11:41.685 metadata for tank.users to /home/zhangy/mongodb/tank/users.metadata.json

三,mongorestore還原資料庫

1,常用命令格式

mongorestore -h ip --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 --drop 檔案存在路徑

--drop的意思是,先刪除所有的記錄,然後恢復。

2,恢復所有資料庫到mongodb中

[root@localhost mongodb]# mongorestore /home/zhangy/mongodb/  #這裡的路徑是所有庫的備份路徑

3,還原指定的資料庫

[root@localhost mongodb]# mongorestore -d tank /home/zhangy/mongodb/tank/  #tank這個資料庫的備份路徑 

[root@localhost mongodb]# mongorestore -d tank_new /home/zhangy/mongodb/tank/ #將tank還有tank_new資料庫中

這二個命令,可以實現資料庫的備份與還原,檔案格式是json和bson的。無法指寫到表備份或者還原。

四,mongoexport匯出表,或者表中部分字段

1,常用命令格式

mongoexport -h ip --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 -f 字段 -q 條件匯出 --csv -o 檔名

上面的引數好理解,重點說一下:

-f    匯出指欄位,以字型大小分割,-f name,email,age匯出name,email,age這三個字段

-q    可以根查詢條件匯出,-q '' 匯出uid為100的資料

--csv 表示匯出的檔案格式為csv的,這個比較有用,因為大部分的關係型資料庫都是支援csv,在這裡有共同點

2,匯出整張表

[root@localhost mongodb]# mongoexport -d tank -c users -o /home/zhangy/mongodb/tank/users.dat 

connected to: 127.0.0.1

exported 4 records

3,匯出表中部分字段

[root@localhost mongodb]# mongoexport -d tank -c users --csv -f uid,name,*** -o tank/users.csv 

connected to: 127.0.0.1

exported 4 records

4,根據條件敢出資料

[root@localhost mongodb]# mongoexport -d tank -c users -q '}' -o tank/users.json 

connected to: 127.0.0.1

exported 3 records

五,mongoimport匯入表,或者表中部分字段

1,常用命令格式

1.1,還原整表匯出的非csv檔案

mongoimport -h ip --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --upsert --drop 檔名  

重點說一下--upsert,其他引數上面的命令已有提到,--upsert 插入或者更新現有資料

1.2,還原部分欄位的匯出檔案

mongoimport -h ip --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --upsertfields 字段 --drop 檔名  

--upsertfields根--upsert一樣

1.3,還原匯出的csv檔案

mongoimport -h ip --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --type 型別 --headerline --upsert --drop 檔名  

上面三種情況,還可以有其他排列組合的。

2,還原匯出的表資料

[root@localhost mongodb]# mongoimport -d tank -c users --upsert tank/users.dat 

connected to: 127.0.0.1

tue dec 3 08:26:52.852 imported 4 objects

3,部分欄位的表資料匯入

[root@localhost mongodb]# mongoimport -d tank -c users  --upsertfields uid,name,***  tank/users.dat  

connected to: 127.0.0.1  

tue dec  3 08:31:15.179 imported 4 objects 

4,還原csv檔案

[root@localhost mongodb]# mongoimport -d tank -c users --type csv --headerline --file tank/users.csv 

connected to: 127.0.0.1

tue dec 3 08:37:21.961 imported 4 objects

總體感覺,mongodb的備份與還原,還是挺強大的,雖然有點麻煩。

這些物理競賽經驗分享,先碼後看,先看先受益!

高二階段你們已學完了所有知識點,這一年是你們提公升水平的 階段,這時你們需要的是對知識更深刻的理解以及建立更完整的知識框架,可以去找一些普通物理看看,但切忌浮光掠影。普通物理提高的是視野而非解題水平,當你閱讀完之後,再回頭看看之前刷過的題,你一定會對它有新的認識和更深刻的把握。初入物理競賽,帶的是五...

先碼後看 Hash衝突的解決方式 侵立刪

在理想狀態下,雜湊函式可以將關鍵字均勻的分散到陣列的不同位置,不會出現兩個關鍵字雜湊值相同 假設關鍵字數量小於陣列的大小 的情況。但是在實際使用中,經常會出現多個關鍵字雜湊值相同的情況 被對映到陣列的同乙個位置 我們將這種情況稱為雜湊衝突。為了解決雜湊衝突,主要採用下面兩種方式 分離鍊錶法 分散鍊錶...

bash登入過程 其實還不太了解,先碼後看

在剛登入linux時,首先啟動 etc profile 檔案,然後再啟動使用者目錄下的 bash profile bash login或 profile檔案中的其中乙個,執行的順序為 bash profile bash login profile。如果 bash profile檔案存在的話,一般還會...