Мои два цента: я не думаю, что это хорошая идея. GIT делает что-то вроде «хранения снимков набора файлов в разные моменты времени», так что вы можете идеально использовать GIT для чего-то подобного, но это не значит, что вы должны это делать . GIT предназначен для хранения исходного кода, поэтому вам будет не хватать большей части его функциональности, и вы будете торговать большой производительностью ради небольшого удобства.
Позвольте мне предположить, что основная причина, по которой вы думаете об этом, заключается в том, чтобы «держать копию данных и код в синхронизации», и это означает, что вы обеспокоены тем, что для версии 2.0 вашего кода требуется схема базы данных, отличная от версии 1.0 , Более простым решением было бы сохранить схему базы данных в виде набора сценариев SQL с CREATE
инструкциями вместе с исходным кодом в вашем хранилище Git. Затем частью вашей процедуры установки будет выполнение этих сценариев на ранее установленном сервере базы данных.
Фактическое содержимое этих CREATE
таблиц просто -d не имеет ничего общего с версией вашего исходного кода. Представьте, что вы устанавливаете программное обеспечение версии 1.0 на сервер A и сервер B, которые используются в разных компаниях разными группами. Через несколько недель содержимое таблиц будет сильно отличаться, даже если схемы в точности совпадают.
Поскольку вы хотите выполнить резервное копирование содержимого базы данных, я бы предложил вам использовать сценарий резервного копирования, который помечает резервный дамп текущей версией программного обеспечения, к которому относится этот дамп. Сценарий должен находиться в репозитории GIT (чтобы он имел доступ к строке версии исходного кода), но сами дампы не принадлежат системе управления версиями.
РЕДАКТИРОВАТЬ :
Прочитав оригинальный пост, мотивировавший вопрос , я нахожу это еще более сомнительной идеей. Ключевым моментом является то, что mysqldump
команда преобразует текущее состояние БД в серию операторов SQL INSERT
, и GIT может их преобразовать, чтобы получить только обновленные строки таблицы.
Эта mysqldump
часть является надежной, поскольку это один из методов резервного копирования, перечисленных в документации MySQL. В части GIT автор не замечает, что серверы баз данных ведут журнал транзакций для восстановления после сбоев, включая MySQL . Именно используя этот журнал , а не GIT, вы должны создавать инкрементные резервные копии для своей базы данных. Это, в первую очередь, имеет то преимущество, что вы можете вращать или сбрасывать журналы после восстановления, а не раздувать репозиторий GIT до бесконечности и далее ...