欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mongodb高级管理命令 mongodbnosql管理 

程序员文章站 2022-07-14 19:34:49
...

1.克隆collection

命令格式:

 

Js代码  Mongodb高级管理命令
            
    
    
        mongodbnosql管理 
  1. >db.runCommand({coloneCollection:"db_name.collection_name",from:"dest_server_ip:port"})  

说明,在使用时把db_name替换成数据库名称,把collection_name替换成集合名称,dest_server_ip是代表远程数据库的宿主机ip地址,port代表端口号。

 

2.复制数据库 

命令:copyDatabase(fromdb,todb,fromhost)

参数说明:

fromdb:源数据库名称

todb:目标数据库名称

fromhost:源数据库地址

 

Js代码  Mongodb高级管理命令
            
    
    
        mongodbnosql管理 
  1. > db.copyDatabase("from_db","to_db","192.168.120.133");  

如果是在本地复制数据库,则只要把fromhost设置为本机,即localhost即可。 

 

3.刷新磁盘

在Mongodb中使用db.runCommand({fsync:1})命令可以将内存中尚未写入磁盘的信息写入磁盘,并锁住对数据库更新的操作,但读操作还能继续,如下所示(注:fsync命令只能在admin库上进行操作):

 

Js代码  Mongodb高级管理命令
            
    
    
        mongodbnosql管理 
  1. > use admin  
  2. switched to db admin  
  3. > db.runCommand({fsync:1})  
  4. "numFiles" : 5, "ok" : 1 }  
  5. >   

验证数据库状态:db.currentOp()

 

Js代码  Mongodb高级管理命令
            
    
    
        mongodbnosql管理 
  1. > db.currentOP()  
  2. "inprog" : [ ] }  
  3. >   

通过指定参数lock:1来锁定数据库的写操作:

 

Js代码  Mongodb高级管理命令
            
    
    
        mongodbnosql管理 
  1. > db.runCommand({fsync:1,lock:1})  
  2. {  
  3.     "info" : "now locked against writes, use db.fsyncUnlock() to unlock",  
  4.     "seeAlso" : "http://www.mongodb.org/display/DOCS/fsync+Command",  
  5.     "ok" : 1  
  6. }  
  7. > db.users.insert({"name":"yangbei"})  

如上所示,当我在锁定对数据库的写操作后,如果我执行写操作,则该连接session会处于阻塞等待状态 

解锁:db.$cmd.sys.unlock.findOne()

 

Js代码  Mongodb高级管理命令
            
    
    
        mongodbnosql管理 
  1. > use admin  
  2. switched to db admin  
  3. > db.$cmd.sys.unlock.findOne()  
  4. "ok" : 1, "info" : "unlock completed" }  
  5. > db.currentOP()  
  6. {  
  7.     "inprog" : [ ],  
  8.     "fsyncLock" : 1,  
  9.     "info" : "use db.fsyncUnlock() to terminate the fsync write/snapshot lock"  
  10. }  
  11. >   

 

4.数据压缩

命令:db.repairDatabase()

介绍:repairDatabase是Mongodb内置的一个方法,调用这个方法Mongodb会扫描数据库中所有的数据,并将通过导入/导出来重新整理数据集合,将碎片清理干净。但这个方法会导致整个db的读写操作变得非常缓慢,所以最好是采用停机维护的方式,即直接停止客户端的写入操作之后再进行清理。

在执行此命令时会对数据库进行加锁操作,如果命令未执行完或强制中断session,该锁依然存在,需要使用db.$cmd.sys.unlock.findOne()命令显示解锁。