2014-11-04 31 views
0

我们有一个高效的MySQL数据库,其中包含私人用户数据(密码,ips,电子邮件等)。 当开发人员在他的developer-vm上的jenkins中运行构建作业时,我们希望包含一个实时数据库的副本,以便获得与我们的生产环境非常相似的环境。但是,我们已经清理生产数据库之前,它被复制到开发服务器,因为2个原因:将实时数据库复制到开发服务器

  • 开发者不应该得到这样的散列密码或电子邮件
  • 我们所有的用户数据的副本数据库很大,所以我们想要删除dev中有几个实际测试数据集的一些内容,但不是> 100k,这样做没有任何好处,并且会增加转储时间。

我想到了这件事,并尝试了一些东西,但是我没有发现任何方法都很快,并且会完成这项工作。 我的第一个想法是使通过mysqldump的所有数据的转储,将其导入开发机上,并发送一些的MySQL Querys设置占位符,而不是私人数据的

UPDATE user_data SET email = "[email protected]" [...] 

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

这样做的好方法是什么? 我考虑过使用mysqldump替换数据,所以不会创建任何开销。但我找不到任何可以做到这一点的工具。

回答

0

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

开发人员只能访问来自生产服务器的这个“开发人员”数据库,您知道该数据库已被修剪为任何敏感内容。作为奖励,他们可以直接连接到它,并且可能永远不需要下载它。

+0

问题是我们有多个开发人员,所以他们每个人都应该拥有自己的开发者数据库副本。有时不得不将实际生产数据库部署到开发机器上,因为开发数据库不再是最新的。所以我想构建一个自动解决方案,即开发人员可以在其开发人员计算机上包含一个实际生产数据库的副本,而不需要在jenkins中使用复选框输入敏感的用户数据。 – Lion 2014-11-04 17:31:04

+0

没错,在一些服务器上维护一个共同的开发数据库,​​它们都连接到和/或下载。这样,生产数据库永远不会下载(用于开发) – mainstreetmark 2014-11-04 17:37:30

相关问题