Перенос MySQL c InnoDB на другой сервер без длительно остановки?
Собственно сабж. Есть база, около 200Gb.
Нужно перетянуть ее с сервера на сервер без длительных остановок. Видится вариант с rsync с работающей базой источником, после rsync остановки базы источника и последующего "догона" разницы опять же тем же rsync.
Что-то типа rsync -az root@hostname:/var/lib/mysql/ /var/lib/mysql/
Имеет ли данный способ право на жизнь, или есть подводные камни?! С postgres такое проходит на ура!
Или может быть проще поднять на сервере получателе последний дам, и настроить с сервером источником репликацию master master и потом тупо переключит фронтенды после полной консистентности данных?!
Раз небольшая остановка сервиса допустима (времени около пары минут), то никакого мастер-мастер!
0) Поднимаете реплику мастер-слейв (имеющийся сервер мастер, новый - слейв)
1) когда слейв догнал мастера, останавливаете сервис (если сайт - вешаете заглушку "зайдите через пару минут")
2) разбираете реплику
3) правите конфиги сервиса, чтобы тот обращался к новому серверу
4) включаете сервис.
Пару лет назад на работе с нашим сисадмином именно так мигрировали. Без проблем с первой попытки и простой пара минут суммарно.
Да вот боюсь что не получится такой вариант! FullDump базы вливаться будет в пустой сервере часов 8, а на неконсистентной базе после rsync mysql хоть и стартанет, но будет ругаться на транзакии, типа логи есть транзакций нет. И вот на таком slave сомнительно мне, что можно будет настроить реплику! Выгонять реплику с нуля ИМХО получится очень долго...
А какая разница, сколько будет вливаться, если задача сделать с минимальным даунтаймом? При этом же будет работать первый сервер. Потом включается репликация и второй сервер догоняет. Когда догнал, короткий даунтайм на отключение репликации и переключение.
А rsync тут вообще не при чём.
Снимаете бинарный дамп с помощью innobackupex с мастера.
Заводите его на вашем другом сервере в виде slave.
Запихиваете слейв в read only через глобальную переменную.
Когда слейв догонит мастера, переключаетесь на слейв (не сломается, так как ничего писаться не будет).
Выключаете реплицирование, выключаете read only.