mysql数据版本控制_如何对MySQL数据模型进行版本控制和同步?

在工作中,我们开发了一个小脚本来管理我们的数据库版本控制。对任何表或数据集的每次更改都会获得它自己的SQL文件。

文件按顺序编号。我们通过将该信息存储在数据库中来跟踪已运行的更新文件。当文件即将执行时,脚本会插入带有文件名的行,并在执行完成时使用完成时间戳更新行。这包含在事务中。 (值得记住的是,MySQL中的DDL命令不能在事务中发生。任何在事务中执行DDL的尝试都会导致隐式提交。)

因为SQL文件是我们源代码存储库的一部分,所以我们可以使更新脚本成为正常部署过程的一部分。这使得数据库和代码保持同步变得容易。老实说,最困难的部分是确保另一个开发人员没有在挂起的提交中抓取下一个数字。

我们将此更新系统与我们的开发数据库的(可选)夜间擦除相结合,将内容替换为昨晚的实时系统备份。恢复备份后,将运行更新,并在此过程中运行任何挂起的更新文件。

恢复的方式是只覆盖实时数据库中的表。因此,任何添加表的更新也必须负责仅在不存在时添加它。 DROP TABLE IF EXISTS很方便。不幸的是,并非所有数据库都支持这一点,因此更新系统还允许执行用我们选择的语言编写的脚本,而不仅仅是SQL。

所有这些都在大约150行代码中。它就像读取目录,将内容与表格进行比较,以及按照确定的顺序执行尚未执行的任何内容一样简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值