Решение для управления версиями и развертывания базы данных?
В настоящее время я использую скрипт дампа и передаю базу данных в репозиторий git.
--skip-extended-insert --skip-comments --skip-dump-date
означает, что разница может дать мне четкое представление о том, что изменилось, но все это рухнет, если я попытаюсь слиться.
WP_SITEURL, WP_HOME и все другие места, где wordpress хранит полные URL-адреса, нуждаются в обновлении при импорте на другой хост (тестирование, постановка, производство)
Кто-нибудь использует лучший метод?
Основные вопросы:
- Wordpress хранит полные URL-адреса вся база данных (непереносимая)
- Изменяется множество других, не относящихся к делу записей
- значения авто_инкремента (я просто удаляю их, но столкнулся с проблемами с идентификаторами)
- временные метки (также могут быть удалены, потенциально)
- временные * записи... понятия не имею, что с ними делать
Процесс, который создавал миграции с отметками времени, с добавлением или удалением только того, что было добавлено или удалено, был бы идеальным... но я не уверен, что это даже возможно?
2 answers
Вот два возможных решения, оба из которых на самом деле являются универсальными инструментами управления версиями MySQL, но могут быть адаптированы к вашему рабочему процессу:
Этот инструмент создает "миграции", которые в основном являются сценариями SQL, на основе изменений, обнаруженных в базе данных. Эти сценарии хранятся в локальном каталоге и, следовательно, могут быть переданы в ваш текущий VCS (git, например).
Он используется через веб-интерфейс PHP.
Принципиально похожий на предыдущий инструмент, он основан на интерфейсе командной строки. Он настраивается с помощью файла json. Основное отличие заключается в том, что он не создает файлы миграции автоматически.
Существует нерешенная проблема, связанная с интеграцией этого с предыдущим аналогичным, так что это то, что нужно искать.
Плагины Wordpress
Некоторые плагины, которые могли бы помочь в создании повторяющегося рабочего процесса:
- VersionPress (на данный момент все еще находится на ранней стадии разработки)
- WP Перенести базу данных (есть pro версия)
- WP Synch DB (ответвление предыдущего проекта с включенными некоторыми функциями pro)
Я делаю это в 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