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

Главные вкладки

Аватар пользователя digital_sword digital_sword 6 февраля 2020 в 10:03

Есть сайт на drupal, который разрабатывает программист, локально. Затем файлы переносит через гит, базу выгружает.

А если на сайте постоянно что-то добавляется модераторами? Он залил себе, что-то сделал, выгрузил - что за это время делалось модераторами потерялось.

Как правильно организовывать работу в таком случае? Подойдут конкретные облачные сервисы (а какие?) или что?

Лучший ответ

Аватар пользователя ivnish ivnish 6 февраля 2020 в 10:19

На данный момент мы в командной работе используем следующие инструменты:

1) Конфиги друпала для деплоя настроек
2) default_content_deploy для деплоя контента. Можно создать на локалке кастомный блок, ноду, термин таксономии, выгрузить это в JSON, а потом импортировать на прод
3) Можно еще hook_update юзать, если первые два способа вдруг не могут помочь (какая-нибудь очень специфичная задача)

В любом случае база должна двигаться prod -> stage -> dev -> local, но никак не в обратную сторону

Всё это если у вас Drupal 8. Если у вас Drupal 7, то там нет нормальных инструментов для командной разработки. Переходите на Drupal 8 Smile

Как правильно организовывать работу в таком случае?

Запретить разработчику перезаписывать БД на проде. Использовать воркфлоу описанный выше

Подойдут конкретные облачные сервисы (а какие?) или что?

Не думаю

Комментарии

Аватар пользователя ivnish ivnish 6 февраля 2020 в 10:19

На данный момент мы в командной работе используем следующие инструменты:

1) Конфиги друпала для деплоя настроек
2) default_content_deploy для деплоя контента. Можно создать на локалке кастомный блок, ноду, термин таксономии, выгрузить это в JSON, а потом импортировать на прод
3) Можно еще hook_update юзать, если первые два способа вдруг не могут помочь (какая-нибудь очень специфичная задача)

В любом случае база должна двигаться prod -> stage -> dev -> local, но никак не в обратную сторону

Всё это если у вас Drupal 8. Если у вас Drupal 7, то там нет нормальных инструментов для командной разработки. Переходите на Drupal 8 Smile

Как правильно организовывать работу в таком случае?

Запретить разработчику перезаписывать БД на проде. Использовать воркфлоу описанный выше

Подойдут конкретные облачные сервисы (а какие?) или что?

Не думаю

Аватар пользователя Blinks44 Blinks44 6 февраля 2020 в 10:53

А можете поподробнее объяснить (если не трудно), как можно автоматизировать синхронизацию БД MySQL.
Например клиент поменял много разной информации на сайте, после этого попросил создать новые страницы и новые уникальные блоки на них с различной версткой.
Как правильно импортировать себе все что сейчас сделано на продакшене, создать через админку новые страницы, новые кастомные блоки с версткой, обновить меню и тд все протестить на локалке и залить обратно на продакшн?
И например за эти несколько дней, пока вносились правки на локалке, клиент не сказав ничего поменял еще контент. Как не задеть то что уже сделано?

Аватар пользователя ivnish ivnish 6 февраля 2020 в 10:57

1. Выгрузить базу с прода на локалку (это приходится делать, если клиент сам и часто вносит на сайте изменения). Если создание нового контента не зависит от уже имеющегося на сайте контента, то можно свежую базу и не выгружать.
2. Сделать работу на локалке
3. Выгрузить настройки в виде конфигов, а созданный на локалке контент в виде json
4. Импортировать на прод.

Аватар пользователя Punk_UnDeaD Punk_UnDeaD 7 февраля 2020 в 0:07

выход - не создавать контент локально и двигать базу только с прода на дев
а с дева на прод двигать только конфиги

Аватар пользователя sas@drupal.org sas@drupal.org 7 февраля 2020 в 8:43

- Для 7 использую разделение настроек конфигурации и данных пользователя. Базу с локали не заливаю, если надо что-то деплоить в базу то делаю это через .install _update или features
- Для 8 настройки льются через config