1

我想知道社区对于我在为我们的团队设置沙盒环境时遇到的问题最有什么建议。

目前,我们分别为我们的测试和部署环境使用两个独立的 MongoDB 实例,都是 3 个成员副本集。内部几乎可以理解,测试环境中的所有数据在很大程度上都是一次性的,并且只是由开发人员在对应用程序进行单元测试的过程中创建的。

我想为开发团队提供使用真实实时数据进行测试的新选项,但要在单独的安全沙箱实例中进行。起初,我最初认为我可以使用该copyDatabase命令每晚将数据复制到一个新数据库中,并将各个开发人员应用程序服务器连接到该数据库。问题是系统中有大量的 GridFS 数据,像这样复制会浪费大量的磁盘 i/o,而且我们在较小的云实例中运行。

我对走这条路持谨慎态度,特别是如果有更合适的选择。

例如,是否有可能设置部署副本集的第四个成员,该成员仅作为从属节点运行,将所有查询设置为slaveOkay = True并针对该单个节点运行测试?这会传播回其他成员吗?如何处理插入?

我的建议可能是不切实际的,特别是如果传输必须跨越网络,这也会浪费网络传输。有没有人必须解决类似的问题?谢谢!

4

1 回答 1

2

奴隶只是为了阅读。所有写入都必须交给主控。这排除了您的“第四个奴隶”选项。

至于测试目的,您真的需要数据库的精确副本以及所有 gridfs 数据吗?我会尝试只复制“重”数据的相关部分。这排除了db.copyDatabase():) 做一个mongodump/mongorestore代替。

另外,我想指出 test db 和 staging db 应该是不同的数据库。测试数据库用于单元测试(使用模拟/生成的数据)。暂存数据库填充了生产数据并用于集成/验收测试。

于 2012-05-21T13:11:50.543 回答