Решение для управления версиями и развертывания базы данных?


В настоящее время я использую скрипт дампа и передаю базу данных в репозиторий git. --skip-extended-insert --skip-comments --skip-dump-date означает, что разница может дать мне четкое представление о том, что изменилось, но все это рухнет, если я попытаюсь слиться.

WP_SITEURL, WP_HOME и все другие места, где wordpress хранит полные URL-адреса, нуждаются в обновлении при импорте на другой хост (тестирование, постановка, производство)

Кто-нибудь использует лучший метод?

Основные вопросы:

  • Wordpress хранит полные URL-адреса вся база данных (непереносимая)
  • Изменяется множество других, не относящихся к делу записей
    • значения авто_инкремента (я просто удаляю их, но столкнулся с проблемами с идентификаторами)
    • временные метки (также могут быть удалены, потенциально)
    • временные * записи... понятия не имею, что с ними делать

Процесс, который создавал миграции с отметками времени, с добавлением или удалением только того, что было добавлено или удалено, был бы идеальным... но я не уверен, что это даже возможно?

Author: Jacob Dorman, 2014-02-14

2 answers

Вот два возможных решения, оба из которых на самом деле являются универсальными инструментами управления версиями MySQL, но могут быть адаптированы к вашему рабочему процессу:

Dbv.php

Этот инструмент создает "миграции", которые в основном являются сценариями SQL, на основе изменений, обнаруженных в базе данных. Эти сценарии хранятся в локальном каталоге и, следовательно, могут быть переданы в ваш текущий VCS (git, например).

Он используется через веб-интерфейс PHP.

ДБВХ

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

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

Плагины Wordpress

Некоторые плагины, которые могли бы помочь в создании повторяющегося рабочего процесса:

 5
Author: Víctor López García, 2014-09-10 20:22:27

Я делаю это в MYSQL.

Он помещает все схемы таблиц и данные в их собственный файл, чтобы я мог легко увидеть, что изменилось.

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

Это решение не использует никаких инструментов, только скрипт командной строки.

Редактировать: Я обнаружил, что в моем старом коде была ошибка, из-за которой порядок импорта был важен. снятие флага --compact исправляет жук.

for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do
     echo exporting $x
     mysqldump -u root -ppassword --skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset --extended-insert=FALSE --replace --skip-dump-date dbname $x > "./db/$x.sql"
done

Более старый код

for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do
     mysqldump -u root -ppassword --compact --extended-insert=FALSE --replace dbname $x > "./db/$x.sql"
done

И вот как импортировать

for x in `ls ./db/*.sql`; do
     echo importing $x
     mysql -pdbpassword dbname --force < $x
done
 3
Author: David Silva Smith, 2016-08-20 00:59:42