mongo复制数据库和表

  • 在同一个主机上从一个db的表复制到另一个db的表
db.collection_name.find().forEach(function(d){ db.getSiblingDB('new_database')['collection_name'].insert(d);})

collection_name是数据库表名
new_database是目的数据库

克隆本地collection,mongodb没有提供命令进行本地复制,但我们可以写一个循环插入的方法完成

例如:将source_collection中的数据复制一份到target_collection,代码如下:

db.source_collection.find().forEach(function(x){db.target_collection.insert(x)})

1. 复制数据库

1.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')

1.2

db.runCommand()

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

fromhost: 可选,见1.1;
slaveOK: 可选,设置为true,允许从secondary复制数据,此时fromehost必须被设置;
username: 可选,见1.1;
nonce: 远程服务器上产生的一次性共享密钥;
key: 对password的hash值

2. 复制Collection

2.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:是否复制索引

2.2 db.cloneCollection

db.cloneCollection(from, collection, query)

3 其它

刷新磁盘:将内存中尚未写入磁盘的信息写入磁盘,并锁住对数据库更新的操作,但读操作可以使用,使用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/kturing/article/details/73302014
https://blog.csdn.net/xingchen1106/article/details/45477409

猜你喜欢

转载自blog.csdn.net/xc_zhou/article/details/80952472
今日推荐