Dengan asumsi Anda sudah memiliki git repo, lakukan hal berikut dalam skrip Shell atau apa pun:
#!/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
Kemudian mulai skrip ini setiap hari dari tugas cron atau apa pun yang Anda miliki.
EDIT:Dengan menempatkan skrip di $gitdir/hooks/pre -commit (nama penting), skrip akan dieksekusi sebelum setiap komit. Dengan cara ini status skema DB ditangkap untuk setiap komit, yang masuk akal. Jika Anda secara otomatis menjalankan skrip sql ini setiap kali Anda melakukan, Anda akan menghancurkan database Anda, yang tidak masuk akal.
#!/bin/sh
Baris ini menentukan bahwa itu adalah skrip shell.
mysqldump -u DBUSER -pDBPASSWORD DATABASE --no-data=true> SQLVersionControl/vc.sql
Ini sama dengan jawaban saya di atas; mengambil DDL hanya dari database dan menyimpannya dalam file.
git add SQLVersionControl/vc.sql
Ini menambahkan file SQL ke setiap komit yang dibuat ke repositori Anda.
exit 0
Ini keluar dari skrip dengan sukses. Ini mungkin berbahaya. Jika mysqldump
atau git add
gagal, Anda dapat menerbangkan sesuatu yang ingin Anda pertahankan.