我正在从外部数据源创建一个并行集合(相同的架构-名称不同)。准备好收集后,我希望在不停机的情况下切换2个设备。有什么建议吗?
我正在使用mongoose创建并行集合,以便使用mongoose“ magic”(默认值,模型验证等),但是产生了诸如mongoexport,mongoimport之类的终端命令来快速删除并填充原始集合。不幸的是,似乎无法摆脱删除和导入新数据之间的空白。
// switching between _publications and publications
results = spawnSync('mongoexport', [
'--db', 'convoy',
'--collection', '_publications',
'--out', 'res/json/_publications.json',
'--jsonArray'
], {
shell: true
})
console.log(`mongoexport done`)
if (!fs.existsSync(`./res/json/_publications.json`)) return cb(`export failed - export file doesn't exist`)
if (fs.statSync(`./res/json/_publications.json`).size < 50) return cb(`export failed - export file smaller than 50 bytes`)
console.log(`dropping publications`)
await mongoose.connection.db.dropCollection('publications')
console.log(`importing _publications to publications collection`)
// mongoimport publications.json -d convoy -c publications --jsonArray
results = spawnSync('mongoimport', [
'res/json/_publications.json',
'-d', 'convoy',
'-c', 'publications',
'--jsonArray'
], {
shell: true
})
fs.unlinkSync(`./res/json/_publications.json`)
await mongoose.connection.db.dropCollection('_publications')
cb(null, `done!`)
我有一个mongo副本集(主要,次要,仲裁者)。 这种体系结构是否已经确保我没有停机时间? 更好的方法? 谢谢!