数据库结构版本控制

Help

./backup.mysql.struct.sh
Usage: ./backup.mysql.struct.sh {init|start|stop|status|restart}

Create backup user for your database.

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

Database connect infomation

BACKUP_HOST="localhost"
BACKUP_USER="netkiller"
BACKUP_PASS="chen"
BACKUP_DBNAME="test aabbcc"
BACKUP_DIR=~/backup

Initialize the working directory

$ ./backup.mysql.struct.sh init
Initialized empty Git repository in /home/neo/backup/.git/

Start

$ ./backup.mysql.struct.sh start

Stop

$ ./backup.mysql.struct.sh stop

Status

$ ./backup.mysql.struct.sh status
19837 pts/0    S      0:00 /bin/bash ./backup.mysql.struct.sh start

Diff

$ cd ~/backup
$ git diff HEAD^ test.sql
diff --git a/localhost/test.sql b/localhost/test.sql
index a749b5a..402d6d1 100644
--- a/localhost/test.sql
+++ b/localhost/test.sql
@@ -53,6 +53,7 @@ DROP TABLE IF EXISTS `test`;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `test` (
   `id` int(11) DEFAULT NULL,
+  `key` char(50) DEFAULT NULL,
   `val` char(10) DEFAULT NULL
 ) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1;
 /*!40101 SET character_set_client = @saved_cs_client */;
#!/bin/bash
###################################
# $Id$
# Author: [email protected]
# Home: http://netkiller.github.com
###################################
# SELECT `user`, `host`, `password` FROM `mysql`.`user`;
# 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
####################################
NAME=backup.mysql.struct
BASEDIR=‘/www‘
PROG=$BASEDIR/bin/$(basename $0)
LOGFILE=/var/tmp/$NAME.log
PIDFILE=/var/tmp/$NAME.pid
MYSQLDUMP="/usr/bin/mysqldump"
MYSQLDUMP_OPTS="-h $BACKUP_HOST -u$BACKUP_USER -p$BACKUP_PASS --skip-comments -d"
####################################
umask 0077
##############################################
#rotate=60
LOOP=30
##############################################
function backup(){
test ! -d "$BACKUP_DIR" && echo "Error: $BACKUP_DIR isn‘t a directory." && exit 0
cd $BACKUP_DIR
for dbname in $BACKUP_DBNAME
do
test ! -d "$BACKUP_DIR/$BACKUP_HOST" && mkdir -p "$BACKUP_DIR/$BACKUP_HOST"
$MYSQLDUMP $MYSQLDUMP_OPTS $dbname > $BACKUP_DIR/$BACKUP_HOST/$dbname.sql
done
TIMEPOINT=$(date -u +%Y-%m-%d.%H:%M:%S)
git add .
git commit --quiet -m "$TIMEPOINT" > /dev/null
}
function start(){
if [ -f "$PIDFILE" ]; then
echo $PIDFILE
exit 2
fi
test ! -w $BACKUP_DIR && echo "Error: $BACKUP_DIR is un-writeable." && exit 0
 
for (( ; ; ))
do
backup
sleep $LOOP
done &
echo $! > $PIDFILE
}
function stop(){
   [ -f $PIDFILE ] && kill `cat $PIDFILE` && rm -rf $PIDFILE
}
function init(){
 
if [ ! -d $BACKUP_DIR ]; then
mkdir -p "$BACKUP_DIR"
cd $BACKUP_DIR
git init
    fi
backup
}
case "$1" in
  start)
   start
;;
  stop)
   stop
;;
  status)
   ps ax | grep $(basename $0) | grep -v grep | grep -v status
;;
  restart)
   stop
start
;;
init)
init
;;
*)
echo $"Usage: $0 {init|start|stop|status|restart}"
exit 127
esac
 
exit $?
时间: 2024-11-04 08:30:41

数据库结构版本控制的相关文章

数据库结构查询

--1:获取当前数据库中的所有用户表 select Name from sysobjects where xtype='u' and status>=0 --2:获取某一个表的所有字段 select name from syscolumns where id=object_id(N'表名') --3:查看与某一个表相关的视图.存储过程.函数 select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like

用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级

目录 目录 前文列表 扩展阅读 Alembic 查看指令 manager db 的可用选项 初始化 DB Migrate 开始第一次跟踪 将记录文件应用到数据库中实时升级数据库结构 回滚到某一个记录环境中 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型

PDM导出数据库结构时报错Generation aborted due to errors detected during the verification of the mode

转载:http://hi.baidu.com/clqaitxp/item/8aa7af12ff8883faddeeca10 做数据库结构导出时,发现有报错信息,之前还是好的,只是上午调整了一张表.下面看具体现象: 在导出的结果列表中可以发现有一个对象被打X了, 双击这个错误,可以看到是哪个表引起的错误,再来看看这个表的表结构是否有异常,结果发现这个表上建序列的时候没有勾上主键. 更改下这个表的属性,,对serial列选上P(primary key). 再执行一次导出,OK. 当然,你不做数据库表

php获取数据库结构

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Code First 更新数据库结构

参考:http://blog.csdn.net/sxycxwb/article/details/12186159 0.删除之前的数据库 1.Run the Enable-Migrations command in Package Manager Console 进入(PM)软件包管理控制台 (视图——>其他窗口——>程序包管理控制台)输入以下指令:Enable-Migrations 会提示:"No context type was found in the assembly"

Navicat生成数据库结构同步SQL

作为一个苦逼的技术男,在做开发的时候经常会遇见程序版本升级,数据库结构变化.我们需要一个快捷的方式让客户尽快从旧版本数据库结构更新至新版本数据库结构.如果每做一次改动我们就记录一下当然是好事,但是万一疏忽遗漏,后果不堪设想..寻觅好久 ,网上也有很大数据库对比软件,大部分都是老外写的,还的花美刀.无意间发现Navicat for MySQL就有此功能,不是骑驴找驴么?直接上图. 方法/步骤 1.打开Navicat for MySQL ,找到工具,结构同步   2.选择目标数据库和源数据库,此时下

oracle学习入门系列之五 内存结构、数据库结构、进程

oracle学习入门系列之五 内存结构.数据库结构.进程 上篇蛤蟆简单描述了oracle公司的数据库产品.其他产品及oracle软件的一些特点.干货虽有但是真心是比较少的,这篇开始就是以干货为主,其中夹杂一些扯淡的事情了.蛤蟆一直也在想如何能生动的通过这干巴巴的文字来描述着世界级的软件,太理论大家都看不下去,太实践又缺乏深度.想想自己上大学那会,老师的讲课,无不枯燥乏味啊,满满的兴趣尽是消耗殆尽.所以不能仿效之,我们得走自己特色的路.以最易懂的形式.比喻等手段描述深奥的计算机知识.走起~ 开篇问

[转]oracle学习入门系列之五内存结构、数据库结构、进程

原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大师们的讲稿.但是我们不去管那些,按照我们自己节奏记出特性.记出精彩来. 首先插入本系列第一张图片,图一(绝对来自官网),看蛤蟆对于图片使用是多么小心的,如果大伙对这个图已有自己独到的理解,那么可直接跳过本篇笔记吧,当然温故而知新也未尝不可,知耻而后勇….额,而来知耻? 1.1 总体结构 这个图1从总

数据库结构整理总结

近期在做一个ERP数据库结构的梳理.该ERP系统系统有十多个子系统.本次借用powerdesigner工具进行梳理. 梳理过程: 将整体系统按照子系统和组件进行切割.当然也顺便出个组件图. 构建表关系图. 为表名和字段增加中文说明. 目标:为表字段的comment增加说明.方法:使用原有的字典表作为源,运行附件中的UpdateDescr_TableName.sql 和 UpdateDescr_ColumnName.sql.为方便各子系统分别梳理,需要调整取表的部分. 将需要的表导入powerde