mongodb

mongodb

高级特性
    capped集合:(固定大小集合)。
        创建:db.createCollection("mycoll",{capped:true,size:1000000})
        测试:db.t1.isCapped()
        转成capped集合:db..runCommand({"convertToCapped":"mycoll",size:100000})

    海量存储GridFS
        存入文件 mongofiles put filename
        查看文件 mongofiles list
        查找文件信息 db.fs.files.find();
        查找文件信息 db.fs.chunks.find();
        获取文件 mongofiles get filename

    MapReduce模型


eval
在命令行中执行
./mongo test –eval "printjson(db.t1.count())"

管理
    数据迁移
        导入
            mongoimport -d abc
        导出
            mongoexport -d abc
    数据备份
        备份
            mongodump -d abc
        还原
            mongorestore -d abc

    克隆
        远程克隆
            db.runCommand({cloneCollection: "test.t1",from:"192.168.111.61:27017"})
        本地克隆
            db.source_collection.find().forEach(function(x){db.target_collection.insert(x)})

    复制
        远程复制
            db.copyDatabase("from_db1","to_db2","192.168.111.61");
            
        本地复制
            db.copyDatabase("from_db1","to_db2","192.168.111.61");

    刷新
        db.runCommand({fsync:1}) //使用共享锁
        db.runCommand({fsync:1,async:true})
        db.runCommand({fsync:1,lock:1}) 
        db.$cmd.sys.unlock.findOne()
        db.currentOp();
        
    异常
        db.getLastError();
        db.getLastError(3,5000);
        db.getLastErrorObj();

    进程控制
        查看进程 db.currentOp();
        结束进程 db.killOp(pid);

    验证集合有效性
        db.t5.validate();
    空间整理
        db.t1.storageSize();
        db.t1.totalSize();
        db.repairDatabase();
        

    访问控制
        限制IP
        设置用户名密码


    性能优化

        mongosniff  –source NET em1

        mongosniff: error while loading shared libraries: libpcap.so.0.9: cannot open shared object file: No such file or directory
        ln -s /usr/lib64/libpcap.so /usr/lib64/libpcap.so.0.9
    
        mongostat

        db.serverStatus();
        db.stats();

        http://192.168.112.61:28017/
        
    架构
        复制集
        主从
        读写分离
        故障转移
        增减节点
        
        分布式架构
            路由服务器
                /app/mongo/bin/mongos –port 40000 –configdb localhost:30000 –fork –logpath /data/shard/log/route.log –chunkSize 1
                
            配置服务器
                /app/mongo/bin/mongod –configsvr –port 30000 –dbpath /data/shard/config –fork –logpath /data/shard/log/config.log –directoryperdb
                
                /app/mongo/bin/mongo admin –port 40000
                    db.runCommand({addshard:"localhost:20000"})
                    db.runCommand({addshard:"localhost:20001"})
                    db.runCommand({shardcollection:"test.users",key:{_id:1}})
                    
            主服务器
                shard1服务器
                    /app/mongo/bin/mongod –shardsvr –port 20002 –dbpath /data/shard/s2 –fork –logpath /data/shard/log/s2.log –directoryperdb
                shard2服务器
        
                db.runCommand({listshards:1})
                printShardingStatus();
                db.runCommand(isdgrid:1)
                db.users_2.stats();
                db.runCommand({shardcollection:"test.users",key:{_id:1}})
                db.runCommand({"removeshard":"localhost:20002"})
                

        三个复制集
            SHARD1:
            serverA
                /app/mongo/bin/mongod –shardsvr –replset shard1 –port 27017 –dbpath /data/shard1_1 –logpath /data/shard1_1/shard1_1.log –logappend –fork
                
            serverB
                /app/mongo/bin/mongod –shardsvr –replset shard1 –port 27017 –dbpath /data/shard1_2 –logpath /data/shard1_2/ –logptah /data/shard1_2/shard1_2.log –logappend –fork
                
            config = {_id:'shard1',members:[{_id:0,host:'192.168.111,61:27017'},{_id:1,host:'192.168.111,62:27017'}]}
            rs.initiate(config);
            
            SHARD2:
            serverA
                /app/mongo/bin/mongod –shardsvr –replset shard2 –port 27108 –dbpath /data/shard2_1 –logpath /data/shard2_1/shard2_1.log –logappend –fork
                
            serverB
                /app/mongo/bin/mongod –shardsvr –replset shard2 –port 27108 –dbpath /data/shard/2_1 –logpath /data/shard2_1/shard2_1.log –logappend –fork
                
            config = {_id:'shard2',members:[{_id:0,host:'192.168.111,61:27018'},{_id:1,host:'192.168.111,62:27018'}]}
            rs.initiate(config);
            
            CONFIG Server:
            serverA,serverB
            /app/mongo/bin/mongod –configsvr –dbpath /data/config –port 20000 –logpath /data/config/config.log –logappend –fork
            
            Route Process:
            serverA,serverB
            /app/mongo/bin/mongos –configdb 192.168.112.61:20000,192.168.112.62:20000 –port 30000 –chunkSize 1 –logpath /data/mongs.log –logappend –fork
            
            SET1:
            db.runCommand({addshard:"shard1/192.168.112.61:27017,192.168.112.62:27017"});
            
            SET2:
            db.runCommand({addshard:"shard2/192.168.112.61:27018,192.168.112.62:27018"});
            
            db.runCommand({enblesharding:"test"})
            db.runCommand({shardcollection: "test.users", key:{ _id:1}});

posted @ 2013-12-04 13:23  jeffnose  阅读(298)  评论(0)    收藏  举报