代码之家  ›  专栏  ›  技术社区  ›  user1063287

如何在OpenShift上将MongoDB从3.2.10升级到3.6?

  •  1
  • user1063287  · 技术社区  · 6 年前

    当前OpenShift MongoDB版本:

    sh-4.2$ mongod --version
    db version v3.2.10
    git version: 79d9b3ab5ce20f51c272b4411202710a082d0317
    OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
    allocator: tcmalloc
    modules: none
    build environment:
        distarch: x86_64
        target_arch: x86_64
    

    3.6 .

    OpenShift支持提供的步骤包括:

    导航到以下位置:

    “应用程序”>“部署”>“操作”下拉列表(右侧)和 编辑。

    从那里修改Images/Image下版本的值 流标记:

    请注意,这只会升级MongoDB的版本 超出支持范围。

    如何在OpenShift上安全地将MongoDB从3.2.10升级到3.6?

    编辑

    前端网站显示:

    {"name":"MongoError","message":"Topology was destroyed"}
    

    enter image description here

    enter image description here

    enter image description here

    我搜索了一下 Topology was destroyed 找到了这个答案:

    https://stackoverflow.com/a/31950062

    尽管它引用了Mongoose,我也不使用它,但它谈到了当无法连接到MongoDB时节点会崩溃。

    所以我缩小了节点盒,然后是MongoDB盒,然后是MongoDB盒,然后是节点盒。

    它似乎已经恢复到上一个工作的MongoDB部署。

    然后我点击 Deploy

    编辑2

    2018-09-14T14:08:40.176+0000 F CONTROL  [initandlisten] ** IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.4 before attempting an upgrade to 3.6; see http://dochub.mongodb.org/core/3.6-upgrade-fcv  for more details.
    2018-09-14T14:08:40.176+0000 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
    2018-09-14T14:08:40.176+0000 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
    2018-09-14T14:08:40.176+0000 I REPL     [initandlisten] shutdown: removing all drop-pending collections...
    2018-09-14T14:08:40.176+0000 I REPL     [initandlisten] shutdown: removing checkpointTimestamp collection...
    2018-09-14T14:08:40.176+0000 I STORAGE  [initandlisten] WiredTigerKVEngine shutting down
    =>  Waiting for MongoDB daemon up
    2018-09-14T14:08:40.416+0000 I STORAGE  [initandlisten] WiredTiger message [1536934120:416170][26:0x7f20e10adb80], txn-recover: Main recovery loop: starting at 61/3200
    2018-09-14T14:08:40.529+0000 I STORAGE  [initandlisten] WiredTiger message [1536934120:529090][26:0x7f20e10adb80], txn-recover: Recovering log 61 through 62
    2018-09-14T14:08:40.593+0000 I STORAGE  [initandlisten] WiredTiger message [1536934120:593166][26:0x7f20e10adb80], txn-recover: Recovering log 62 through 62
    2018-09-14T14:08:40.684+0000 I STORAGE  [initandlisten] shutdown: removing fs lock...
    2018-09-14T14:08:40.684+0000 I CONTROL  [initandlisten] now exiting
    2018-09-14T14:08:40.684+0000 I CONTROL  [initandlisten] shutting down with code:62
    =>  Waiting for MongoDB daemon up
    

    编辑3

    我取得了一些进展,我采取了以下步骤:

    • 将MongoDB版本设置为3.4

    enter image description here

    • 点击 部署

    pod启动并运行,但是当我尝试对3.6执行同样的操作时,它会在日志中显示关于的错误消息 The data files need to be fully upgraded to version 3.4 before attempting an upgrade to 3.6

    关于

    https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path

    我在吊舱终端运行了这个:

    env | grep MONGODB // to confirm i had admin password correct
    mongo -u admin -p ************ admin
    db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
    

    它返回:

    { "featureCompatibilityVersion" : "3.2", "ok" : 1 }
    

    所以我做了:

    > db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
    { "ok" : 1 }
    
    > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
    { "featureCompatibilityVersion" : "3.4", "ok" : 1 }
    

    然后我确保所有的pod都被缩小了,并将MongoDB版本从 3.4 ,并试图将MongoDB吊舱向上扩展。

    它又回来了!

    > db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
    { "ok" : 1 }
    

    因为我在浏览器开发工具控制台中遇到了以下错误:

    featureCompatibilityVersion必须为3.6才能使用ArrayFilter。看到了吗 http://dochub.mongodb.org/core/3.6-feature-compatibility .

    现在前端的功能正在发挥作用!

    1 回复  |  直到 6 年前
        1
  •  0
  •   user1063287    6 年前

    01) 缩小 MongoDB Node 豆荚。

    02) Applications &燃气轮机; Deployments &燃气轮机; 蒙哥达

    03) Actions &燃气轮机; Edit 并选择 蒙哥达 3.4

    enter image description here

    04) 点击 Deploy 当这一切完成时 蒙哥达 pod备份

    05) 应用 &燃气轮机; Pods mongodb-**-*****

    env | grep MONGODB // to confirm i had admin password correct
    
    mongo -u admin -p ************ admin
    
    > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )  
    // { "featureCompatibilityVersion" : "3.2", "ok" : 1 }  
    
    > db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
    // { "ok" : 1 }
    
    > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
    // { "featureCompatibilityVersion" : "3.4", "ok" : 1 }
    

    06) 确保所有吊舱缩小并更换 蒙哥达 版本来自 3.4 3.6 (与步骤03相同),部署并向上扩展。

    这里有一个警告:

    https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#enable-backwards-incompatible-newversion-features

    关于执行以下步骤,但我这么做是因为我的应用程序需要它:

    07) 去吊舱的终点站 应用 &燃气轮机; 豆荚 &燃气轮机; 蒙哥达-**-*****

    > db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
    // { "ok" : 1 }
    

    08) 缩放 吊舱后退。

    参考文献:

    https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone

    https://docs.mongodb.com/manual/release-notes/3.4-upgrade-standalone