sql >> Base de Datos >  >> RDS >> Mysql

Uso de Git para rastrear el esquema mysql:algunas preguntas

Suponiendo que ya tiene un repositorio git, haga lo siguiente en un script de shell o lo que sea:

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

Luego inicie este script diariamente desde un trabajo cron o lo que sea.

EDITAR:colocando un script en $gitdir/hooks/pre -commit (el nombre es importante), el script se ejecutará antes de cada confirmación. De esta forma, el estado del esquema de base de datos se captura para cada confirmación, lo que tiene sentido. Si ejecuta automáticamente este script sql cada vez que se compromete, destruirá su base de datos, lo cual no tiene sentido.

#!/bin/sh

Esta línea especifica que es un script de shell.

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

Esto es lo mismo que en mi respuesta anterior; tomando el DDL solo de la base de datos y almacenándolo en un archivo.

git add SQLVersionControl/vc.sql

Esto agrega el archivo SQL a cada confirmación realizada en su repositorio.

exit 0

Esto sale del script con éxito. Esto es posiblemente peligroso. Si mysqldump o git add falla, es posible que destruyas algo que querías conservar.