mongodb的索引,导入导出,备份还原,主从复制使用介绍
这里主要总结如何使用索引,导入导出,备份,还原数据表库,主从复制。
1.索引使用
db.tb.ensureIndex({"name":1}}); //设置索引
db.tb.ensureIndex({"firstname":1,"lastname":1},{unique:true}); //设置唯一索引
-----------------------YD的分隔符----------------------------------------
db.tb.getIndexes();//查看当前集合设置的索引
db.tb.find({"name":"user1"}).explain(); // explain命令、获知系统如何处理请求。
// (参数:nscanned)查看查询的查询次数
db.tb.getIndexKeys(); // 查看索引key的个数
db.tb.dropIndexes(); // 删除tb集合所有索引
优化器 profile.慢查询日志功能,可以作为优化数据库的依据,默认是关闭的
开启Profiling
二种方式可以控制Profiling 开关和级别。
1启动mongodb 时加上-profile=级别即可
2客户端调用db.setProfilingLevel(级别)命令来实现配置
2.导入导出数据
导出
使用命令工具./mongoexport -d test -c c1 -o /tmp/c1.out [具体参数介绍看./mongoexport -h]
导出
使用命令工具./mongoimport -d test -c c1 /tmp/c1.out
备份(生成二进制文件)
使用命令工具./mongodump -d test /tmp
恢复
使用命令工具./mongorestore -d test /tmp/test/(备份整个test数据库,如果添加-c 表名,有可能导致索引丢失)
用户授权 必须开启./mongod --auth
(超级管理员[admin表:db.addUser("root":"hwf")]跟数据库管理员[当前表:db.addUser("dbuser":"123")])
3.主从复制
MongoDB的主从集群分2种:
Master-Slave 复制(主从)
模拟主从服务器
主[操作:C,U,D] ./mongod --master --dbpath=/usr/local/mongodb/data1/ --logpath=/usr/local/mongodb/dblog1 --fork --port 20001
从[操作:R读] ./mongod --slave --source 127.0.0.1:20001 --dbpath=/usr/local/mongodb/data2/ --logpath=/usr/local/mongodb/dblog2 --fork --port 20002
备份:在从服务器运行[root@localhost test]# ./mongodump --host 127.0.0.1:20002 -d test
Replica Sets 复制(副本集)主数据库kill以后。从自动切换,选举主数据库
1. 启动2个实例
#./mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key1 --port 20001 --dbpath=/usr/local/mongodb/data/data1 --logpath=/usr/local/mongodb/log/dblog1 --fork
#./mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key1 --port 20002 --dbpath=/usr/local/mongodb/data/data2 --logpath=/usr/local/mongodb/log/dblog2 --fork
2.# ./mongo --port 20001
3.> config_rs1={_id:"rs1", members:[{_id:0,host:"localhost:20001",priority:1},{_id:1,host:"localhost:20002",priority:2}]}
4.登陆 端口20002
#./mongo --port 20002
20002的priority优先级高所以会被选作主服务器PRIMARY>,而20001会被选作从SECONDARY>
20002可实现CRUD
5.20001只能实现查询 ,实现查询需要实现指令 >rs.slaveOk();
6.查看复制集状态 >rs.status();