mysql生产管理_mysql – 如何在开发,测试和生产中管理数据库?

我很难找到如何在开发,测试和生产服务器之间管理数据库模式和数据的好例子。

这是我们的设置。每个开发人员都有一个虚拟机运行我们的应用程序和MySQL数据库。这是他们的个人沙箱,做任何他们想要的。目前,开发人员将更改SQL模式,并将数据库转储到它们提交到SVN的文本文件中。

我们想要部署一个始终运行最新提交的代码的持续集成开发服务器。如果我们现在这样做,它将从SVN为每个构建重新加载数据库。

我们有一个运行“发布候选”的测试(虚拟)服务器。部署到测试服务器当前是一个非常手工的过程,通常涉及我从SVN加载最新的SQL和调整它。此外,测试服务器上的数据不一致。你最后得到最后开发者提交的任何测试数据在他的沙盒服务器上。

在那里,一切都崩溃了,就是部署到生产。由于我们不能用测试数据覆盖实时数据,因此涉及手动重新创建所有模式更改。如果有大量的模式更改或转换脚本来操纵数据,这可能会真的毛茸茸。

如果问题只是模式,这将是一个更容易的问题,但是在开发期间更新的数据库中有“基本”数据,如安全和权限表中的元数据。

这是我走向持续集成和一步建设的最大障碍。你怎么解决呢?

后续问题:如何跟踪数据库版本,以便知道运行哪些脚本来升级给定的数据库实例?是Lance提到的版本表低于标准程序吗?

我将编写一个Python脚本,它根据数据库中的表检查给定目录中的* .sql脚本的名称,并根据形成第一部分的整数按顺序运行那些不存在的脚本文件名。如果它是一个很简单的解决方案,我怀疑它会是,然后我会发布在这里。

我有一个工作脚本。它处理初始化数据库(如果不存在),并根据需要运行升级脚本。还有用于擦除现有数据库和从文件导入测试数据的开关。它大约有200行,所以我不会发布它(虽然我可以把它放在pastebin如果有兴趣)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值