一段mongo数据库数据丢失 引发的血案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一段mongo数据库数据丢失 引发的血案相关的知识,希望对你有一定的参考价值。

2017年1月8日上无,一个晴朗的早上(大周末的晴朗的早上),我还在梦境中,被一个电话吵醒,众所周知,做运维的最怕在休息期间接到公司同仁电话!

   起因:同事说线上的某个功能不能用了!(这个功能就是在mongo数据库中获取数据返给前端进行渲染)

   经过:之前也出现过类似的问题,排查故障后是因为mongo实例挂掉(某种原因造成),这次没想到事情比之前的故障还要叫人毛骨悚然----------mongo的数据丢了 我的个天啊。里面存放了不到5千万条的数据啊。丢了这可咋弄啊?

   解决:把mongo数据丢失关键字放到google上一搜,看到了一个帖子,《大批MongoDB因配置漏洞被攻击,黑客删除数据并勒索赎金》,心想完了数据很可能跟这个事情有关系!

       不幸中的万幸,我的mongo数据是一天一备份的。不然我都不知道找谁哭去

   数据还原:拿到之前的备份这根救命稻草,心(ri)里(ta)窃(lao)喜(lao)!我的mongo架构是做的主从读写分离模式的,首先不加验证的方式启动mongo的主、从、仲裁节点

关于如何配置mongo的主从读写分离技术,查看小编的另一篇文章:http://www.cnblogs.com/xinzhiyu/p/5907542.html

./mongod -f master.conf #启动主节点
./mongod -f slave.conf #启动从节点
./mongod  -f  arbiter.conf #启动仲裁节点

看一下配置文件内容:

master.conf

dbpath=/Disk/mongodb/data/master
logpath=/Disk/mongodb/log/master.log
pidfilepath=/Disk/mongodb/master.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=192.168.30.250
port=27017
oplogSize=10000
fork=true
noprealloc=true

slave.conf

dbpath=/Disk/mongodb/data/slaver
logpath=/Disk/mongodb/log/slaver.log
pidfilepath=/Disk/mongodb/slaver.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=192.168.30.251
port=27017
oplogSize=10000
fork=true
noprealloc=true

arbiter.conf

dbpath=/Disk/mongodb/data/arbiter
logpath=/Disk/mongodb/log/arbiter.log  
pidfilepath=/Disk/mongodb/arbiter.pid  
directoryperdb=true  
logappend=true  
replSet=testrs  
bind_ip=192.168.30.251
port=27018
oplogSize=10000  
fork=true  
noprealloc=true

使用mongo命令连接主数据库,创建管理员帐号。

./mongo --host=192.168.30.250:27017


本文出自 “精忠报国” 博客,请务必保留此出处http://xinsir.blog.51cto.com/5038915/1890428

以上是关于一段mongo数据库数据丢失 引发的血案的主要内容,如果未能解决你的问题,请参考以下文章

由一段代码引发的血案,md5绕过,foreach,php伪协议

ps引发的血案

事务隔离级别引发的"血案"

MySql的时区(serverTimezone)引发的血案

一行 Object.keys() 引发的血案

一行 Object.keys() 引发的血案