zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    php集成开发环境搭建三种方式
    阿里云服务器ftp连接后21端口无法使用的问题
    Linux CentOS7 安装FTP服务器
    WIN10分盘
    转载:常见的正则表达式
    转载:什么是分布式系统中的幂等性
    会员通过消费攒积分,升级RENEW以及降级的需求
    CASSANDRA How to import and export data
    tmp for cassandra batch delete
    SQL Insert Case When Update
  • 原文地址:https://www.cnblogs.com/tjp40922/p/12185345.html
Copyright © 2011-2022 走看看