[308]mongo使用工具复制数据库和表
发布日期:2021-05-16 09:25:14 浏览次数:18 分类:精选文章

本文共 1813 字,大约阅读时间需要 6 分钟。

MongoDB 数据库管理与操作

折中方案以解决常见的数据复制问题

在 MongoDB 中,数据的复制与管理是日常操作的重要环节。本文将为大家介绍多种实现数据库复制和管理的方法。

一、复制单个集合

方法一:使用 Studio 3T for MongoDB

  • 打开 Studio 3T,选择目标数据库中的集合。
  • 按住快捷键 Ctrl + C,复制当前集合。
  • 再次按 Ctrl + V,右键单元格选择“重命名”,进行重命名操作。

  • 方法二:使用 Robo 3T

  • 打开 Robo 3T 工具。
  • 在目标集合中右键选择“复制集合”。
  • 集合复制完成后,右键单元格选择“重命名”,完成操作。

  • 二、批量复制单个集合

    通过 MongoDB shell 实现批量复制

    db.collection_name.find().forEach(function(d) {    db.getSiblingDB('new_database')['collection_name'].insert(d);});
  • collection_name:源数据库中的集合名称。
  • new_database:目标数据库名称。
  • 该方法适用于同一主机上的本地库复制。

  • 三、复制整个数据库

    方法一:使用 db.copyDatabase 命令

    db.copyDatabase(fromdb, todb, [fromhost], [username], [password], [mechanism])
  • fromdb:源数据库名称。
  • todb:目标数据库名称。
  • fromhost(可选):源数据库主机地址。
  • username(可选):源数据库账户名。
  • password(可选):账户密码。
  • mechanism(可选):验证机制(MONGODB-CRSCRAM-SHA-1)。
  • 示例命令:

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

    方法二:使用 db.runCommand

    db.runCommand({    copydb: 1,    fromdb: '源数据库',    todb: '目标数据库',    slaveOk: true,    username: '用户账户',    password: '账户密码',    nonce: '一次性共享密钥',    key: '密码哈希值'})
  • fromhost(可选):需在复制Slave时提供主机地址。
  • slaveOk(可选):允许从Slave副本复制数据。

  • 四、复制特定集合

    方法一:cloneCollection 命令

    db.collectionDBName.cloneCollection(from, collection, query)
  • from:源数据库名称。
  • collection:源集合名称。
  • query(可选):过滤复制数据。
  • 方法二:runCommand 实现

    db.runCommand({    cloneCollection: '源集合名称',    from: '192.168.1.12:27017',    copyIndexes: false,    query: {'age': {'gt': 2}}})

    五、数据库管理命令

    1. 刷新磁盘

    db.runCommand({ fsync: 1, async: true })
    • fsync: 1:执行 fsync 操作。
    • async: true:异步执行。

    2. 数据压缩

    db.repairDatabase()

    操作效果:

    • 清理碎片。
    • 提高存储效率。

    示例:

    PRIMARY > db.t1.storageSize()  // 65,232,896 bytesPRIMARY > db.t1.totalSize()    // 81,470,432 bytesPRIMARY > db.repairDatabase()PRIMARY > db.t1.storageSize()  // 65,232,896 bytesPRIMARY > db.t1.totalSize()    // 79,851,584 bytes

    通过以上方法,操作人员可以根据实际需求实现 MongoDB 数据库的高效管理与复制。

    上一篇:[309]python生成表情包
    下一篇:[307]python文本相似度计算

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年05月03日 19时53分08秒