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

[经验分享] mongodb副本集维护

[复制链接]

尚未签到

发表于 2018-10-25 10:58:01 | 显示全部楼层 |阅读模式
  一、概述
  mongodb副本集维护主要工作:
  1、查看副本集状态(集群状态、同步延迟、单个库的运行状态mongostate)
  2、增删节点、停节点shutdown
  mongodb副本集集群同步机制

  •   数据复制的目的是使数据得到最大的可用性,冗余,避免单点故障。
  •   副本集中同一时刻只有一台服务器是可以写的,primary主库上写,从库同步数据
  •   副本集主从复制也是异步同步的过程。slave从primary上获取日志,然后在自己身上完全顺序的执行日志记录的操作(该日志不记录查询操作,只记录更新操作)。被同步的日志就是local库中的oplog.rs表,这个表占空间比较大,磁盘大小5%。启动参数设置oplog.rs的大小:--oplogSize 1000,单位M。生产环境中建议设置大一些,防止无法同步情况发生。
  二、查看集群状态
  1.rs.status()
DSC0000.png

  2.db.printSlaveReplicationInfo()
  查看主从数据库延迟时间
DSC0001.png

  3.mongodb监控工具- mongostat
DSC0002.jpg

  3.1 如果发现DB突然变慢或者有其他问题,首先mongostat查看状态
mongostat -uxx -pyy -rowcount 12 300  
mongostat -uxx -pyy -N 12 300
  
    ##每300秒输出一次DB状态,共输出12次
  3.2 输出参数说明
  inserts/s    每秒插入次数
  query/s      每秒查询次数
  update/s     每秒更新次数
  delete/s     每秒删除次数
  getmore/s    每秒执行getmore次数,查询时游标(cursor)的getmore操作,用处不大
  command/s    每秒命令数,比以上插入、查找、更新、删除的综合还多,还包含了别的命令。比如批量插入,只认为一条命令,意义不大。
  flushes/s    每秒执行fsync,将数据写入磁盘的次数。一般都是0,刷如磁盘时是1,可以通过两个1之间的间隔时间,判断多久刷新一次数据到磁盘。flush开销很大,如股票频繁刷新,可能有问题。
  mapped/s     所有的被nmap的数据量,单位是MB
  vsize        虚拟内存使用量,单位MB
  res          物理内存使用量,单位MB。这个和top看到的状态一样,mapped/vsize一般不会有大变动,res会慢慢上升,如果res经常突然下降,查查是不是有别的程序狂吃内存。
  faults/s     每秒访问失败数(只有linux有),数据被交换出物理内存,放入swap,如果经常不为0,就是服务器内存太小,造成频繁swap写入,此时要加大内存。
  locked db %   被锁的时间百分比,尽量控制在50%以下。这个值过大(经常超过10%,可能出问题)
  idx miss %    非常重要的参数,索引不命中所占百分比。正常情况下,查询都应该通过索引,也就是idx miss为0,如果太高的话就是索引太少了
  qr|qw        queue lengths for clients waiting (read|write)客户端过来的读写请求的长度。
  ar|aw        active clients(read|write)活跃的客户端过来的读写请求。即总共的读写请求。
  PS:当mongdb接收太多命令,而数据库被锁住无法执行完成,就会将命令加入到队列。都为0,表示mongodb毫无压力,高并发时,队列值会升高,表示DB的处理速度不及请求速度。看下是否有开销很大的慢查询。如果查询一切正常,确实负载很大,则考虑加服务器了。
  net In/Out   网络带宽压力,一般网络不会成为mongdb瓶颈。
  conn         当前连接数
  set          副本集集群名称
  repl         当前库在集群中的状态。PRI-master,SEC-second,REC-recovering,UNK-unkown
  time         时间戳
  4.web控制台
  mongodb自带web控制台,默认和数据服务一起开启。默认端口28017(数据端口27017基础上+1000)
DSC0003.jpg

  状态页显示信息:
  4.1 当前db的所有连接
  4.2 各个数据库dbs和collection的访问统计,包括reads/writes/queries/getmores/inserts/updates/removes
  4.3 写锁的状态
  4.4 日志文件的最后几百行
  4.5 最上面两行,mongodb状态查询的其他命令
  5.获取mongodb当前正在执行的操作db.currentOp()
>db.currentOp()  
>{ "opid" : "shard3:466404288", "active" : false, "waitingForLock" : false, "op" : "query", "ns" : "sd.usersEmails", "query" : { }, "client_s" : "10.121.13.8:34473", "desc" : "conn" }
  5.1 杀死执行时间过长的命令
>db.killOp("shard3:466404288")  6.MongoDB监控服务MongoDB Monitoring Service(MMS)
  mongodb厂商提供的监控服务,可在网页和Andriod客户端查看




运维网声明 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-626268-1-1.html 上篇帖子: 基于mongodb的地理检索实现 下篇帖子: MongoDB集群全备份简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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