Как синхронизовать базу данных версии разработки и продакшена?

Всем привет. Проблема такая. К примеру разрабатывается приложение в гите, для бд используются миграции. Всё, проект закончен, запускается сайт, проходит время и бд на продакшене меняется. Точнее содержимое некоторых таблиц, которые отвечают за настройки, пользователей, да чего угодно, что взаимодействует с бд и тут мы решаем добавить фичи, работаем, добавляем, что-то изменяем и даже если мы ничего не добавляли и не удаляли в бд, то они уже разные. У нас может быть таблица с пользователями, в нашей версии пользователь будет 1, а на живом сайте 10 и как это всё не перетереть, что нужно делать. Как построить процесс?
  • Вопрос задан
  • 384 просмотра
Пригласить эксперта
Ответы на вопрос 3
@vlarkanov
Настойте репликацию master(продакшн) -> слейв(разработка) - всегда будут свежие данные.
Ответ написан
Комментировать
@kn0ckn0ck
Продюсер
База данных состоит их схемы и данных. Данные могут быть разные: управляющие, пользовательские и т.п. За схему и управляющие данные (справочники, например) отвечает миграция. С этим как я понял у вас Ok.

Зависимость кода от данных - это очевидный антипаттерн дизайна, который необходимо устранить. Тем более, если код зависит от пользовательских данных, типа ID пользователя.

С другой стороны, разработчики предпочитают работать с данными, приближенными к боевым. Однако, здесь могут быть риски, например, отправка тестового письма реальному пользователю. Процесс выглядит обычно так:

1. сливаем дамп с боевой базы данных;
2. загружаем его на тестовый сервер;
3. запускаем процедуру обфускации (удаления чувствительных пользовательских данных);
4. загружаем управляющие данные, соответствующие тестовому окружению (если это нужно).
Ответ написан
Комментировать
@BorisKorobkov Куратор тега PHP
Web developer
Разрабатывать приложение надо так, чтобы оно работало на любых данных: хоть 1 пользователь, хоть 10. Не забудьте про тесты.

Миграции обычно меняют только структуру таблиц, а не сами данные.

Если же надо исправить баг, который не воспроизводится на тестовых данных, то вручную сделать дамп с боевого сайта, затереть персональные данные и развернуть локально.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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