Failed to start up WiredTiger under any compatibility version. This may be due to an unsupported upgrade or downgrade

栏目: Docker 发布时间:2024-11-01

昨天,我决定对 mongodb 进行版本升级,而原有的 MongoDB 实例是通过 Docker 部署的。为了保持一致性,我决定继续使用 Docker 来部署新版本。

然而,在升级版本并重新启动 MongoDB 容器后,我发现容器启动后立即自动退出。通过 docker logs 命令查看容器的日志,我发现了以下错误信息:

{"t":{"$date":"2024-11-01T02:23:50.203+00:00"},"s":"W",  "c":"STORAGE",  "id":22347,   "ctx":"initandlisten","msg":"Failed to start up WiredTiger under any compatibility version. This may be due to an unsupported upgrade or downgrade."}
{"t":{"$date":"2024-11-01T02:23:50.203+00:00"},"s":"F",  "c":"STORAGE",  "id":28595,   "ctx":"initandlisten","msg":"Terminating.","attr":{"reason":"95: Operation not supported"}}
{"t":{"$date":"2024-11-01T02:23:50.203+00:00"},"s":"F",  "c":"-",        "id":23091,   "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":28595,"file":"src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp","line":687}}
{"t":{"$date":"2024-11-01T02:23:50.203+00:00"},"s":"F",  "c":"-",        "id":23092,   "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}

这些错误表明 MongoDB 无法在当前的 WiredTiger 存储引擎版本下启动,这通常是由于版本不兼容的升级或降级操作导致的。

我检查了 Docker Compose 配置文件,发现 MongoDB 容器的 /data/db 目录被映射到了宿主机的 /data/db 目录。这意味着容器中的数据与宿主机上的数据是同步的。

由于我在升级前已经对 MongoDB 数据库进行了导出备份,我决定采取一种激进的方法来解决这个问题:直接删除宿主机的 /data/db 目录。这样做会清除所有旧的数据文件,但因为我已经有了备份,所以数据不会丢失。

删除 /data/db 目录后,我重新启动了 MongoDB 容器。这次,容器成功启动,没有遇到之前的错误。这表明问题确实是由于旧版本的数据文件与新版本的 MongoDB 不兼容所导致的。

通过这种方法,我成功地完成了 MongoDB 的版本升级,并确保了数据的完整性和系统的稳定性。

本文地址:https://www.tides.cn/p_docker-failed-to-start-up-wiredtiger-under-any-compatibility-version