本文共 1813 字,大约阅读时间需要 6 分钟。
折中方案以解决常见的数据复制问题
在 MongoDB 中,数据的复制与管理是日常操作的重要环节。本文将为大家介绍多种实现数据库复制和管理的方法。
Ctrl + C
,复制当前集合。Ctrl + V
,右键单元格选择“重命名”,进行重命名操作。通过 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-CR
或 SCRAM-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}}})
db.runCommand({ fsync: 1, async: true })
fsync: 1
:执行 fsync 操作。async: true
:异步执行。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 数据库的高效管理与复制。
转载地址:http://ojaaz.baihongyu.com/