设为首页 收藏本站
查看: 968|回复: 0

[经验分享] Mysql迁移工具在生产环境下的使用

[复制链接]

尚未签到

发表于 2018-9-29 12:49:09 | 显示全部楼层 |阅读模式
  在产品迭代开发发布过程中,由于业务需求的增加,数据库难免会有结构调整等操作.
  在每个版本发布过程中怎么控制每个版本server端程序与数据库版本保持一致,以及数
  据库升级、回滚等操作.
  本博文宅鸟将向大家推荐一款mysql数据库迁移工具mysql-php-migrations
  由于具体需求不同,宅鸟根据自己公司的情况将mysql-php-migrations做了一些修改来满应用!
  宅鸟修改改程序后的mysql迁移程序有以下目录:

  config 配置文件
  dbscript sql脚本目录
  lib 迁移程序类库
  migrate.php 迁移命令执行入口
  执行php migrate.php
  可以看到如下结果

  我们可以看到migrate.php有很多命令
  php migrate.php add  test
  结果:
  __ __         __      __
  |\/|  (_ /  \|   __ |__)|__||__) __ |\/|. _  _ _ |_. _  _  _
  |  |\/__)\_\/|__    |   |  ||       |  ||(_)| (_||_|(_)| )_)
  /                                    _/
  ******************************************************************** v2.0.1 ***
  New migration created: file
  /var/www/mysqlMigrations/dbscript/2013_12_18_14_50_45_test.php
  *******************************************************************************
  cd dbscript
  total 16
  -rw-r--r-- 1 www-data www-data 4837 Sep 29 09:21 2013_06_18_17_14_16_v1.php
  -rw-r--r-- 1 www-data www-data  802 Sep 29 13:29 2013_09_29_12_00_12_v1.php
  -rw-r--r-- 1 root     www-data  240 Dec 18 14:50 2013_12_18_14_50_45_test.php
  此时dbscript目录已经新添加一个2013_12_18_14_50_45_test.php文件,改文件格式如下:

  把需要修改的数据库脚本写在up函数中:
  把对应修改修改所做的回滚操作卸载down函数中
  注意:在生产环境下建议只做数据库的向上变迁,不做down操作,避免用户有用数据丢失.
  执行php migrate.php list 返回结果:
  WARNING: Migration numbers may not be in order due to interleaving.
  #         Timestamp
  ========================================================================
  version           createtime              active  current note
  1371546856        2013-06-18 17:14:16     1       0       v1
  1380427212        2013-09-29 12:00:12     1       1       v1
  1387349445        2013-12-18 14:50:45     0       0       test
  Page 1 of 1, 3 migrations in all.
  cd config 目录
  cat db_config.php

  了解该程序基本结构后,我们来开始使用一下它:
  cd mysqlMigrations
  php migrate.php add test2
  在dbscript下生成 2013_12_18_15_06_14_test2.php
  执行命令:php migrate.php list
  可以看到版本结果:
  #         Timestamp
  ========================================================================
  version           createtime              active  current note
  1371546856        2013-06-18 17:14:16     1       0       v1
  1380427212        2013-09-29 12:00:12     1       1       v1
  1387349445        2013-12-18 14:50:45     0       0       test
  1387350374        2013-12-18 15:06:14     0       0       test2
  Page 1 of 1, 4 migrations in all.
  说明:
  version 每次迁移的版本号
  createtime 创建时间
  active  是否已经激活生效
  current 数据库当前所在版本标志
  note  迁移的注释
  执行命令:php migrate.php up 1387349445   可以把数据版本从 1380427212 迁移到 1387349445
  #         Timestamp
  ========================================================================
  version           createtime              active  current note
  1371546856        2013-06-18 17:14:16     1       0       v1
  1380427212        2013-09-29 12:00:12     1       0       v1
  1387349445        2013-12-18 14:50:45     1       1       test
  1387350374        2013-12-18 15:06:14     0       0       test2
  Page 1 of 1, 4 migrations in all.
  执行命令:php migrate.php down 1380427212        可以把数据版本从 1387349445 回滚到 1380427212
  执行php migrate.php list查看数据库版本回滚结果
  #         Timestamp
  ========================================================================
  version           createtime              active  current note
  1371546856        2013-06-18 17:14:16     1       0       v1
  1380427212        2013-09-29 12:00:12     1       1       v1
  1387349445        2013-12-18 14:50:45     0       0       test
  1387350374        2013-12-18 15:06:14     0       0       test2
  Page 1 of 1, 4 migrations in all.
  如果要迁移到数据库最大版本可以执行一下命令:
  php migrate.php up max_version
  返回结果:
  Migrating to 2013-12-18 15:06:14 (ID 1387350374)...
  Performing UP migration 2013-12-18 14:50:45 (ID 1387349445)... done.
  Performing UP migration 2013-12-18 15:06:14 (ID 1387350374)... done.
  *******************************************************************************
  查看php migrate.php list
  #         Timestamp
  ========================================================================
  version           createtime              active  current note
  1371546856        2013-06-18 17:14:16     1       0       v1
  1380427212        2013-09-29 12:00:12     1       0       v1
  1387349445        2013-12-18 14:50:45     1       0       test
  1387350374        2013-12-18 15:06:14     1       1       test2
  Page 1 of 1, 4 migrations in all.
  执行回滚:
  php migrate.php down 1380427212
  返回一下结果:
  Migrating to 2013-09-29 12:00:12 (ID 1380427212)...
  Performing DOWN migration 2013-12-18 15:06:14 (ID 1387350374)... done.
  Performing DOWN migration 2013-12-18 14:50:45 (ID 1387349445)... done.
  #         Timestamp
  ========================================================================
  version           createtime              active  current note
  1371546856        2013-06-18 17:14:16     1       0       v1
  1380427212        2013-09-29 12:00:12     1       1       v1
  1387349445        2013-12-18 14:50:45     0       0       test
  1387350374        2013-12-18 15:06:14     0       0       test2
  Page 1 of 1, 4 migrations in all.
  通过执行一下操作,查看数据库中数据变化



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-603823-1-1.html 上篇帖子: 同主机单实例MySQL跨库同步指定表 下篇帖子: 搭建MySQL高可用架构MHA
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表