Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на Git за проследяване на mysql схема - някои въпроси

Ако приемем, че вече имате git repo, направете следното в shell скрипт или каквото и да било:

#!/bin/bash -e
# -e means exit if any command fails
DBHOST=dbhost.yourdomain.com
DBUSER=dbuser
DBPASS=dbpass # do this in a more secure fashion
DBNAME=dbname
GITREPO=/path/to/git/repo
cd $GITREPO
mysqldump -h $DBHOST -u $DBUSER -p$DBPASS -d $DBNAME > $GITREPO/schema.sql # the -d flag means "no data"
git add schema.sql
git commit -m "$DBNAME schema version $(`date`)"
git push # assuming you have a remote to push to

След това стартирайте този скрипт всеки ден от cron работа или каквото имате.

РЕДАКТИРАНЕ:Като поставите скрипт в $gitdir/hooks/pre -commit (името е важно), скриптът ще се изпълнява преди всеки комит. По този начин състоянието на DB схемата се улавя за всеки комит, което има смисъл. Ако стартирате автоматично този sql скрипт всеки път, когато извършвате ангажимент, ще издухате вашата база данни, което няма смисъл.

#!/bin/sh

Този ред указва, че това е шел скрипт.

mysqldump -u DBUSER -pDBPASSWORD  DATABASE --no-data=true> SQLVersionControl/vc.sql

Това е същото като в моя отговор по-горе; вземане на DDL само от базата данни и съхраняването му във файл.

git add SQLVersionControl/vc.sql

Това добавя SQL файла към всеки комит, направен във вашето хранилище.

exit 0

Това излиза от скрипта успешно. Това вероятно е опасно. Ако mysqldump или git add се провали, може да издухате нещо, което сте искали да запазите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL избира вчерашната дата

  2. Алтернатива за ограничение на MySQL CHECK

  3. Как да извлека микросекунди или милисекунди от текущото време на MySQL?

  4. MySQL - Кой хеш алго трябва да използвам за това?

  5. Конвертирайте MySQL в SQlite