Сборка базы данных liquibase с нуля

Когда я запускаю обновление liquibase с нуля, это занимает некоторое время, так как процесс запускает каждый журнал изменений один за другим. Иногда изменения в моей собственной базе данных расходятся настолько, что проще всего восстановить базу данных, если я, например, хочу начать заново.

Перестройка была бы самой быстрой, если бы я делал это из дампа mysql результата liquibase в определенный момент в журналах изменений, и я ранее игнорировал журналы изменений. Поэтому я удалил бы все в мастере журнала изменений, кроме моего журнала изменений дампа основной сборки, который был бы всей базой данных, и я держу фактические журналы изменений по причинам контроля версий.

Есть ли правильный / предопределенный / безопасный способ сделать это из жидкой основы?

1 ответ

Решение

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

Часто самый простой подход - это не полностью перезапустить файл изменений, а вместо этого внести в него изменения. В DDL базы данных обычно бывают быстрыми, особенно в пустой базе данных, и часто то, что делает чистое восстановление базы данных, - это небольшая часть наборов изменений. Переопределение индексов часто является большой частью проблемы, но могут быть и другие вещи. Посмотрите, какие наборы изменений занимают время в журнале, и, возможно, вы сможете найти такие, которые взаимно отменяют друг друга или теперь не нужны, но все же занимают большую часть времени.

Если вам лучше всего начать с нуля, процесс в основном такой же, как и использование Liquibase в существующем проекте. См. Документацию по адресу http://www.liquibase.org/documentation/existing_project.html для идей по вариантам с этим.

С mysql одна опция может использовать mysqldump и затем иметь один набор изменений, используя <execute> вызвать команду восстановления оболочки mysql.

Что касается ваших существующих строк базы данных exchangechange, Liquibase использует путь как часть идентификатора changeSet, поэтому, если ваш новый файл changelog имеет другое имя или путь, Liquibase уже увидит changeSets как новый. Кроме того, вы можете начать новый файл изменений с <changeSet> это делает delete from databasechangelog

Другие вопросы по тегам