尝试使用 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,您必须转到下一个版本,依此类推,直到获得所需的版本。