假设您已经有一个git repo,请在shell脚本中执行以下操作或执行以下操作:
#!/bin/bash -e# -e means exit if any command failsDBHOST=dbhost.yourdomain.comDBUSER=dbuserDBPASS=dbpass # do this in a more secure fashionDBNAME=dbnameGITREPO=/path/to/git/repocd $GITREPOmysqldump -h $DBHOST -u $DBUSER -p$DBPASS -d $DBNAME > $GITREPO/schema.sql # the -d flag means "no data"git add schema.sqlgit commit -m "$DBNAME schema version $(`date`)"git push # assuming you have a remote to push to
然后每天从cron作业或您拥有的内容中启动此脚本。
编辑:通过将脚本放入$ gitdir / hooks / pre- commit
(名称很重要)中,该脚本将在每次提交之前执行。这样,每次提交都可以捕获数据库模式的状态,这很有意义。如果您每次提交时都自动运行此sql脚本,则将删除数据库,这没有任何意义。
#!/bin/sh
此行指定它是一个shell脚本。
mysqldump -u DBUSER -pDBPASSWORD DATAbase --no-data=true> SQLVersionControl/vc.sql
这与我上面的答案相同;仅从数据库中获取DDL并将其存储在文件中。
git add SQLVersionControl/vc.sql
这会将SQL文件添加到对存储库的每次提交中。
exit 0
这将成功退出脚本。这可能很危险。如果
mysqldump或
git add失败,您可能会吹走想要保留的东西。



