数据库结构版本控制

数据库结构版本控制


目录

  • 1. 什么是数据库结构版本控制
  • 2. 为什么要做数据库结构本版控制
  • 3. 何时做数据库结构本版控制
  • 4. 在哪里做数据库结构本版控制
  • 5. 谁来负责数据库结构本版控制
  • 6. 怎样做数据库结构本版控制
    • 6.1. 安装脚本
    • 6.2. 启动脚本,停止脚本
    • 6.3. 查看历史版本

1. 什么是数据库结构版本控制

首先说说什么是数据库结构,什么事版本控制。

数据库结构是指数据库表结构,数据库定义语言导出的DDL语句。主要由CREATE TABLE, DROP TABLE等等构成。

再来说说什么事版本控制,如果你从事开发工作应该会很容易理解,版本控制就是记录每一次变化,可以随时查看历史记录,并可回撤到指定版本。

2. 为什么要做数据库结构本版控制

软件开发过程中需要常常对数据库结构作调整,这是无法避免的,甚至很多想起启动后,需求还不明确,开发人员只能按照所理解需求创建表。需求往往会发生变化,一旦变化,代码需要修改,表结构也避免不了。 我们常常刚改好数据库结构,需求部门有发来通知,不用修改了,维持原有设计。甚至是过了几周再次回撤。

所以我们要将数据库结构的变化进行版本控制,通常的做法是DBA人工管理,但我觉完全可以自动化的工作,没有必要浪费人力资源,且自动化不会犯错更稳定,仅仅需要人工定期查看工作状态即可。

3. 何时做数据库结构本版控制

任何时候都可以部署下面的脚本,对现有系统无任何影响。

4. 在哪里做数据库结构本版控制

可以在版本控制服务器上,建议GIT仓库push到远程。

5. 谁来负责数据库结构本版控制

DBA与配置管理员都可以做,通常DBA不接触版本库这块,建议创建一个backup用户给配置管理员。

6. 怎样做数据库结构本版控制

6.1. 安装脚本

首先下载脚本 https://github.com/oscm/devops/blob/master/shell/backup.mysql.struct.sh

wget https://raw.githubusercontent.com/oscm/devops/master/shell/backup.mysql.struct.sh
mv backup.mysql.struct.sh /usr/local/bin
chmod +x /usr/local/bin/backup.mysql.struct			

创建备份用户

CREATE USER 'backup'@'localhost' IDENTIFIED BY 'SaJePoM6BAPOmOFOd7Xo3e1A52vEPE';
GRANT SELECT, LOCK TABLES  ON *.* TO 'backup'@'localhost';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'backup'@'localhost';			

配置脚本

BACKUP_HOST="localhost"			数据库主机
BACKUP_USER="backup"			备份用户
BACKUP_PASS="chen"				备份密码
BACKUP_DBNAME="test aabbcc"		版本控制那些数据库,多个数据库使用空格分隔
BACKUP_DIR=~/backup				数据库结构放在那里			

初始化仓库

# /usr/local/bin/backup.mysql.struct init
Initialized empty Git repository in /www/database/struct/.git/			

6.2. 启动脚本,停止脚本

# /usr/local/bin/backup.mysql.struct
Usage: /usr/local/bin/backup.mysql.struct {init|start|stop|status|restart}			

开始脚本

# /usr/local/bin/backup.mysql.struct start			

查看状态

# /usr/local/bin/backup.mysql.struct status
 9644 pts/1    S      0:00 /bin/bash /usr/local/bin/backup.mysql.struct start			

停止脚本

# /usr/local/bin/backup.mysql.struct status			

6.3. 查看历史版本

通过 git log 命令查看历史版本

			# cd /www/database/struct/

# git status
# On branch master
nothing to commit (working directory clean)

# git log
commit d38fc624c21cad0e2f55f0228bff0c1be981827c
Author: root <root@slave.example.com>
Date:   Wed Dec 17 12:33:55 2014 +0800

    2014-12-17.04:33:55			

这里仅仅将数据库结构版本控制,关于版本控制软件更多细节,延伸阅读《Netkiller Version 手札》

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2017-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

你不得不知道的Visual Studio 2012(2)- 全新调试功能

Windows 8 带来了一种新的应用程序生命周期模型,其中 Windows 商店应用程序会为用户自动管理。即使它们从未运行过,也没有显示在屏幕上,这些应用程序...

1707
来自专栏PPV课数据科学社区

Android数据库高手秘籍(一)——SQLite命令

要想熟练地操作任何一个数据库,最最基本的要求就是要懂SQL语言,这也是每个程序员都应该掌握的技能。虽说SQL博大精深,要想精通确实很难,但最基本的一些建表命令,...

3575
来自专栏Golang语言社区

用 Go 写一个轻量级的 ssh 批量操作工具

大家都知道 Ansible 是功能超级强大的自动化运维工具,十分的高大上。太高大上了以至于在低端运维有点水土不服,在于三点:

1032
来自专栏Netkiller

数据库结构版本控制

数据库结构版本控制 目录 1. 什么是数据库结构版本控制 2. 为什么要做数据库结构本版控制 3. 何时做数据库结构本版控制 4. 在哪里做数据库结构本版控制 ...

3233
来自专栏pangguoming

20个代码生成框架 (.NET JAVA)

1.1 CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:...

5636
来自专栏蓝天

自己动手提高ubuntu系统的性能(EXT3)

  在内核设置层面之上,还有很多个人用户配置的参数,ulimit命令就是bash下提供的,查看对指定应用的限制值的工具。你可以通过ulimit –a命令显示当前...

642
来自专栏.NET技术

基于winserver部署Apollo初次体验(附.net客户端demo)

配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一。试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,...

542
来自专栏coding...

Atom插件开发-使用自己的Chevereto图床API项目简介功能分析代码实现项目地址

最近一直在用 Atom 写写markdown,但无奈上传图片真实太麻烦了。找了好几个插件都是要用到 七牛 的账号,由于之前被七牛坑过一次,就没再想用他的打算了。...

642
来自专栏Android 开发者

Android P 安全性更新

Android P 引入了若干可提升应用和运行应用的设备安全性的功能。 本页面介绍对第三方应用开发者最重要的变化,需要他们牢记在心。

982
来自专栏pangguoming

MySQL主从复制与主主复制

阅读目录 1、简介 2、环境说明 3、主从复制      3.1、MySQL      3.2、配置文件     3.3、开始构建主从复制       3.4、...

3095

扫描关注云+社区