本帖最后由 pengtao_koleos 于 2012-12-26 20:00 编辑
Mongodb管理与维护手册 1. MongoDB概略 高性能、开源、无模式的文档数据库。 2. MongoDB的安装 在官方下载操作系统版本对应的MongoDB版本,解压即可。 3. MongoDB的启动 进入解压后的MongoDB目录,运行其bin目录下的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()命令
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:port"}) …… 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:port,ip:port,ip:port"}) 23. 移除sharding集群 在mongos实例的session中执行: use admin db.runCommand({removeshard:"rs/ip:port,ip:port,ip:port"}) 备注:如果将要被移除的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之间不存在认证关系。
|