
嘗試使用 ansible 將 docker 容器中的 mongodb 從 3.6 更新到 4.2,但 docker 容器不斷重新啟動。
重啟的原因是相容性等級設定為3.6。
進一步來說:
IMPORTANT: UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document(ERROR: BadValue: Invalid value for version, found 3.6, expected '4.2' or '4.0'. Contents of featureCompatibilityVersion document in admin.system.version: { _id: "featureCompatibilityVersion", version: "3.6" }. See http://dochub.mongodb.org/core/4.0-feature-compatibility.). If the current featureCompatibilityVersion is below 4.0, see the documentation on upgrading at http://dochub.mongodb.org/core/4.0-upgrade-fcv.
如何更新這個文檔?
嘗試執行 ansible 建置後命令(讓我們這樣稱呼它),如下所示:
- name: set compatibility level
state: started
shell: "docker exec mongodb-primary bash -c 'mongo --eval \"db.adminCommand( { setFeatureCompatibilityVersion: \"4.2\" } )\"'"
become: True
become_user: root
register: result
以及嘗試了許多其他選擇,但都沒有希望。
這個 ansible 腳本失敗,因為它無法連接到 mongo。它說連接被拒絕。我猜 Mongo 還沒起來。
那麼,如何實際將 docker 容器中的 mongo 從 3.6 升級到 4.2 呢?使用 ansible 和 docker-compose。
答案1
透過升級到 4.0,然後將 featureCompatibilityVersion 設定為 4.0,然後再次升級到 4.2,然後將 featureCompatibilityVersion 設定為 4.2 解決了此問題
答案2
是的,使用 MongoDB,您無法在一次更新中從 3.6 跳到 4.2,您必須轉到下一個版本,依此類推,直到您獲得您需要的版本。