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}});
浙公网安备 33010602011771号