Это процесс, который я использую для управления версиями баз данных MySQL в Subversion.
Настройка SVN
В SVN создайте папку Databases
с подпапкой для каждой базы данных, которую вы хотите добавить в SVN.
Добавление таблицы db_version в базы данных
Нам потребуется добавить таблицу в каждую базу данных, чтобы мы знали, с какой версией базы данных мы работаем в настоящее время. Эта таблица также будет служить журналом для отслеживания изменений схемы, внесенных в базу данных.
create table db_version (
`id` int auto_increment,
`majorReleaseNumber` int,
`minorReleaseNumber` int,
`pointReleaseNumber` int,
`scriptName` varchar(50),
`dateApplied` datetime,
PRIMARY KEY(`id`)
);
majorReleaseNumber - Основные выпуски представляют собой значительные изменения в базе данных.
minorReleaseNumber - Незначительные выпуски - это усовершенствования базы данных, для которых не требуется основной выпуск.
pointReleaseNumber - Точечный выпуск обычно представляет собой простое исправление ошибки.
scriptName - Имя сценария sql, который внес изменения в схему.
dateApplied - Когда скрипт был запущен в этой базе данных.
Создание базовых сценариев
Я использовал mysqldump для генерации скрипта создания для существующих баз данных. Обязательно включите опцию --no-data. SVN используется для отслеживания сценариев, которые вносят изменения в схему базы данных, и не предназначен для использования в качестве инструмента резервного копирования для данных конкретного экземпляра приложения.
$ mysqldump -h localhost -u root -p db_1 --no-data > db_1.1.0.0.sql
Имя сценария sql должно содержать имя базы данных и версию базы данных, к которой применяется сценарий.
db_1.1.0.0.sql
В конце сценария обязательно добавьте оператор вставки для таблицы db_version.
Изменение схемы базы данных
Если в базу данных внесены значительные, второстепенные или промежуточные изменения, сценарий изменений следует протестировать, а затем загрузить в папку базы данных в SVN. Рекомендуется сделать резервную копию базы данных перед применением сценария изменения. В конце сценария изменения должен быть оператор вставки для таблицы db_version.