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

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

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

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

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

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

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

  1. mysql 数据分组_详解MySQL 数据分组

    创建分组 分组是在select语句中的group by 子句中建立的. 例: select vend_id, count(*) as num_prods from products group by ...

  2. 怎么监控mysql数据变化_实时监控mysql数据库变化

    对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...

  3. mysql数据库命令_新手入门MYSQL数据库命令大全

    一.命令行连接数据库 Windows操作系统进入CMD命令行,进入mysql.exe所在目录,运行命令 mysql.exe -h主机名 -u用户名 -p密码 注意:参数名与值之间没有空格 , 如:-h ...

  4. 如何排查mysql数据乱码_如何解决MYSQL数据库中文乱码问题?

    aluckdog 在数据库安的时候指定字符集如果在安完了以后可以更改以下文件:C:\Program Files\MySQL\MySQL Server 5.0\my.ini里的所有的 default-c ...

  5. jena 开发之 mysql数据导入_在Jena框架下基于MySQL数据库实现本体的存取操作

    转自:http://blog.csdn.net/jtz_mpp/article/details/6224311 最近在做一个基于本体的管理系统.其中对本体的操作部分,我使用的是Jena框架:数据模型是 ...

  6. mysql+dump+选项_详解MySQL数据备份之mysqldump使用方法

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  7. mysql双机数据热备份_如何设置MySql数据同步实现双机热备份

    mysql从3.23.15版本以后就提供了数据库复制功能,利用该功能可实现两个数据库以主从模式来同步数据.互相备份的功能.数据库同步复制功能的设置都在mysql的设置文件中体现.该方案实施的一大基本原 ...

  8. 修改mysql文件位置_如何修改mysql数据文件存储位置

    如果想更换mysql的数据文件的存储位置,则: Centos下: 查看MYSQL数据文件存储路径 mysql>show variables like '%datadir%'; # /usr/lo ...

  9. mysql function函数_详解MySQL如何按表创建千万级的压测数据

    概述 有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据. 1.准备测试表 CREATE TAB ...

  10. solr mysql数据注入_(solr系列:四)将mysql数据库中的数据导入到solr中

    在前面的博文中,已完成了在tomcat中对solr的部署,为solr添加了一个自定义的core,并且引入了ik分词器. 那么该如何将本地的mysql的数据导入到solr中呢? 准备工作: 1.mysq ...

最新文章

  1. MySQL慢查询日志分析(二)
  2. SSL WS-Security--Web Service安全保障
  3. 黑php的称呼,称呼
  4. oracle节点1关闭节点2的集群,[Oracle] Oracle两个节点分裂,识别不到对方节点的状态...
  5. linux环境下配置虚拟主机域名,Linux下三种虚拟主机的配置方法
  6. 积跬步-java任职要求
  7. 【渝粤题库】陕西师范大学100101美学概论作业(高起本)
  8. java蓝桥杯 试题-基础练习-十六进制转八进制
  9. 苹果小圆点怎么弄出来_原来苹果手机轻点2下屏幕就能截图,以前还不知道,太方便了...
  10. ajax返回html页面执行,【提问】ajax请求返回整个html页面
  11. 单选按钮必填会有红色选中提示吗_视频切割怎么弄?视频剪辑软件可以切割视频吗?...
  12. Docker学习2-虚拟化
  13. UK Biobank专题
  14. 邮件服务器IMail教程(2)
  15. explanatory variable(independent vs dependent)、design matrix
  16. quartus调用D触发器DFF和JK触发器JKFF
  17. WIN7安装MTK驱动(系统找不到指定文件!解决方案)
  18. 最新手机号码、电话号码正则表达式
  19. 虚拟机自省XenAccess和vmitools
  20. 一文纵览无监督学习研究现状:从自编码器到生成对抗网络

热门文章

  1. root cause of error messagw for a mixed usage of 01 and 03
  2. SAP IBASE category 01 download
  3. CM:How is the version of word installed in client returned to Application server
  4. 使用ABAP调用BRF+ function
  5. Object category automatic search
  6. 如何查看S/4HANA指定时间段批量生产订单的状态
  7. Netweaver和CloudFoundry里的trace开关
  8. echo和pwd获取文件路径的区别对比
  9. hmc如何进入aix系统_linux系统中如何进入退出vim编辑器,方法及区别
  10. linux c账户安全性,linux c flash安全策略