Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan Git untuk melacak skema mysql - beberapa pertanyaan

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sintaks MySQL dalam membuat Kunci Asing

  2. Cara menggunakan koneksi persisten mysqli di halaman yang berbeda

  3. Pemicu MySQL dan SUM()

  4. MYSQL mendapatkan semua hasil tetapi pertama

  5. Pilih semua tempat [huruf pertama dimulai dengan B]