这是我第一次来 我最近join了一家公司的系统pipe理员,最近我的任务是为我们的开发者制作更友好的开发环境。 到目前为止,我们的开发人员连接到我们的远程盒子,复制生产代码,恢复生产数据库,并更正apache vhost设置,然后开始开发。 大部分的开发都是通过腻子进行的,而且非常繁琐。
最近我了解到stream浪者,并为此感到惊讶。 所以我很快设置了一个简单的LAMP堆栈,我们的开发人员可以使用。 然而,在这一点上我最大的麻烦是如何设置一个像MySQL环境的prod数据库。 我们的数据库大小约为7GB,下载它然后在你的stream浪虚拟机中运行它是没有意义的。
我相信这是很多系统pipe理员过去处理的常见问题。 如何在Vagrant之后设置一个prod-like的开发数据库,而不必通过大量的数据转储。
我们的开发人员使用比生产中的数据集更小的数据集。 所有的表都是相同的,但数据不是实时数据集的副本。 这将取决于您的需求,但对我们来说,这是一个伟大的工作方式。
基本上有一个开发环境。 上次我使用大型数据库(严重的是,7GB是TINY)开发工具包大约10000GB。 我们使用了三台服务器中的一台 – 真正的灾难备用服务器 – 作为一个开发盒,如果操作系统需要,可以随时擦除。
现在我的工作量较小(每个数据库只有大约300GB),而且我们有一个开发人员使用的开发SQL服务器的中央池。
你需要一个适当的开发和testing环境 – 甚至像你这样的小型数据库也有一些问题。 等到你至less有小数据库。 7GB仍然很小。
我们已经解决了这个问题。 我们开始使用jetpants ,一个来自tumblr的开源MySQL分片工具。 从那里,我们意识到我们不需要马上同步提供的jetpants,所以我们进一步简化了夜间作为文件存储的备份。 我们使用lzop压缩该文件,然后将其发送到通过netcat开发的机器。 20 GB DB从开始到结束的时间? 4分钟。 SSD的帮助。
虽然你的prod数据库是7GB – 没有活动数据有多大? (活动数据是由用户或程序添加的数据 – 而参考数据是您需要为其他事物键入的数据。例如,地址logging – 街道名称和地址是活动数据,因为它是添加的但地址types是参考数据 – 因为他们必须从“主页”,“工作”或“其他”中进行select。)
只有模式和参考数据,不应该为每个环境创build一个新的实例。 出于某种原因,如果是这样,开发人员使用“开发”数据库有什么问题?