关于sql:在持续交付过程中,有没有一种正确的方法可以自动将数据从生产转移到开发?

In a continuous delivery process, is there a proper way to automatically move data from production to development?

在通用的持续交付流程中,代码正从开发实例转移到暂存实例到生产实例。

出于开发目的(再现错误,使用完整数据集测试性能),大多数时候开发人员将数据从生产数据库提取到他们的开发环境。例如,请参阅此问题。

在我的公司,我们在持续交付流程中使用三个实例:

  • 最新:每晚与我们的SCM主干同步
  • staging:在部署到生产之前使用上次发布的版本
  • stable:与生产中部署的软件版本完全相同(用于重现生产中发现的错误)

问题是在稳定的实例上,为了重现错误,我们希望拥有与生产完全相同的数据集。所以我们希望每晚同步数据库。

这是一个好习惯吗?怎么实现呢?任何陷阱?


根据生产中的数据,您可能不希望将其复制回非生产环境。 (或者甚至可能不允许根据某些规定。)如果您有客户数据,个人身份信息(PII),受监管数据,财务数据,信用卡数据,健康数据,SSN或任何其他类型的敏感数据, 你复制它,你需要你在生产中拥有(或应该拥有)的完全控制 - 你可能没有,也可能不想要。


我建议您寻找几种VDB解决方案。
其中一个是Delphix


Windocks支持具有集成数据库克隆的容器,仅用于描述的用例。 完全披露,我为Windocks工作。