在Ubuntu 16.04中升级MongoDB 2.6.12至4.2
我有一个使用MongoDB(版本2.6.12)的web应用程序,托管在DigitalOcean的(Ubuntu 16.04)服务器上 我喜欢使用Robo3T连接到远程数据库并进行简单查询 现在,我需要执行包含在Ubuntu 16.04中升级MongoDB 2.6.12至4.2,mongodb,Mongodb,我有一个使用MongoDB(版本2.6.12)的web应用程序,托管在DigitalOcean的(Ubuntu 16.04)服务器上 我喜欢使用Robo3T连接到远程数据库并进行简单查询 现在,我需要执行包含$lookup之类的查询,他们告诉我MongoDB 2.16.12版不支持这种查询。所以我需要认真备份我的数据库并升级MongoDB 在我看来,这似乎太复杂了:我不知道我是否有MongoDB驱动程序、共享集群、独立实例等等 有人还说,我们需要一步一步地做:升级到某个版本,然后升级到4.2 我
$lookup
之类的查询,他们告诉我MongoDB 2.16.12版不支持这种查询。所以我需要认真备份我的数据库并升级MongoDB
在我看来,这似乎太复杂了:我不知道我是否有MongoDB驱动程序、共享集群、独立实例等等
有人还说,我们需要一步一步地做:升级到某个版本,然后升级到4.2
我可以信赖吗?我想在行动之前确定
编辑1:这里是models/Users.js
中代码的一部分:
addAccountWOCheck(profile) {
return new Promise((resolve, reject) => {
var x = {}; x[profile.provider] = profile;
var collection = new this.user(x);
this.setPassword(x, profile.password);
delete collection.local.password;
delete collection.local.passwordRepeat
collection.save((err, data) => { if (err) throw (err); resolve(data) }) // {JavaScript}: only "collection.save()" does not work here
})
}
setPassword(collection, password) {
var salt = crypto.randomBytes(16).toString('hex');
var hash = crypto.pbkdf2Sync(password, salt, 1000, 64, 'SHA1').toString('hex');
collection.local.hash = hash;
collection.local.salt = salt
}
是8岁,所以链接可能不再工作
MongoDB驱动程序通常是应用程序中用来处理连接到数据库以进行查询、插入等操作的库。如果不升级驱动程序就将数据库从2.6升级到4.2,它可能无法连接。最好先升级驱动程序,然后升级数据库
如果要使用mongodump备份数据,并使用mongorestore将其插入升级后的数据库,则无需分步升级
- 使用mongodump备份数据集
- 卸载现有版本
- 遵循MongoDB 4.2的说明
- 使用mongorestore恢复数据
MMAP也消失了,但当您使用备份/还原方法升级时,这应该不是问题。谢谢您。。。“因此,升级后您可能需要重新创建所有用户”==>备份/恢复方法是否会自动重新创建所有用户?我应该手动做些特别的事情吗?我不确定,从2.6.12升级到4.2是一个巨大的飞跃。MongoDB CR在4.0中被删除,因此恢复可能根本不会创建用户。如果确实如此,您将至少需要重置所有密码。您可能需要重新创建所有用户。我可以使用备份/还原方法在使用MongoDB 4+的本地主机中还原用户。这是否意味着服务器升级不会有问题?如果您按照以下步骤进行,尤其是,您应该能够从3.0开始mongodump,安装干净、空的4.2和mongorestore,而不会中断用户。肯定要先备份并升级应用程序/驱动程序。2.6版本中未提供SCRAM-SHA-1: