构造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异常恢复的更多相关文章

  1. undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库坏块导致

    本文转自 惜纷飞 大师. 模拟基表事务未提交数据库crash,undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库 ...

  2. 010.MongoDB备份恢复

    一 MongoDB备份 1.1 备份概述 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoi ...

  3. MongoDB备份恢复与导出导入

    说明:本文所有操作均在win7下的MongoDB3.4.4版本中进行. 一.备份与恢复 1. 备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -o 文 ...

  4. mongodb备份恢复,数据导入导出

    数据导出 mongoexport 假设库里有一张apachelog表,里面有2 条记录,我们要将它导出 /test/mongodb/bin/mongo use wxdata switched to d ...

  5. SpringBoot使用MongoDB异常问题

    一 环境介绍 SpringBoot1.5.13.RELEASE(本地) Spring Data MongoDB Java 8 MongoDB(青云) 二 问题描述 使用Studio3T或者Compas ...

  6. springboot集成mongoDB 异常认证

    1.springboot连接mongoDB 出现异常认证 异常详情: com.mongodb.MongoSecurityException: Exception authenticating Mong ...

  7. Mongodb异常关闭重启失败解决

    情况再现,连接mongodb的网站没有关,直接关闭了mongodb的cmd窗口.再次打开mongodb出现失败. 解决办法:网上说是删除 *.lock文件,再进行 --repair ,最后再打开mon ...

  8. mongodb备份恢复

    注意:在备份文件存放目录的选择上有这样一个条件,文件存放目录不管有多深,都只能有它一个文件:(即除了备份文件之外只能存在文件夹,这个条件约束其整个目录树) 数据备份 : /mongodump --ho ...

  9. 【MongoDB异常】Exception authenticating MongoCredential解决方法

    我们通过ideal编辑器编辑 springboot时候,出现这个错误: com.mongodb.MongoSecurityException: Exception authenticating Mon ...

随机推荐

  1. alpha冲刺(3/10)

    前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 制定计划 问题困扰: 前后端的交互沟通有点缺失,以至后端进度很慢,需 ...

  2. 关于C语言实现判断给定一个数,判断其是否是一个质数(素数)。

    Annotation:⒈我们需要明确0,1既不是质数,又不是合数.⒉其次我们需要知道一个质数,质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数.(自然数:自然数用以计量事物的件数或表示事 ...

  3. The Twelve-Factor Container

    转自:https://medium.com/notbinary/the-twelve-factor-container-8d1edc2a49d4?%24identity_id=550978996201 ...

  4. Java_集合面试题

    Java_集合面试题 0.链表,队列和栈的区别? 链表是一种存储结构,指得是存储时候除了要存储数据元素之外,还要用数据元素一起的另外空间存储数据元素的关系. 队列和栈都是线性表,属于逻辑结构范畴,都是 ...

  5. [转]PostgreSQL命令行使用手册

    启动pgsl数据库 1 pg_ctl -D /xx/pgdata start 查看pgsl版本 1 pg_ctl --version 命令行登录数据库 1 psql -U username -d db ...

  6. Mysql索引会失效的几种情况

    1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因): 2.对于多列索引,不是使用的第一部分,则不会使用索引: 3.like查询是以%开头: 4.如果列类型是字符串, ...

  7. 阿里云centos5升级yum源为6

    升级后出现Errno -3] Error performing checksum 需要安装 python-hashlib Python 2.4 安装 hashlib 2012年11月13日 14:29 ...

  8. Python模块hashlib

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...

  9. centos7 源码安装redis

    安装3.x [root@node1 ~]# yum install wget gcc-c++ make [root@node1 ~]# wget http://download.redis.io/re ...

  10. Java构造器练习题

    仔细阅读下面的程序 public class Car { String name = "汽车"; public Car(String name) { this.name = nam ...