Развертка dev версии веб-приложения

Рейтинг: 0Ответов: 1Опубликовано: 19.09.2014

Здравствуйте.

Имеется некое веб-приложение php+mysql. Разработка ведется в git. Нужно сделать следующее.

Нужно реализовать две версии приложения. Production и dev. С файловой частью проблем нет. Достаточно вести две ветки в git: master - выкладывается на production, ветку dev на dev версию (можно по хукам, можно по крону, либо вручную... не суть). Но вот с базой есть проблема.

Требования такие:

  1. Базы должны быть разными (то есть dev работает на одной копии БД, production на другой, боевой);
  2. Необходим перенос снимка базы в обе стороны. Т.е. нажали волшебную кнопку, копия базы с production-а встала на dev, полностью ее заменив, и в обратную сторону также;
  3. InnoDB;
  4. Обе копии должны быть размещены на одном сервере физически.

Тут у меня мыслей, к сожалению, практически нет. Если мне память не изменяет, то у mysql нету ничего похожего на

COPY `database` INTO `new_database`

Единственная мысль - делать полный дамп одной базы, чистить вторую, лить первую в очищенную. Имхо не самое оптимальное решение (база под 5 гигов, это будет очень долго), но других вариантов я не знаю.

В связи с этим вопрос: может, у вас есть какое-либо более разумное решение? Например, как-то с репликацией поиграться или еще как-нибудь. Может, тупо копирование файлов в каталоге MySQL (но у innodb с этим сложности).

В общем, нужны какие-нибудь идеи, в какую сторону мне копать(

Ответы

▲ 1

Прежде чем тратить огромное количество человеко-часов на поиски решения, которое вам навязывается заказчиком - советую реалистично оценить размеры базы данных. Импорт/Экспорт любой сколько-либо значимой БД может занимать часы - это однозначно не "нажал волшебную кнопку и база за 1 секунду скопировалась", а значит вам надо включить коммуникационные навыки и объяснить заказчику что то, что он просит - технически не реализуемо.

Если же совсем совсем приспичит - делайте так:

  • Выключаем MySQL (помня, что выключение надо это сделать так, чтобы все операции из буфера записались на диск в файлы данных - а иначе скопировать базу у вас не получится)
  • Копируем файлы InnoDB из одной БД в другую
  • Включаем MySQL