1.复制集合(collection)
1)从远端mongodb复制
# mongo 10.10.10.2:27017/db_test -u "test" -p "test"
> db.tab1.find();
> db.tab1.getIndexes();
# mongo
> use db_test
> db.tab1.find();
> db.tab1.getIndexes();
> db.runCommand(cloneCollection:"db_test.tab1",from:"10.10.10.2:27017");
--注:
1)默认复制集合中的所有数据和索引,并将数据和索引附加于本地集合.
> db.runCommand(cloneCollection:"db_test.tab1",from:"10.10.10.2:27017",copyIndexes:false);
--注:
1)上述命令设置为只复制集合数据,而并不复制集合上的索引.
> db.tab1.find();
> db.tab1.getIndexes();
2)从本地mongodb复制
# mongo
> use db_test
> db.tab1.find().forEach(function(x){db.tab2.insert(x)});
2.复制数据库(database)
1)从远端mongodb复制
# mongo 10.10.10.2:27017/db_test -u "test" -p "test"
> show dbs;
> use db_test1
> show collections;
# mongo
> show dbs;
> db.copyDatabase("db_test1","db_test1","10.10.10.2:27017","test","test");
2)从本地mongodb复制
# mongo
> show dbs;
> db.copyDatabase("db_test1","db_test2");
3.刷新磁盘
--将内存数据与磁盘同步,期间,会阻止写操作,但允许读操作.
# mongo
> use admin
--同步刷新
> db.runCommand({fsync:1});
--异步刷新
> db.runCommand({fsync:1,async:true});
--备份前刷新并显示锁住库
> use admin
> db.runCommand({fsync:1,lock:1});
> db.cuurentOp();
--执行数据库备份
--备份后解锁数据库
> db.$cmd.sys.unlock.findOne();
> db.currentOp();
4.捕获异常
1)返回异常信息
# mongo
> db.getLastError();
2)确认复制信息
# mongo
--确保之前的操作已被复制到包括主库在内的两个成员库上
# db.runCommand( { getLastError: 1, w: 2, wtimeout:5000 } )
5.进程监控
1)查看活动进程
# mongo
> db.currentOp();
> db.$cmd.sys.inprog.findOne();
--注(输出结果):
1)opid:操作进程号.
2)op:操作类型(读写).
3)ns:操作数据库及集合.
4)query:查询内容和条件.
5)inLock:锁类型.-1:读锁;0:无锁;1:写锁.
2)结束进程
# mongo
> db.killOp(shard1:188);
> db.$cmd.sys.killop.findOne({op:188});
6.验证集合(collection)
# mongo
> use db_test
> db.tab1.validate();
--注(输出结果):
1)ns:校验的数据库和集合名.
2)result:校验结果的详细信息.
3)ok:命令执行状态.1:成功.
4)valid:校验结果,true为集合有效.
5)lastExtentSize:集合最后一个extent的大小.
7.数据压缩
# mongo
> db.tab1.totalSize();
> db.repairDatabase();
> db.tab1.totalSize();