gpt4 book ai didi

神奇的DEBUG:因为异常导致MongoDB容器无法启动

转载 作者:我是一只小鸟 更新时间:2022-12-30 22:31:34 25 4
gpt4 key购买 nike

越来越多的项目使用docker进行环境搭建,统一了开发和运行环境,好处颇多。但同时也引入了许多复杂性,比如一些容器服务突然无法启动,那么debug起来就比物理机安装的服务麻烦一些。 这段时间Mac Pro经常出现莫名卡死的情况,我在没有办法的情况下只能强制关机,于是我遇到了再次开机后无法启动某个项目中的MongoDB容器的问题。 查看该mongoDB容器的日志,一大段非常复杂的输出,其中最重要的报错信息如下:

                        
                           Fatal Assertion 28558 at src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp 365

                        
                      

Google了一波之后发现很多人遇到了类似的问题,都是因为之前异常中断了容器或者像我一样强制关机,导致mongoDB的本地数据中有一些破损的数据。所以需要对mongoDB进行修复。如果是物理机安装的话可以直接执行如下命令进行修复:

                        
                          mongod --dbpath=/path/to/db --repair

                        
                      

而如果是像我一样,用docker-compose进行编排安装的mongodb,那么需要先单独运行mongodb容器并进入该容器,然后再执行修复命令。 假设我有如下的docker-compose.yml文件,其中mongodb的部分如下:

                        
                           my-mongo:
    container_name: my-mongo
    image: mongo:5.0
    ports:
      - 27018:27017
    volumes:
      - .db/data:/data/db
    healthcheck:
      test: mongo --port 27017 --eval "db.serverStatus()" > /dev/null || exit 1
      interval: 30s
      timeout: 30s
      retries: 10

                        
                      

那么我需要运行如下命令来单独运行mongodb容器:

                        
                          docker-compose -f docker-compose.yml run -it my-mongo sh

                        
                      

然后可以顺利进入容器,在容器里面执行修复命令对破损的mongodb数据进行修复:

                        
                          mongod --dbpath /data/db --repair

                        
                      

之后退出再重启mongodb容器就能正常运行了。所以面对突发的问题不能慌张,耐心去分析问题本质,思考之后再合理上网找到解决办法.

最后此篇关于神奇的DEBUG:因为异常导致MongoDB容器无法启动的文章就讲到这里了,如果你想了解更多关于神奇的DEBUG:因为异常导致MongoDB容器无法启动的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com