MongoDB 3.4 降级到 3.2 还是有不少兼容性问题要考虑, 以安装完的空的分片集群为例,如果有数据还要多一些处理。

步骤:

  1. 登陆mongos设置兼容性为 3.2
    db.adminCommand({setFeatureCompatibilityVersion: "3.2"})
    
  2. 处理索引版本。3.4 的索引版本是 {“v”:2},需要处理为{“v”:1}
    登陆到 config server 和各分片 shard
    查看索引
    db.adminCommand("listDatabases").databases.forEach(function(d){
    let mdb = db.getSiblingDB(d.name);
    mdb.getCollectionInfos().forEach(function(c){
       let currentCollection = mdb.getCollection(c.name);
       currentCollection.getIndexes().forEach(function(i){
          if (i.v === 2){
             printjson(i);
          }
       });
    });
    });
    

重新索引

db.adminCommand("listDatabases").databases.forEach(function(d){
   let mdb = db.getSiblingDB(d.name);
   mdb.getCollectionInfos().forEach(function(c){
      let currentCollection = mdb.getCollection(c.name);
      currentCollection.reIndex(); 
   });
});

实际执行来看,各分片主库执行就可以了,config server 主库执行后,发现丛库并没有同步过去, 在丛库也执行了。

0 回复
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。