使用ansible升級mongodb副本集docker容器

使用ansible升級mongodb副本集docker容器

嘗試使用 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,您必須轉到下一個版本,依此類推,直到您獲得您需要的版本。

相關內容