zoukankan      html  css  js  c++  java
  • MongoDB加索引DB崩溃的问题

    项目原因,最近在对MongoDB进行数据存储优化
     
    原有问题:
    日志数据量比较大,存到一张表,需要手工定时删除数据,且删除数据时间按天算
    数据会定时打包到HDFS,查询时间很慢,需要优化
    机器内存占用过大,副本集主节点内存占用超过90%,其他节点超过80%
     
    解决方法:
    对日志进行按天写表,定时删除历史表
    对日志表增加TTL索引,定时删除过期数据
    一次创建自动增加索引,索引查询
     
     
    本次问题来自增加索引,数据量大表的,增加索引方式,应该为后台增加[background: true],TTL TimeToLive 创建方式为增加expireAfterSeconds,单位为秒
    语句如下:
     db.KafkaFpInfo.createIndex({"TrackTime":1},{background: true,expireAfterSeconds: 1728000})
    1、执行语句后,发现主节点,已经看到索引生成进度日志,服务器内存正常,CPU从100%升级到300%左右;
    2、看到主节点索引生成完成后,开始同步从节点
    3、此时,主节点日志报错,显示两个从节点心跳丢失;三副本,两个节点丢失,副本集进入恢复模式,废了
    4、查看从节点机器进程,发现两台MongoDB进程已经崩溃;尝试启动服务,发现跑索引,跑到10%时,服务返回超时
     
    Job for mongodb.service failed because a timeout was exceeded. See "systemctl status mongodb.service" and "journalctl -xe" for details.
    
    查看明细 "systemctl status mongodb.service"
    mongodb.service start operation timed out. Terminating.
    mongodb.service stop-final-sigterm timed out. Killing.
    5、查看索引只跑到了10%,猜测是原因是索引未完成,就超时了,尝试对服务增加超时配置;
    TimeoutSec=0     # 单位是秒,0为不限制
     
    cat /etc/systemd/system/mongodb.service
    [Unit]
    
    Description=mongodb_service
    After=network.target remote-fs.target nss-lookup.target
    [Service]
    User=mongodbuser
    Group=mongodbuser
    # (open files)
    LimitNOFILE=64000
    Type=forking
    ExecStart=/data/mongodb/mongobin/bin/mongod --config /etc/mongodb.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/data/mongodb/mongobin/bin/mongod --shutdown --config /etc/mongodb.conf
    PrivateTmp=true
    TimeoutSec=0     # 单位是秒,0为不限制
    
    [Install]
    WantedBy=multi-user.target
    6、再次重启从节点mongoDB服务,日志显示索引生成中,直到报索引生成100%,启动服务命令未再报超时,服务启动成功。
     
    正常情况下,该问题应该是解决了;但又有的如下的报错:
    “could not find member to sync from” 
    猜测可能是同步出问题了。
    尝试关闭一个从节点的mongoDB服务,删除该从节点的上数据。让数据重新同步过来。
    因数据比较大,启动后IO持续比较高。  [用iotop 查看磁盘IO]
     
    经过漫长的几小时,这个从节点终于恢复了。
     
  • 相关阅读:
    【repost】JavaScript 运行机制详解:再谈Event Loop
    【repost】学JS必看-JavaScript数据结构深度剖析
    【repost】JavaScript 基本语法
    【repost】前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
    【repost】jQuery笔记总结
    【repost】javascript:;与javascript:void(0)使用介绍
    jQuery对象与DOM对象之间的转换方法
    EBS_DBA_问题:主键insert引起的死锁
    BI_开发_问题:ORA-26002: Table DWH.W_XACT_TYPE_D has index defined upon it.
    BI_开发_问题:到target库中的字符为?
  • 原文地址:https://www.cnblogs.com/jzb-dev/p/14143609.html
Copyright © 2011-2022 走看看