mysqldump - git hook - что это позволяет? - PullRequest
1 голос
/ 02 апреля 2011

С помощью пользователя mkb я построил этот хук предварительной фиксации:

#!/bin/bash -e

DBHOST=dbhost.yourdomain.com
DBUSER=dbuser
DBPASS=dbpass 
DBNAME=dbname

mysqldump -h $DBHOST -u $DBUSER -p $DBPASS -d $DBNAME > sql-version-control/schema.sql 
# the -h means host.
# the -u means user. 
# the -p means pass.
# the -d means database name (same as "no data").
git add sql-version-control/schema.sql

Насколько я понимаю:

mysqldump -h $DBHOST -u $DBUSER -p $DBPASS -d $DBNAME > sql-version-control/schema.sql

Перейду к моей общей папке (ИЛИлокальный), и будет ли делать там резервную копию обычной схемы?

Однако очень часто мы меняем схему локально, а затем нам необходимо применить эти изменения на удаленном сервере.

Могу ли я в любом случае пойти по этому пути?Или есть лучший способ сделать намеченное?

Заранее спасибо

1 Ответ

0 голосов
/ 22 июня 2015

Используйте это как ловушку перед фиксацией для автоматического резервного копирования вашей БД в Git при доставке нового набора изменений: https://gist.github.com/wilcollins/dfa33ef20caf6dab5826

Поскольку изменения схемы БД обычно связаны с изменениями репо для поддержки изменений БДэта система синхронизирует удаленную и локальную среду столько, сколько необходимо.

#!/bin/bash -e
# -e means exit if any command fails
DBHOST=address.to.your.server
DBUSER=username
DBPASS=password # do this in a more secure fashion
DBNAME=DBNAME
GITREPO=/where/is/your/repo
DUMP=$GITREPO/where/you/store/dumps
NEW=$DUMP/schema.sql
OLD=$NEW.old

DIR=$(pwd)
cd $GITREPO

mv $NEW $OLD

mysqldump -h $DBHOST -u $DBUSER -p$DBPASS $DBNAME --skip-dump-date --single-transaction > $NEW

# NOTE : the new schema.sql file & location need to be added to your GIT repo & ignore .old

if cmp -s $OLD $NEW; then
    echo Same
else
    echo Differ
    git commit $NEW -m "$DBNAME DB update"
    echo "schema+data committed"

    git push # assuming you have a remote to push to
    echo "schema+data pushed"
fi
cd $DIR

, тогда вы можете импортировать новую schema.sql при извлечении изменений репо

...