问:用于测试和开发的生命副本的最佳架构是哪个?
当前设置:
我们有两个这样的 amazon/EC2 mongod 服务器:
Machine A:
A production database (on an amazon/EC2 server) (name it ‘PROD’)
Other databases (‘OTHER’)
Machine B:
a pre-production database (name it ‘PRE’)
a copy for developer 1 own tests (call it ‘DEVEL-1’)
a copy for developer 2 (DEVEL-2)
…DEVEL-n
PRE 数据库用于在部署到生产环境之前进行集成测试。
DEVEL-n 适用于每个开发人员在不打扰其他开发人员的情况下丢弃自己的数据。
有时,我们希望将来自 PROD 的新数据“恢复”到 PRE 和 DEVEL-n 库中。
目前我们通过 .copyDatabase() 命令从 PROD 传递到 PRE。然后我们发出“n”次 .copyDatabase() 以从 PRE 复制到 DEVEL-n。
麻烦:
一个副本需要很长时间(每个副本 1 小时,DBsize 超过 10GB),而且通常它会使 mongod 饱和,所以我们必须重新启动服务。
我们发现:
- 转储/恢复系统(饱和如 .copyDatabase() 一样)
- 副本集
- 主/从(似乎已弃用)
副本集似乎是赢家,但我们有严重的疑问:
假设我们想要一个副本集将实时 A/PROD 同步到 B/PRE(并且 A 可能作为主要,B 可能作为次要):
a) 我可以从 A 中选择“一些”数据库来复制 PROD,但不考虑 OTHER?
b) 我可以在 B 中拥有不在主数据库中的“额外”数据库(如 DEVEL-n)吗?
c)我可以“停止复制”,以便我们可以部署到 PRE,用新鲜数据测试软件,用测试丢弃数据,测试完成后“重新链接”副本,以便删除 PRE 中的更改, PROD 的变化是否已充分传输到 PRE?
d) 除了适用于这种情况的副本集之外,还有其他更好的方法吗?
谢谢。玛丽娜和哈维。