某些背景:我们构建并发布了Mongo应用程序,客户可以在其位置或选择的云中进行安装
我们为客户提供了一种备份和还原其数据的方法。 mongo非常庞大,因此mongodump和restore都不可行。因此,我们开始直接复制mongo数据文件夹并还原。这似乎工作正常,但是稍后在新版本中我们升级了mongo版本,如果我们让客户直接使用旧版本的data文件夹进行还原,看来这将永远无法正常工作?
我发现很少有线程会说它是否行得通,但这只是运气,尽管有很多方法可以恢复,例如旋转旧版本并升级mongo并将数据文件夹带入新版本(但这将是一个艰难的过程)< / p>
有什么方法可以保证流程看起来很顺利吗?像mongo本身可以检测到旧数据并进行升级还是通过放置一些兼容性标志?
答案 0 :(得分:0)
我将从一个假设开始,因为您说最近您升级了MongoDB 3.6版(或4.0版)。
哪个很棒,但是没有设置some admin flags,该版本与3.4不兼容。 Here are the compatibility changes in detail。
现在在这种情况下要做的是您必须进行设置,以使数据库与3.4兼容:
testing(){
let testarr = this.state.songList;
let testsongs = this.state.songs;
for(var i = 0; i < testsongs.length; i++){
for(var j = 0; j < testarr.length; j++){
if(testsongs[i] === testarr[j].songname){
testarr[j].count += 1;
testarr.push({
songname: 'hej',
count: 1
});
}
}
}
clearInterval(this.interval);
console.log("songlist ");
console.log(this.state.songList);
console.log("songs " + this.state.songs);
console.log("tessong " + testsongs);
console.log("testarr ");
console.log(testarr);
}
这将使其与以前的版本一起使用,但以不使用3.6功能为代价。
您可以看到自己正在使用db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
:
featureCompatibilityVersion
如果这有帮助,并且您现在已完成所需的更改,则可以通过这次用`db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )`
值执行相同的3.6
命令来撤消setFeatureCompatibilityVersion
兼容性。现在,此功能已经过测试,可以在3.4至3.6之间正常运行,反之亦然。如果您的版本较低,仍然值得尝试:)。
从文档中了解在3.6上完成后的操作:
如果在MongoDB 3.6部署上进行设置,则禁用3.6功能 持久存储与MongoDB 3.4不兼容的数据。
总而言之,我假设我们正在谈论3.6到3.4,但是对于4.0到3.6等仍然适用。您仍然必须尝试一下,看看它是否对您有任何好处。希望这会有所帮助。
答案 1 :(得分:0)
注意事项:
将mongodb从一个版本升级到另一个版本必须遵循以下直接链接到数据兼容性的checks:
方法:
考虑到您的用例,您的用户可以控制mongodb部署,您可以: