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

Автоматическая синхронизация структуры БД MySQL ?

У меня на локалхосте есть две БД. Одна для сайта, другая для тестового окружения этого сайта.

Есть ли какой-нибудь способ, тулза для автоматической синхронизации структуры БД?

Знаю о фиче «Structure Synchronization» Navicat, но там не устраивает, что при каждом изменении БД синхронизацию нужно делать вручную.


Не найдя должного инструмента, решил накатывать миграции на две БД сразу.
  • Вопрос задан
  • 4610 просмотров
Подписаться 8 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Wott
@Wott
Дурацкая мысль — настроить репликацию и включать лог вручную только для DDL команд SET SQL_LOG_BIN=1

Но вообще имхо как-то неправильно. Я делаю так что тестовое окружение восстанавливаемо, то есть есть где-то заливка базы, которую использую для инициализации перед прогоном тестов. Соответственно ее можно разделить на схему и данные и схему брать из продакшена экспортом. Либо схема лежит в VCS целиком для данного билда или в виде патчей.
Ответ написан
Комментировать
EugeneOZ
@EugeneOZ
Можно делать с помощью Export -> ALTER в MySQL Workbench. Не автоматически, конечно, но вручную код не писать, уже плюс.
В DbSchema все изменения, которые вносятся в схему, сразу же вносятся и в БД (но можно и в offline работать). Там же есть кнопка синхронизации — сравнивает обе базы, показывает разницы и можно выбрать, где обновить. Тоже код не писать.
Ответ написан
Комментировать
AntonioK
@AntonioK
Менять структуру БД только через накатывание файлов-патчей с альтерами. Файлы синхронизировать любой VCS. Накатывать их вручную по мере необходимости или автоматически деплой-скриптом.
Ответ написан
@Jo_mikoliev
Я думаю, что есть несколько инструментов, которые делают это, но не автоматически (я не думаю, что это хорошая идея делать это автоматически). Например, с помощью ERBuilder после нескольких модификаций в моей 2-й базе данных я запускаю синхронизацию, она сравнивает две схемы и он генерирует мне SQL-скрипт, который я запускаю в своей первой базе данных.
6229e5fb87ee8809995174.png
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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