Задать вопрос

Как организовать хранение БД кучи проектов?

Добрый день. Недавно столкнулся с проблемой - восстановить проект 5летней давности. Исходники удалось найти в git-е. А вот актуальной версии базы не нашлось.

В связи с этим возникла задача хранить актуальные копии баз данных всех проектов. Интересуют только структуры, об актуальности данных речь не идет.

Идея пока только одна, после каждого изменения в бд делать экспорт структуры и хранить в гите вместе с исходниками.

Возможно есть какие-то более элегантные решения?
  • Вопрос задан
  • 586 просмотров
Подписаться 3 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 5
Melkij
@Melkij
PostgreSQL DBA
Если проект не наколеночная поделка одного человека за пару вечеров - то структура БД живёт непосредственно рядом с проектом и накатывается через миграции. Ну, например, описание у Yii2: www.yiiframework.com/doc-2.0/guide-db-migrations.html
Ответ написан
@D3lphi
Возможно есть какие-то более элегантные решения?

- Есть, называется "миграция базы данных". Во многих современных фреймворках этот способ реализован. Суть в том, что вы храните php файл (хотя, формат данных может быть любой), в котором содержится описание таблиц, их структур. Для их развертывания в Laravel, например, достаточно прописать одну консольную команду и всё готово!

Я та понимаю, этот способ вам не подходит, поэтому, остается только "физическое" хранение структуры базы данных либо на диске (в облаке и тд), либо, в системе контроля версий.
Ответ написан
Комментировать
anton_lazarev
@anton_lazarev
Миграции, например https://phinx.org/
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Наиболее красивое решение - делать скрипты создания и стартового наполнения базы.

Как образчик - скрипты в "инсталляторах" большинства готовых движков форумов, cms и т.п.

Большую часть можно выкусить из того же mysqldump

В итоге будет нечто типа
create table
...
create table
insert into
...
insert into
Ответ написан
Rastishka
@Rastishka
Я делаю изначальный экспорт структуры таблиц в файл (тупо экспорт в Adminer/PMA).
По мере изменения структуры или справочных данных дописываю в этот же файл в конец запросы на изменение структуры, типа 'ALTER TABLE bla_bla_bla'.

Когда изменений становится некомфортно много или сплошные ALTER одних и тех же полей, опять делаю полный экспорт структуры и перезаписываю файл.

Плюсы:
файл легко хранится в git и видны diff
можно развернуть БД с нуля просто запустив все запросы из файла
можно на боевом при деплое выполнять те же запросы на модификацию БД
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы