查看: 9912|回复: 4

[笔记] Mongodb管理与维护手册

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2012-11-16 10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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()命令
命令解释可参考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("iport"
15. 移除复制集成员
在PRIMARY实例的session中执行:rs.remove("iport"
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 iport,iport,iport --chunkSize 1 --logpath /data1/mongodata/log/mongo.log --logappend --port 27017 --fork
注意:需要额外添加参数,--configdb(必须的), --chunkSize(可选的)
chunkSize 指分块的大小,单位是M,默认64M
② 配置文件方式
创建配置文件:vi /etc/mongos.cnf
configdb= iport,iport,iport
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/iport,iport,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之间不存在认证关系。

论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
2#
发表于 2012-12-24 23:45 | 只看该作者
直接复制的吗?看不到图

使用道具 举报

回复
论坛徽章:
26
2009新春纪念徽章
日期:2009-01-04 14:52:28咸鸭蛋
日期:2011-11-13 14:16:262012新春纪念徽章
日期:2012-01-04 11:51:22紫蛋头
日期:2012-02-02 13:13:42玉石琵琶
日期:2012-02-21 15:04:38蛋疼蛋
日期:2012-03-09 08:25:45奥运纪念徽章
日期:2012-11-27 15:37:34复活蛋
日期:2012-12-07 13:05:172013年新春福章
日期:2013-02-25 14:51:242014年世界杯参赛球队:西班牙
日期:2014-06-26 12:03:53
3#
发表于 2013-1-29 05:39 | 只看该作者

在以下“use admin”之前应当执行什么命令?

为什么会出现"no such cmd: addshard"的错误信息?

多谢!


[root@rac24:/root]# mongo rac21:27018/admin
MongoDB shell version: 2.2.2
connecting to: rac21:27018/admin
myset:PRIMARY> db.runCommand({addshard:'192.168.45.21:27018'});
{
        "errmsg" : "no such cmd: addshard",
        "bad cmd" : {
                "addshard" : "192.168.45.21:27018"
        },
        "ok" : 0
}
myset:PRIMARY>

------------
19. 配置sharding集群

在mongos实例中执行:

use admin

db.runCommand({addshard:"rs/iport,iport,iport"})

使用道具 举报

回复
论坛徽章:
26
2009新春纪念徽章
日期:2009-01-04 14:52:28咸鸭蛋
日期:2011-11-13 14:16:262012新春纪念徽章
日期:2012-01-04 11:51:22紫蛋头
日期:2012-02-02 13:13:42玉石琵琶
日期:2012-02-21 15:04:38蛋疼蛋
日期:2012-03-09 08:25:45奥运纪念徽章
日期:2012-11-27 15:37:34复活蛋
日期:2012-12-07 13:05:172013年新春福章
日期:2013-02-25 14:51:242014年世界杯参赛球队:西班牙
日期:2014-06-26 12:03:53
4#
发表于 2013-1-31 16:13 | 只看该作者
求助!

使用道具 举报

回复
论坛徽章:
0
5#
 楼主| 发表于 2013-1-31 20:29 | 只看该作者
哦,这是在已经存在sharding的基础上add,前提是要有sharding环境哈

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表