我想知道社区最适合我为我们的团队设置沙箱环境时遇到的问题。
目前,我们分别为测试和部署环境使用两个单独的MongoDB实例,均为3个成员副本集。内部几乎可以理解,测试环境中的所有数据都是一次性的,并且只是由开发人员在单元测试应用程序的过程中创建的。
我想为开发团队提供使用真实实时数据进行测试的新选项,但是在单独的安全沙箱实例中。起初,我最初认为我可以使用copyDatabase
命令每晚将数据转换为新数据库,并将各个开发人员应用服务器连接到此数据库。问题是系统中有大量的GridFS数据,像这样重复会浪费大量磁盘i / o,而我们正在较小的云实例中运行。
我担心走这条路,特别是如果有更合适的选择。
例如,是否可以设置仅作为从属设备运行的部署副本集的第四个成员,将所有查询设置为slaveOkay = True
并针对该单个节点运行测试?这会传播回其他成员吗?如何处理插入?
我所建议的可能是不切实际的,特别是如果转移必须通过网络,它也会浪费网络传输。有没有人曾经解决过类似的问题?谢谢!
答案 0 :(得分:1)
奴隶仅供阅读。所有写入都必须掌握。这排除了你的“第四奴隶”选项。
至于测试目的,您是否真的需要数据库的精确副本,以及所有gridfs数据?我试图只复制“重”数据的相关部分。这排除了db.copyDatabase()
:)改为mongodump
/ mongorestore
。
另外,我想指出测试db和staging db应该是不同的数据库。测试数据库用于单元测试(使用模拟/生成的数据)。临时数据库填充了生产数据,用于集成/验收测试。