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

标签 mysql database deployment jenkins

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

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

我考虑过这个问题并尝试了一些方法,但我发现没有快速且可以完成这项工作的方法。 我的第一个想法是通过 mysqldump 转储所有数据,将其导入到开发机器上,并发送一些 MySQL 查询来设置占位符而不是私有(private)数据

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

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

什么是执行此操作的好且快速的方法? 我考虑过使用 mysqldump 之类的方法来替换数据,这样就不会产生任何开销。但我找不到任何可以做到这一点的工具。

最佳答案

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

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

关于mysql - 将实时数据库复制到开发服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26726107/

相关文章:

.net - .net 程序集的热部署

linux - 如何将 Happstack 应用程序部署到生产环境中?

jsp形式的Java UTF-8编码

mysql - 使用 Hadoop 作为 MySQL 存储引擎?

java - 网站无法显示土耳其语字符。 Tomcat 服务器,Mysql 数据库

php - 用 php 分隔逗号分隔的 mySql 数据库字段值

mysql - 如果每个线程获得 3000 个帖子,是否为每个线程创建一个新表可能更好?

ios - 难以置备iPad应用程序以在iPad上进行测试

mysql - 为什么向我的查询添加 WHERE 语句(在具有索引的列上)会使我的运行时间从几秒增加到几分钟?

php - 使用 LIKE 子句加速 MySQL 内连接