Назад | Перейти на главную страницу

Должен ли сценарий после установки пакета запускать миграцию базы данных?

Итак, у меня есть этот пакет debian, который устанавливает некоторое веб-приложение приложения nodejs, которое использует базу данных mysql. В пакете есть сценарий postinst, который запускает команду db migrate в комплекте с пакетом.

Теперь я хочу разделить приложение на несколько серверов (2 интерфейса и 1 серверная часть базы данных). Проблема, с которой я столкнулся, заключается в том, что оба интерфейсных сервера будут пытаться одновременно обновить схему при развертывании новых пакетов. Мне это не кажется правильным.

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

Каковы хорошие способы достижения автоматического обновления схемы базы данных, когда это требуется для нового пакета?

Либо пакет должен автоматически обновлять схему БД, либо он должен содержать инструкции о том, как сделать это вручную, и четко указывать, что это обязательный шаг.

Если используется способ автоматического обновления, он должен проверить, была ли уже обновлена ​​схема; и если предполагается, что он будет установлен на нескольких серверах, совместно использующих одну БД, он также должен использовать какую-либо форму блокировки или явно сказать вам: «Пожалуйста, не обновляйте этот пакет на всех серверах одновременно».

TL; DR: похоже, ваш пакет страдает от ленивого программирования и / или ленивой документации.