Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden von Git zum Verfolgen von MySQL-Schemas - einige Fragen

Angenommen, Sie haben bereits ein Git-Repo, tun Sie Folgendes in einem Shell-Skript oder was auch immer:

#!/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

Starten Sie dann dieses Skript täglich von einem Cron-Job oder was auch immer.

BEARBEITEN:Durch Platzieren eines Skripts in $gitdir/hooks/pre -commit (der Name ist wichtig), das Skript wird vor jedem Commit ausgeführt. Auf diese Weise wird der Zustand des DB-Schemas für jeden Commit erfasst, was sinnvoll ist. Wenn Sie dieses SQL-Skript jedes Mal automatisch ausführen, wenn Sie einen Commit ausführen, werden Sie Ihre Datenbank wegblasen, was keinen Sinn ergibt.

#!/bin/sh

Diese Zeile gibt an, dass es sich um ein Shell-Skript handelt.

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

Dies ist dasselbe wie in meiner obigen Antwort; nur die DDL aus der Datenbank nehmen und in einer Datei speichern.

git add SQLVersionControl/vc.sql

Dies fügt die SQL-Datei zu jedem Commit hinzu, das zu Ihrem Repository gemacht wird.

exit 0

Dadurch wird das Skript erfolgreich beendet. Dies ist möglicherweise gefährlich. Wenn mysqldump oder git add fehlschlägt, können Sie etwas wegblasen, das Sie behalten wollten.