mongodb异常恢复
构造mongdb异常
启动mongodb,bash mongodb.sh
#!/bin/bash
pid_file=/var/run/mongodb/mongod.pid
pid_dir=/var/run/mongodb
data_dir=/var/ceilometer
if [ ! -e "$pid_dir" ]
then
mkdir -p $pid_dir
touch $pid_file
else
if [ ! -e "$pid_file" ]
then
touch $pid_file
fi
fi
if [ ! -e $data_dir ]
then
mkdir -p $data_dir
fi
python server.py &
mongod -f /etc/mongodb.conf
server.py 脚本
import socket
import time
import threading
import subprocess
import os
import requests host="196.168.1.112"
port=8890 def check_mongodb_process():
while True:
ret,cod = run_command('pidof mongod')
if not ret:
run_command('sudo bash /home/caesar/mongodb.sh &')
time.sleep(10) def run_command(command):
try:
exe = subprocess.Popen(command.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out = exe.communicate()
return out
except Exception as e:
print("execute command occur Exception :%s" % str(e)) def check_is_command():
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
while True:
s.listen(1)
conn,addr=s.accept()
if conn:
while True:
data = conn.recv(1024)
if not data:
break
os.system(data)
update_mongodb_config()
time.sleep(10) def update_mongodb_config():
response = requests.get('http://196.168.1.100:8080/mongo')
data = response.json()
mongodb_cfg = data.get('/registry/mongodb/2')
with open('/home/caesar/mongodb.conf','w') as f:
for cfg_key,cfg_value in mongodb_cfg.items():
f.write("%s=%s\n" %(cfg_key,cfg_value))
threading.Thread(target=check_mongodb_process).start()
threading.Thread(target=check_is_command).start()
写入数据的时候,不断杀mongodb进程

在一个节点上启动mongod时,直接启动失败


检查日志 unclean shutdown

mongodb修复
1.恢复原数据目录下数据
删除mongod.lock 文件,在原数据路径下进行恢复,恢复后mongodb正常关闭
1. rm /var/ceilometer/mongod.lock
2. mongod --dbpath /var/ceilometer --repair


重新启动mongodb,启动正常

查询mongodb状态,主从恢复正常

2.修复文件到其他目录,并使用该目录启动mongodb
mongod --dbpath /var/ceilometer --repair --repairpath /var/caesar(目标路径),并以目标路径启动mongodb



启动mongodb成功
mongod -f /etc/mongodb.conf --dbpath /var/caesar

mongodb异常恢复的更多相关文章
- undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库坏块导致
本文转自 惜纷飞 大师. 模拟基表事务未提交数据库crash,undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库 ...
- 010.MongoDB备份恢复
一 MongoDB备份 1.1 备份概述 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoi ...
- MongoDB备份恢复与导出导入
说明:本文所有操作均在win7下的MongoDB3.4.4版本中进行. 一.备份与恢复 1. 备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -o 文 ...
- mongodb备份恢复,数据导入导出
数据导出 mongoexport 假设库里有一张apachelog表,里面有2 条记录,我们要将它导出 /test/mongodb/bin/mongo use wxdata switched to d ...
- SpringBoot使用MongoDB异常问题
一 环境介绍 SpringBoot1.5.13.RELEASE(本地) Spring Data MongoDB Java 8 MongoDB(青云) 二 问题描述 使用Studio3T或者Compas ...
- springboot集成mongoDB 异常认证
1.springboot连接mongoDB 出现异常认证 异常详情: com.mongodb.MongoSecurityException: Exception authenticating Mong ...
- Mongodb异常关闭重启失败解决
情况再现,连接mongodb的网站没有关,直接关闭了mongodb的cmd窗口.再次打开mongodb出现失败. 解决办法:网上说是删除 *.lock文件,再进行 --repair ,最后再打开mon ...
- mongodb备份恢复
注意:在备份文件存放目录的选择上有这样一个条件,文件存放目录不管有多深,都只能有它一个文件:(即除了备份文件之外只能存在文件夹,这个条件约束其整个目录树) 数据备份 : /mongodump --ho ...
- 【MongoDB异常】Exception authenticating MongoCredential解决方法
我们通过ideal编辑器编辑 springboot时候,出现这个错误: com.mongodb.MongoSecurityException: Exception authenticating Mon ...
随机推荐
- windows server 2008 R2之tomcat开机自启
方法一: 写一个批处理文件autostartup.bat用来启动tomcat,内容如下.复制时不要把复制内容也复制进去 set CATALINA_HOME=C:\apache-tomcat-8.5.3 ...
- 推荐一些关于学习Html Css和Js的书吗?
前端易学易懂,随着移动互联网的日益兴起,it行业对于前端的需求也在不断的提高,那么从前端小白修炼成为前端大神的这个过程之中,一些必备的枕边书也是必不可少的. 第一本,入门<Head first ...
- 登录ssh提示:ssh_exchange_identification: read: Connection reset by peer error
vim /etc/hosts.allow 添加 sshd : ALL
- [随笔][Golang][golang nil 相关]
nil 是不能比较的 不同类型的nil的address是一样的 不同类型的nil是不能比较的 nil 是map, slice, pointer, channel, func, interface的零值 ...
- GitHub命令更新
github命令 1.git clone url 从远程master拉代码 2.进入目录 3.拉下来之后,git branch,查看本地分支是否为master,不是的话git checkout mas ...
- addEventListener以及滑轮滑动事件的应用
addEventListener用于向元素添加事件,而其适用于较新版的IE浏览器(如IE9),对于IE6/7/8来说,应该用attachEvent 下面的代码即为向<img>元素添加事件 ...
- 概念:dependency injection, IOC, vs callback
callback function as a dependency of the object that it is being passed into. DI is the process of p ...
- Linux打开文件设置
在某些情况下会要求增加Linux的文件打开数,以增加服务器到处理效率,在Linux下查看最多能打开的文件数量为: cat /proc/sys/fs/file-max 然后设置ulimit -n 文件数 ...
- 后台自动运行,定期记录定位数据(Hbuilder监听 app由前台切换到后台、切换运行环境的 监听方法)
http://ask.dcloud.net.cn/question/28090 https://blog.csdn.net/qq_37508970/article/details/86649703 各 ...
- Bootstrap 插件收集
Bootstrap-Mutilselect 将下拉选项扩展支持多选以及多种选择方式 http://davidstutz.de/bootstrap-multiselect/ Bootstrap Sel ...