是否可以从MySQL服务器提取上个月的值并从这些值构建新数据库?


8

我有一个任务来构建开发虚拟机模板。

我需要将我公司产品中每一种的MySQL数据库添加到服务器中,以便新开发人员能够为每种产品进行开发。

大多数数据库小于1GB。

但是我有一些巨大的数据库(大约160G)-但是我要创建的模板的大小有限,并且在其中添加160GB的DB是不合理的。

因此,我正在尝试寻找一种正确的方法,例如从这个庞大的数据库中提取上个月的值,并将其添加到服务器中,以便开发人员能够“感觉”在该数据库上工作的感觉。

有可能做这样的事情,如何做?谢谢!

编辑:

不幸的是,没有单独的主数据库服务器可以容纳所有开发数据库,​​也没有必要定期更新数据,我只需要提供与生产服务器中相同的数据(在随机时间段内)即可。新开发者的沙盒环境。

Answers:


8

如果我理解正确,您打算为每个开发环境制作一个单独的数据库副本。

虽然这对于小型数据库可能是可行的,但对于大型数据库则无法很好地工作。因此,除非您有确凿的理由为每个环境设置一个单独的数据库,否则最好考虑拥有一个开发数据库副本并设置所有开发环境以使用它。

这种方法将允许您定期使用最新数据刷新开发数据库,​​如果有人将其弄乱了,则可以再次刷新它。

还要想象一下您的开发人员开始处理一些需要创建新表的新项目的情况。如果您只有一个开发数据库副本,则您(或开发人员)将需要创建这些表并将测试数据填充一次。现在,想象开发人员意识到初始表结构不是最佳的,需要进行更改。同样,这将需要在单个DB上完成,而这可能与数十种环境相对。

这是我一次又一次地用于大型项目的方法,并且大多数情况下效果很好。


2
在我工作的商店中,每个开发人员都有自己的数据库副本,因此没有人踩别人的脚。这对我们来说很好。我们有脚本来从头开始重建数据库,并用开发所需的测试数据填充它。单个数据库经常会出现问题,因为在某些数据库区域工作的人会破坏其他人的工作。然后,每个人都在恢复大数据库时暂停。因此,拥有一个数据库并不是一个出色的解决方案。(TBH也不是。这是视情况而定。)
Andrew Savinykh

同意 出于好奇,您的数据库有多大?我看不到这如何处理160GB的DB。
grekasius 2014年

当然,开发数据库将故意很小,仅包含测试开发人员正在处理的内容所需的数据子集。为了进行性能测试等目的,将使用一个单独的(更大)实例。
Andrew Savinykh

我不需要定期更新数据,只需将其放置在此模板中一次即可。
Itai Ganot 2014年

看一下是否可以从当前数据库中创建一个小的样本数据集。不幸的是,这里没有简单的答案。您需要做什么取决于您拥有的数据以及选择放入该开发数据库中的内容。
grekasius

4

这在很大程度上取决于数据库中的数据类型。在某些情况下,它可能像

select * from table where date > ....

而在其他情况下,由于数据的结构无法将其分开。最后,这很可能是混合因素,很难解决。


2
具体来说,某些数据库可能具有较新的条目(例如,<1个月),这些条目引用了较旧条目(例如,> 1个月)的记录。处理它们的方式完全取决于如何设置这些引用,除了最基本的引用以外,其他引用都不可行。
鲍勃

0

最近,我们遇到了一个客户想要提取数据库最后30天的情况。如果所有表都具有可在其中定义日期时间的相同属性,则可以执行

mysqldump --where ='datetimefield>“ 2014-06-28”'

但他想将不同的表与新旧数据混合使用。所以这对他来说不是解决方案,但对您来说可能是一个解决方案?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.