彻底修复Mongodb容器wt文件数据损坏

mongodb容器启动报错数据损坏修复

服务器关机重启,发现docker-compose启动mongodb一直restart,且docker logs 一直跳过执行脚本,mongod.log发现是wt文件损坏

#先将日志复制出来
docker  cp mongodb:/var/log/mongodb/mongod.log    /root
tail -200 /root/mongod.log

2023-09-04T14:25:20.599+0800 I CONTROL [main] ***** SERVER RESTARTED *****
2023-09-04T14:25:20.602+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols ‘none’
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=14a28e3e5853
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] db version v4.0.6
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] git version: caa42a1f75a56c7643d0b68d3880444375ec42e3
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] allocator: tcmalloc
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] modules: none
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] build environment:
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] distmod: rhel70
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] distarch: x86_64
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] target_arch: x86_64
2023-09-04T14:25:20.617+0800 I CONTROL [initandlisten] options: { config: “/etc/mongod.conf”, net: { bindIp: “0.0.0.0”, port: 27017 }, processManagement: { fork: false, pidFilePath: “/var/run/mongodb/mongod.pid”, timeZoneInfo: “/usr/share/zoneinfo” }, security: { authorization: “enabled” }, storage: { dbPath: “/data/db”, journal: { enabled: true } }, systemLog: { destination: “file”, logAppend: true, path: “/var/log/mongodb/mongod.log” } }
2023-09-04T14:25:20.617+0800 F STORAGE [initandlisten] An incomplete repair has been detected! This is likely because a repair operation unexpectedly failed before completing. MongoDB will not start up again without --repair.
2023-09-04T14:25:20.617+0800 F - [initandlisten] Fatal Assertion 50922 at src/mongo/db/storage/storage_engine_init.cpp 86
2023-09-04T14:25:20.617+0800 F - [initandlisten]

***aborting after fassert() failure

上述报错为mongodb数据损坏。但是docker容器无法启动成功直接修复,进行如下操作:

#停止mongodb容器
docker stop mongodb

记得先备份mongodb数据文件

#创建临时容器,将目录挂载至临时容器
docker run -it --rm --volumes-from mongodb --name mongodb-repair   mongodb:latest bash
#在临时容器操作repair
mongod --dbpath /data/db --repair

在这里插入图片描述

#数据修复成功后重启mongodb容器
docker restart mongodb

容器状态恢复

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值