Мне нужно часто дублировать одну базу данных на моем сервере MySQL в зеркальную базу данных на том же сервере MySQL.
Я пишу сценарий bash, который создает зеркало моего веб-приложения (PHP / MySQL) на отдельном поддомене. Пользователи могут использовать это зеркало, чтобы опробовать все безумные вещи, не влияя на производственную среду. Сценарий должен запускаться автоматически каждую ночь.
Дублировать исходный код очень просто. Я просто использую rsync -a
, чтобы скопировать все из каталога, содержащего производственную среду, в каталог зеркала и применить патч для обновления нескольких файлов конфигурации. Проблема заключается в дублировании базы данных, размер которой вырос почти до 3 ГБ.
Когда я использую mysqldump live_db | mysql mirror_db
, копирование базы данных занимает вечность. Кроме того, в это время загрузка ЦП достигает 100%, и мое веб-приложение становится необычайно медленным.
Репликация базы данных, кажется, не вариант, так как у меня только один сервер MySQL. Для репликации требуется два сервера.
Каков наилучший способ дублировать производственную базу данных? Он не должен быть быстрым, но он не должен слишком сильно влиять на производительность системы. Люди по-прежнему смогут использовать мое веб-приложение, пока зеркальный скрипт работает в фоновом режиме.