设为首页 收藏本站
查看: 1623|回复: 0

[经验分享] mongodb集群安装及延迟节点配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-31 09:30:14 | 显示全部楼层 |阅读模式
本文主要介绍mongodb安装、副本集模式的配置、mongodb数据库的简单使用及延迟节点搭建和利用延迟节点恢复误删除的数据。
一、系统环境
平台:Centos6.6_x86_64
实验环境:四台主机部署副本集模式集群
主机:192.168.115.21、192.168.115.22、192.168.115.23、192.168.115.24
规划:21为master节点,22为副本节点,23为副本节点,24为延迟节点
目的:完成副本集模式集群的部署
            测试延迟节点同步数据,当在主节点上误删除数据后利用延迟节点恢复数据
注意:由于mongodb数据同步对时间的实时性要求较高事先要同步下各节点的时间
二、安装mongodb
1.软件安装
软件包:mongodb-linux-x86_64-2.6.9.gz
tar  -zxvf  mongodb-linux-x86_64-2.6.9.tgz
mv  mongodb-linux-x86_64-2.6.9.tgz  /usr/local/mongodb
2.mongodb安装文件介绍
mongod:数据库服务端,类似mysqld,每个实例启动一个进程,可以fork为Daemon运行
mongo:客户端命令行工具,类似sqlplus/mysql,其实也是一个js解释器,支持js语法
mongodump/mongorestore:将数据导入为bson格式的文件/将bson文件恢复为数据库,类似xtracbackup
mongoexport/mongoimport:将collection导出为json/csv格式数据/将数据导入数据库,类似mysqldump/mysqlimport
bsondump:将bson格式的文件转储为json格式的数据
mongos:分片路由,如果使用了sharding功能,则应用程序连接的是mongos而不是mongod
mongofiles:GridFS管理工具
mongostat:实时监控工具
3.配置mongodb环境变量
vi/etc/profile
添加如下内容:
#SetMongodb Environment
export MONGODB_HOME=/usr/local/mongodb
exportPATH=$PATH:$MONGODB_HOME /bin
source/etc/profile
4.创建配置文件
# vi/usr/local/mongodb/etc/mongodb.conf
添加如下内容:
fork = true                                   #以后台Daemon形式运行服务
quiet =true
port = 27017                              #对外服务端口,Web管理端口在这个port的基础上+1000
dbpath = /data/mongodb/     #数据文件存放路径,每个数据库会在其中创建一个子目录
logpath = /usr/local/mongodb/logs/server.log    #错误日志文件
logappend = true                   #错误日志采用追加模式(默认是覆写模式)
journal = true                          #开启日志功能,通过保存操作日志来降低单机故障的恢复时间
rest =true
httpinterface= true
5.启动mongodb
/usr/local/mongodb/bin/mongod-f /usr/local/mongodb/etc/mongodb.conf
6.查看mongodb启动进程
默认监听在tcp/27017端口tcp/28017为web监听端口
wKiom1W5enCzTP0aAAE3g-CM8l4357.jpg
三、集群配置
MongoDB的副本集能够故障自动转移,在集群Master故障的时候,副本集可以自动投票,选举出新的Master,并引导其余的Slave服务器连接新的Master,目前官方推荐采用这种吗模式部署。
1.每个节点修改配置文件添加如下一行
# vi/usr/local/mongodb/etc/mongodb.conf
replSet =hnrtest/192.168.115.21:27017,192.168.115.22:27017,192.168.115.23:27017
2.启动服务
3.连接mongodb初始化集群
#/usr/local/mongodb/bin/mongo 192.168.115.21:27017
> db.runCommand({"replSetInitiate": { "_id" : "hnrtest" ,"members" : [ {"_id" : 1, "host" : "192.168.115.21:27017"},{"_id" : 2, "host" : "192.168.115.22:27017"},{"_id" : 3, "host" : "192.168.115.23:27017"}]}})
wKioL1W5fHKDickfAAJlHY71hHg069.jpg
执行命令出现以上错误提示,解决方法
> useadmin
> db.runCommand({"replSetInitiate" : { "_id" :"hnrtest" ,"members" : [ { "_id" : 1,"host" : "192.168.115.21:27017"},{ "_id" : 2,"host" : "192.168.115.22:27017"},{ "_id" : 3,"host" : "192.168.115.23:27017"}]}})
此时通过内部自动选举21被选举为主节点
wKiom1W5epXjpZMkAAG7OlLlUpw957.jpg
4.通过修改优先级,手动指定主节点
hnrtest:PRIMARY> cfg=rs.conf()                                 #起始命令
hnrtest:PRIMARY>cfg.members[1].priority=15
hnrtest:PRIMARY> rs.reconfig(cfg)                              #提交配置
wKiom1W5eqDQbRopAAJ5-CvEAlM023.jpg
可以看到,配置一提交角色状态立即改变,22成为主节点
四、数据库操作常用命令
1.查看副本集节点状态信息:hnrtest:PRIMARY> rs.status()
2.查看当前使用的库:hnrtest:PRIMARY> db
3.查看所有库:show dbs
wKioL1W5fKDwtT34AAB5gwIixLI191.jpg
4. 创建数据库:hnrtest:PRIMARY> usemydb  如果没有往库中添加数据默认没有该库至少需要插入一条数据
5. 插入数据:hnrtest:PRIMARY>db.test.insert({"a":"1"})
wKioL1W5fK2DhsP6AABhsLzdCAM568.jpg
6. 查看数据:db.test.find()
wKiom1W5es-QK64EAACPikRJ4t0684.jpg
7. 删除选定的数据库:db.dropDatabase()
8. 查看集合中所有数据条目:hnrtest:PRIMARY> db.test.count()
wKioL1W5fMrQoYIfAAA_5U95Mz8191.jpg
9.查看数据同步时间:hnrtest:PRIMARY>rs.printReplicationInfo()
wKiom1W5euzAuUaZAAExSlyJ1CI886.jpg
10.副本节点上第一次执行命令时报错,需要打开写操作
wKioL1W5fO-hhmmAAACF2XQmJsU009.jpg hnrtest:SECONDARY>rs.slaveOk()
此时在执行查询命令,一切正常
11.添加删除一个节点
添加:在主节点上执行命令:hnrtest:PRIMARY>rs.add("192.168.115.#:27017")
删除:在主节点上执行命令:hnrtest:PRIMARY>rs.remove("192.168.115.#:27017")
五、利用延迟节点恢复数据
当在主节点上误删除数据时其他从节点实时同步主节点数据,从节点上的数据也被删除,而此时延迟节点由于延迟时间未到数据还未同步,可以恢复主节点上误删除的数据。
1.延迟节点的配置
1)将24加入副本集
hnrtest:PRIMARY>rs.add("192.168.115.24:27017")
2)修改24的优先级为0并设置延迟时长
hnrtest:PRIMARY>cfg=rs.conf
hnrtest:PRIMARY>cfg.members[3].priority=0
hnrtest:PRIMARY>cfg.members[3].slaveDelay=120
hnrtest:PRIMARY>rs.reconfig(cfg)
在主节点上插入一条数据,在延迟节点上查看同步时间,可见延迟120秒后同步数据
wKioL1W5fSHgfh_2AAE582i12Eg512.jpg
2.延迟节点恢复数据
1)模拟数据误删除
wKioL1W5fTHw2hieAACijHHMemo609.jpg
执行以上命令,主节点及副本节点上的数据全部被删除,而延迟节点数据还在
wKiom1W5e1fAhaq2AADi3TYXhPk739.jpg
2)恢复方法:
1.先关闭从节点及主节点上服务(延迟节点除外)
2.删除从节点及主节点数据目录下的所有文件(延迟节点除外)
3.开启以上关闭的节点服务进程,会从延迟节点上同步数据
wKiom1W5e2vyy9XTAADhhnWRmsM534.jpg
执行以上步骤后,所有节点数据恢复成原来的



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92589-1-1.html 上篇帖子: mongodb sharding key的选择 下篇帖子: mongodb分片原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表