@AlexVWill

Реализация автоматического обновления БД?

Всем привет. Дано: mysql сервер, на нем 2 базы, одна условно говоря тестовая (base_test), другая боевая (base_release).
Необходимо, чтобы с некоторой периодичностью (например раз в 3 часа) боевая база копировалась в учебную. Т.е. были бы две идентичные базы, источником которых был бы base_release.
Есть несколько вариантов, сделать это через mysql консоль и крон, через экспорт-импорт, репликации и пр. Есть вариант сделать это через phpmyadmin, хочу попробовать там настроить сценарии.
spoiler
633e79acec07b545195117.png

Имел ли кто-то дело с этой штукой? Что там надо писать в виде SQL запроса, чтобы реализовать то, что требуется?
Спасибо.
  • Вопрос задан
  • 140 просмотров
Решения вопроса 3
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Делать Percona XtraBackup по крону на бою, и потом накатывать его на тест.
Остальное - от лукавого. "Через консоль" будет блокировать таблицы, что такое "через экспорт-импорт" непонятно что значит, а ивенты тут вообще не при делах.
Ответ написан
@rPman
я делал (в качестве эксперимента) с помощью создания копии базы через репликацию и опционально снапшоты виртуальной машины.

Боевая база данных в режиме master, резервная копия (запускаемая в виртуальной машине) настроена в репликацию к базовой в режиме slave, в необходимый момент резервная останавливается, берется копия файлов базы либо создается снапшот файловой системы или средствами виртуальной машины, база данных для резервной копии снова запускается (вместо остановки можно приостанавливать репликацию но это не так красиво) и паралельно запускается снапшот для тестовых задач, по окончанию этих тестов снапшот удаляется.

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

Кстати снапшоты виртуальной машины позволяют делать копию запущенного приложения (на основе этого реализована миграция, вручную это можно сделать на kvm), правда запускать эту копию придется в отдельной сети, так как ip адрес у нее будет совпадать с оригиналом.
Ответ написан
@AlexVWill Автор вопроса
Самое простое и элегантное решение оказалось просто команда на сервере:
mysqldump -u user --password=mypassword base_release | mysql -u user --password=mypassword base_test
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Если в нерабочее время - то можно было-бы убивать тестовую базу ночью. Копировать все датафайлы продуктовой. И стартовать ее снова. Ну там.. внеся какие-то косметические изменения в конфиг если надо.

Это самый быстрый способ IMHO. Но я его использовал под Oracle. Как будет комфортно для MySQL - чорт его знает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы