Failed to start up WiredTiger under any compatibility version. This may be due to an unsupported upgrade or downgrade
昨天,我决定对 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