mongo復制數據庫和表


1、使用工具Studio 3T for MongoDB

選擇一個數據庫中的Collections集合,然后按住 Ctrl+C 復制快捷鍵會彈出如下幫助框。

 

 

 


點擊 Ctrl+V 粘貼快捷鍵,重命名一下復制的名稱即可。

 

 

 


2、使用工具Robo 3T

在Collection中,右鍵選擇復制Collection

 

 

 


然后重命名即可

 

 

 


3、利用foreach方法在shell里直接運行

在同一個主機上從一個db的表復制到另一個db的表

db.collection_name.find().forEach(function(d){
db.getSiblingDB('new_database')['collection_name'].insert(d);
})

collection_name是數據庫表名
new_database是目的數據庫

克隆本地collection,mongodb沒有提供命令進行本地復制,但我們可以寫一個循環插入的方法完成

在同一個主機上同一個db下復制一個表

db.復制源表名.find().forEach(function(x){
db.目的表名.insert(x);
})

例子:

db.t_sentiment_ids.find().forEach(function(x){
db.t_sentiment_ids22.insert(x);
})


4、 復制數據庫

4.1

db.copyDatabase(fromdb,todb,fromhost,username,password,mechanism)

后面四個選項可選:

fromdbt: 源db;
todb: 目標db;
fromhost: 源db的主機地址,如果在同一個mongod實例內可以省略;
username: 如果開啟了驗證模式,需要源DB主機上的MongoDB實例的用戶名;
password: 同上,需要對應用戶的密碼;
mechanism: fromhost驗證username和password的機制,有:MONGODB-CR、SCRAM-SHA-1兩種。

db.copyDatabase('test','test2','192.168.14.52:27017','test','test','SCRAM-SHA-1')

不帶密碼認證的測試成功了,帶密碼認證的還未成功

4.2

db.runCommand()

{ copydb: 1,
fromhost: <hostname>,
fromdb: <database>,
todb: <database>,
slaveOk: <bool>,
username: <username>,
nonce: <nonce>,
key: <key>
}

fromhost: 可選,見4.1;
slaveOK: 可選,設置為true,允許從secondary復制數據,此時fromehost必須被設置;
username: 可選,見4.1;
nonce: 遠程服務器上產生的一次性共享密鑰;
key: 對password的hash值

5、 復制Collection

5.1 runCommand

db.runCommand({
cloneCollection:<namespace>
fromhost:<hostname>
query: <filter>
});

db.runCommand({
cloneCollection:'testdb.testcol', 
from:'192.168.1.12:27017',
copyIndexes:false, 
query:{'age':{'gt':2}}
});

copyIndexes:是否復制索引

5.2 db.cloneCollection

db.cloneCollection(from, collection, query)

6、 其它

刷新磁盤:將內存中尚未寫入磁盤的信息寫入磁盤,並鎖住對數據庫更新的操作,但讀操作可以使用,使用runCommand命令,這個命令只能在admin庫上執行
格式:db.runCommand({fsync:1,async:true})
async:是否異步執行
lock:1 鎖定數據庫

數據壓縮:mongodb的存儲結構采用了預分配的機制,長期不斷的操作,會留下太多的的碎片,從而導致數據庫系統越來越慢。
repairDatabase命令是mongodb內置的一個方法,它會掃描數據庫中的所有數據,並將通過導入/導出來重新整理數據集合,將碎片清理干凈
現在看壓縮前和壓縮后的對比數據,如下所示:

PRIMARY> db.t1.storageSize()
65232896
PRIMARY> db.t1.totalSize()
81470432
PRIMARY> db.repairDatabase()
{ “ok” : 1 }
PRIMARY> db.t1.storageSize()
65232896
PRIMARY> db.t1.totalSize()
79851584

 




轉自:https://blog.csdn.net/xc_zhou/article/details/80952472


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM