MongoDB管理与维护

Mongodb管理与维护手册 
1. MongoDB概略        3 
2. MongoDB的安装        3 
3. MongoDB的启动        3 
4. MongoDB关闭        4 
5. 启动MongoDB Console        4 
6. MongoDB一致性备份        4 
7. MongoDB恢复        5 
8. MongoDB状态        5 
9. 监控MongoDB进程        8 
10. 监控MongoDB使用的内存情况        8 
11. 释放MongoDB占用的内存        9 
12. 建立RepSer复制集        9 
13. replSet复制集的状态        10 
14. 增加复制集成员        11 
15. 移除复制集成员        11 
16. 建立Sharding集群        11 
17. 配置ConfigSvr        12 
18. 配置mongos        13 
19. 配置sharding集群        14 
20. 激活分片        14 
21. Sharding状态        14 
22. 添加sharding集群        15 
23. 移除sharding集群        15 
24. 常见故障处理        15 
1.  MongoDB  概略 
高性能、开源、无模式的文档数据库。 
官方网址:  http://www.mongodb.org/ 
2. MongoDB的安装 
在官方下载操作系统版本对应的MongoDB版本,解压即可。 
3. MongoDB的启动 
进入解压后的MongoDB目录,运行其  bi  n目录下的mongod: 
① 命令行方式 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod --dbpath [datafile directory] --logpath [log file directory] --logappend --journal --oplogSize [N] --port [port] --fork 
例如:/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod --dbpath /data1/mongodata/db/ --logpath /data1/mongodata/log/mongo.log --logappend --journal --oplogSize 1 --port 27017 --fork 
② 配置文件方式 
创建配置文件:vi /etc/mongod.cnf 
dbpath = /data1/mongodata/db/ 
logpath = /data1/mongodata/log/mongo.log 
logappend = true 
journal = true 
oplogSize = 1 
port = 27017 
fork = true 
启动时加上-f参数,指向配置文件即可: 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod -f /etc/mongod.cnf 
4. MongoDB关闭 
① 在session中直接执行:ctrl+c 
② 在admin库中执行db.shutdownServer()命令 
use admin 
db.shutdownServer() 
5. 启动MongoDB Console 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongo --port 27017 
6. MongoDB一致性备份 
mongodump 
锁定数据库: 
use admin 
db.runCommand({"fsync":1,"lock":1}) 
一致性备份: 
/usr/local/mongo/bin/mongodump -h 10.132.74.35  --port 27017 -d mytest -o /data/mytest.bak 
7. MongoDB恢复 
mongorestore 
/usr/local/mongo/bin/mongodump -h 10.132.74.35  --port 27017 -d mytest /data/mytest.bak 
8. MongoDB状态 
db.serverStatus()命令 
命令解释可参考KM文档:  http://km.oa.com/group/515/articles/show/122020 



9. 监控MongoDB进程 
ps -ef | grep mongod 

10. 监控MongoDB使用的内存情况 
执行db.serverStatus().mem 

另外,通过mongostat来监控mongodb的内存使用 

11. 释放MongoDB占用的内存 
use admin 
db.runCommand({closeAllDatabases:1}) 

另外,通过调整内核参数drop caches可以释放缓存 
sysctl -w vm.drop_caches=1 

12. 建立RepSer复制集 
① 命令行方式 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod --replSet rs --keyFile /data1/mongodata/key/key.file --dbpath /data1/mongodata/db/ --logpath /data1/mongodata/log/mongo.log --logappend --port 27017 --fork 
注意:需要额外添加参数,--replSet(必须的),--keyFile(可选的) 
② 配置文件方式 
创建配置文件:vi /etc/mongod.cnf 
replSet = rs 
keyFile = /data1/mongodata/key/key.file 
dbpath = /data1/mongodata/db/ 
logpath = /data1/mongodata/log/mongo.log 
logappend = true 
port = 27017 
fork = true 
启动时加上-f参数,指向配置文件即可: 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod -f /etc/mongod.cnf 
13. replSet复制集的状态 

当有复制集成员出现故障,会有如下的状态信息: 

14. 增加复制集成员 
同10中提到的,以相同的方式启动实例。 
在PRIMARY实例的session中执行:rs.add("ip   ort"   
15. 移除复制集成员 
在PRIMARY实例的session中执行:rs.remove("ip   ort"   
16. 建立Sharding集群 
① 命令行方式 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod --shardsvr --replSet rs  --dbpath /data1/mongodata/db/ --logpath /data1/mongodata/log/mongo.log --logappend --port 27017 --fork 
注意:需要额外添加参数,--shardsvr(必须的), --replSet(必须的) 
② 配置文件方式 
创建配置文件:vi /etc/mongodb.cnf 
shardsvr = true 
replSet = rs 
dbpath = /data1/mongodata/db/ 
logpath = /data1/mongodata/log/mongo.log 
logappend = true 
port = 27017 
fork = true 
启动时加上-f参数,指向配置文件即可: 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod -f /etc/mongodb.cnf 
17. 配置ConfigSvr 
① 命令行方式 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod --configsvr --dbpath /data1/mongodata/db/ --logpath /data1/mongodata/log/mongo.log --logappend --port 27017 --fork 
注意:需要额外添加参数,--configsvr(必须的) 
② 配置文件方式 
创建配置文件:vi /etc/mongo_config.cnf 
configsvr = true 
dbpath = /data1/mongodata/db/ 
logpath = /data1/mongodata/log/mongo.log 
logappend = true 
port = 27017 
fork = true 
启动时加上-f参数,指向配置文件即可: 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod -f /etc/mongo_config.cnf 
18. 配置mongos 
① 命令行方式 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod --configdb ip   ort,ip   ort,ip   ort --chunkSize 1 --logpath /data1/mongodata/log/mongo.log --logappend --port 27017 --fork 
注意:需要额外添加参数,--configdb(必须的), --chunkSize(可选的) 
chunkSize 指分块的大小,单位是M,默认64M 
② 配置文件方式 
创建配置文件:vi /etc/mongos.cnf 
configdb= ip   ort,ip   ort,ip   ort 
chunkSize = 1 
logpath = /data1/mongodata/log/mongo.log 
logappend = true 
port = 27017 
fork = true 
启动时加上-f参数,指向配置文件即可: 
/usr/local/mongodb-linux-x86_64-static-legacy-2.0.2/bin/mongod -f /etc/mongos.cnf 
19. 配置sharding集群 
在mongos实例中执行: 
use admin 
db.runCommand({addshard:"rs/ip   ort,ip   ort,ip   ort"}) 
…… 
20. 激活分片 
use admin 
db.runCommand({enablesharding:"test"}) 
db.runCommand({shardcollection:"test.users",key:{_id:1}) 
21. Sharding状态 

22. 添加sharding集群 
如前面的步骤,在mongos中注册sharding信息, 
use admin 
db.runCommand({addshard:"rs/ip   ort,ip   ort,ip   ort"}) 
23. 移除sharding集群 
在mongos实例的session中执行: 
use admin 
db.runCommand({removeshard:"rs/ip   ort,ip   ort,ip   ort"}) 
备注:如果将要被移除的sharding集群上有数据,系统首先会数据平均分配到其他sharding server上,然后将这个sharding集群踢下线。 
24. 常见故障处理 
① 如果mongod实例crash掉,当再次启动时出现错误。首先查看mongo.log日志文件(建议启动mongod时指定--logappend参数,该参数会追加的写日志,而不会覆盖)。 
*********************** 
old lock file: /usr/local/www/mongodb/mongod.lock. probably means unclean shutdown 
recommend removing file and running –repair 
see:  http://dochub.mongodb.org/core/repair  for more information 
*********************** 
此时,需要rm掉mongodata/db/目录下的mongod.locl文件,然后再尝试启动。 

② 启动mongod后,关闭启动时的窗口,mongodb就会关闭。 
A.命令行启动时加上--fork参数。 
B.在配置文件中设置:fork = true 
fork表示是否在后台运行。 
PS:前面的内容中有用到fork的相关用法。 
③ 总结: 
replSet之间可以通过keyFile来相互认证。 
在多个 mongos 和多个 config 的情况下,mongos 与 mongos 之间是平行的存在,也就是说,一个 mongos并不知道另外一个 mongos的存在。但是一个 mongos知道所有 config 的存在。 

mongos和config之间不存在认证关系。 


原文:http://www.itpub.net/thread-1739455-1-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值