将实时数据库复制到开发服务器

时间:2014-11-04 01:03:24

标签: mysql database deployment jenkins

我们有一个富有成效的MySQL数据库,里面有私人用户数据(passwordhashes,ips,电子邮件等)。 当开发人员在他的developer-vm上运行jenkins中的buildjob时,我们希望包含一个实时数据库的副本,以便他获得一个与我们的生产数据库非常相似的环境。但是我们要在将生产数据库复制到开发服务器之前清理它,原因有两个:

  • 开发人员不应该获得我们所有用户数据的副本,例如散列密码或电子邮件
  • 数据库很大,所以我们要删除一些开发人员有一些真实数据集供测试的内容,但不是> 100k,这将没有任何好处,并将增加转储的时间

我想到了这一点并尝试了一些方法,但我发现没有哪种方法能够快速完成工作。 我的第一个想法是通过mysqldump转储所有数据,在dev-machine上导入它,并发送一些MySQL-Querys来设置占位符而不是私有数据

UPDATE user_data SET email = "dev@example.com" [...]

一方面,这很慢,因为它必须复制庞大的数据库并执行查询。而且我不喜欢它所有的用户数据都在开发机器上,即使是很短的时间。当数据首先被清理然后导出到开发机器时,我希望它更好。这可以通过在生产系统上复制临时数据库,然后清除数据,导出数据并删除生产系统上复制的数据库来实现。但这也造成了很多开销。

这样做的好方法是什么? 我想到了像mysqldump这样的东西来替换数据,因此不会产生任何开销。但我找不到任何可以做到这一点的工具。

1 个答案:

答案 0 :(得分:0)

您是否有足够的空间在生产服务器上安装两个数据库?如果是这样,请在同一台服务器(或任何服务器)上创建一个开发人员数据库,这是每晚的生产转储,减去所有敏感信息和批量。

开发人员只能从生产服务器访问此“开发人员”数据库,您知道这些数据库已被修剪过任何敏感信息。作为奖励,他们可以直接连接到它,可能永远不需要下载它。