UDN-企业互联网技术人气社区

板块导航

浏览  : 1182
回复  : 0

[讨论交流] 用 git 和 git hooks 解决多地开发时 MySQL 同步问题

[复制链接]
巡山霉少女的头像 楼主
发表于 2016-3-18 21:27:12 | 显示全部楼层 |阅读模式
  需求

  我经常在家和公司的不同电脑上开发一个Web项目, 代码托管可以用GitLab或者GitHub, 这解决了代码的多地同步问题, 但是MySQL一直没发现一个好的方式来同步。

  目前MySQL多地同步的方案主要有以下几种

  使用可远程连接的MySQL, 多地开发时直接连接这个数据库, 这个方案如果网速不好的话,就不合适

  A 地使用mysqldump导出sql文件,发送给 B 地,B 地再恢复到MySQL中,这个方案手动操作的话很麻烦,费时

  使用git和git hooks在提交和合并代码时自动相应的导出和恢复数据库, 这个方案自动化了MySQL的导出和恢复工作,简直完美

  条件准备

  mysql 5.6+, 修改my.cnf文件, 在[client]下面添加

  1.   user=你的 MySQL 账号
  2. password=你的 MySQL 密码
复制代码


  以解决
  1. MySQL5.6 Using a password on the command line interface can be insecure
复制代码
的问题

  git

  坚果云(用于差量同步导出的sql文件)

  动手干

  首先编辑pre-commit文件,这个钩子在代码commit之前可以执行脚本

  
  1. [your editor] /path/to/your/repo/.git/hooks/pre-commit
复制代码


  写pre-commit钩子, 我们将要告诉系统去把我们的数据库dump到坚果云里面

  
  1. mysqldump --skip-extended-insert demo > /Users/lee/我的坚果云/demo.sql
复制代码


  给pre-commit加上可执行权限

  
  1. chmod +x /path/to/your/repo/.git/hooks/pre-commit
复制代码


  现在我们来写post-merge钩子,我们将要告诉系统在git合并代码的时候,把放在坚果云上的sql文件恢复到本地的MySQL数据库中

  
  1. [your editor] /path/to/your/repo/.git/hooks/post-merge
复制代码


  在post-merge文件里写上

  
  1. mysql demo < ~/我的坚果云/demo.sql
复制代码


  不要忘记给post-merge加上可执行权限啦

  
  1. chmod +x /path/to/your/repo/.git/hooks/post-merge
复制代码


  就是这样,现在当你commit和pull代码时,MySQL数据库可以自动的在多个地方同步啦

  总结

  使用坚果云来同步导出的sql文件是因为坚果云在国内是唯一一家靠谱的云存储公司,其他国内的公司倒闭的倒闭,阉割的阉割,就是不让人省心

  如果可以无障碍畅游网络的话,可以选择更好的Dropbox

  享受生活吧

原文作者:叶萌  来源:开发者头条

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部