重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
最近再用mongodb做开发,在linux上嘛,习惯性的会使用kill -9 PID来关闭服务。
为正宁等地区用户提供了全套网页设计制作服务,及正宁网站建设行业解决方案。主营业务为成都做网站、网站设计、外贸营销网站建设、正宁网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!结果每次关闭再重启mongodb后,mongodb总会自己关闭。看日志也没看出什么来,然后就百度呗。
发现用kill -9杀死mongodb的后果挺严重。
然后去官网逛了一圈,查了一下
MongoDB使用的是内存映射存储引擎:
它会把磁盘IO操作转换成内存操作,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。
写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。
如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了。
官方描述:
Sending a KILL signal kill -9 will probably cause damage as mongod will not be able to cleanly exit. (In such a scenario, run the repairDatabase command.)
幸亏发现的早啊...不然指不定出什么事故
最后查到可以用以下方法关闭mongodb
1、使用killall mongod
2、使用kil -15 PID
3、在admin用户下执行db.shutdownServer()命令
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。