Moje dwa centy: nie sądzę, że to dobry pomysł. GIT robi coś podobnego „Zapisywanie migawek z zestawu plików w różnych punktach w czasie”, dzięki czemu można idealnie wykorzystać GIT na coś takiego, ale to nie znaczy, że powinniśmy . GIT został zaprojektowany do przechowywania kodu źródłowego, więc straciłbyś większość jego funkcjonalności, a ty handlowałbyś dużą wydajnością za odrobinę wygody.
Załóżmy, że głównym powodem, dla którego myślisz o tym, jest „zsynchronizowanie kopii danych i kodu”, a to oznacza, że martwisz się, że wersja 2.0 twojego kodu potrzebuje innego schematu bazy danych niż wersja 1.0 . Prostszym rozwiązaniem byłoby przechowywanie schematu bazy danych, jako zestawu skryptów SQL z CREATE
instrukcjami, wzdłuż kodu źródłowego w repozytorium Git. Następnie częścią procedury instalacji byłoby wykonanie tych skryptów na wcześniej zainstalowanym serwerze bazy danych.
Rzeczywista zawartość tych CREATE
tabel -d nie ma nic wspólnego z wersją kodu źródłowego. Wyobraź sobie, że instalujesz oprogramowanie w wersji 1.0 na serwerze A i serwerze B, które są używane w różnych firmach przez różne zespoły. Po kilku tygodniach zawartość tabel będzie zupełnie inna, mimo że schematy są dokładnie takie same.
Ponieważ chcesz wykonać kopię zapasową zawartości bazy danych, sugeruję, abyś użył skryptu kopii zapasowej, który otacza zrzut kopii bieżącą wersją oprogramowania, do którego zrzut należy. Skrypt powinien znajdować się w repozytorium GIT (aby miał dostęp do ciągu wersji kodu źródłowego), ale same zrzuty nie należą do systemu kontroli wersji.
EDYCJA :
Po przeczytaniu oryginalnego postu, który uzasadniał pytanie , uważam to za jeszcze bardziej wątpliwy pomysł. Kluczową kwestią jest to, że mysqldump
polecenie przekształca bieżący stan DB w szereg INSERT
instrukcji SQL , a GIT może je różnicować, aby uzyskać tylko zaktualizowane wiersze tabeli.
mysqldump
Część jest dobra, ponieważ jest to jedna z metod tworzenia kopii zapasowych wymienionych w dokumentacji MySQL. Część GIT polega na tym, że autor nie zauważa, że serwery bazy danych przechowują dziennik transakcji w celu odzyskiwania po awarii, w tym MySQL . To za pomocą tego dziennika , nie GIT, że należy tworzyć przyrostowe kopie zapasowe w bazie danych. Ma to przede wszystkim tę zaletę, że można obracać lub opróżniać dzienniki po odzyskaniu, zamiast nadmuchiwania repozytorium GIT w nieskończoność i poza nią ...