mongo断电后修复

前几天公司断电,导致公司mongo数据库中部分数据损坏,具体表现为副本集启动失败,单机方式启动接收到客户端请求后会导致服务down掉,日志如下:

xxx为公司库名

2018-07-16T16:39:24.377+0800 [conn26] xxx Deleted record list corrupted in bucket 18, link number 1, invalid link is 107226:0, throwing Fatal Assertion
2018-07-16T16:39:24.377+0800 [conn26] xxx Fatal Assertion 16469
2018-07-16T16:39:24.380+0800 [conn26] xxx 0xedb3e9 0xe6fb3f 0xe4a1c1 0xc87a2f 0xc87d6a 0xc87dd2 0xc944c2 0xc950de 0x7227c7 0x726294 0xa40dbb 0xa48d4e 0x9a1fe2 0x9a4c4b 0x6273fe 0xe84d22 0x7f81d638e6ba 0x7f81d517641d

查询资料确认需要做数据修复,命令如下:

sudo mongod --repair --dbpath 数据存放目录

 

但是数据修复因为硬盘不足导致修复失败:

2018-07-16T17:16:59.372+0800 [initandlisten] repairDatabase xxx
2018-07-16T17:16:59.372+0800 [initandlisten] xxx Fatal assertion 17401 OutOfDiskSpace Cannot repair database xxx having size: 27903918080 (bytes) because free disk space is: 18944225280 (bytes)

报错显示因为硬盘不足导致数据修复失败,所以查看了当前的硬盘使用情况:

df -h

发现硬盘的确使用了很多,因为公司很多数据都存储在一个实例里,导致当前实例的硬盘剩余量不足以做数据修复

经检查,当前有一个库是使用不到的,而且占用了大量的存储,所以将数据文件直接删除后再次执行数据修复,经过漫长的等待后终于成功

然后注释掉副本集配置,只以单机方式启动后访问正常

当然如果是生产环境是不能使用这种方式的,但是可以先将数据备份后,增大硬盘容量后做数据修复,因为本人不涉及这种场景,所以没有做测试,有兴趣的小伙伴可以尝试一下

总结:真的真的不要把所有的数据库都丢到同一个实例


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值