LINUX.ORG.RU
ФорумAdmin

Как максимально быстро перенести бд mysql (MariaDB) на другой сервер?

 , ,


0

2

Есть база (256gb). Её нужно перенести на другой сервер. Дело осложнено тем, что на старом сервере версия 10.0.32-MariaDB-0+deb8u1, а на новом 10.1.26-MariaDB-0+deb9u1. Кроме того, SSD (на старом сервере RAID1 через HP контроллер, на новом будет софтовый RAID1), на которых сейчас живет база, будут перенесены на новый сервер, т.ч. потоковый бекап невозможен.

Сервера останавливать можно на разумное время.

1) Можно ли просто перенести содержимое /var/lib/mysql на новый сервер? Версия MariaDB отличается, но только на минорную версию.

Если нельзя: 2) Стоит ли использовать в таком случае XtraBackup?

если и это нельзя: 3) Как максимально ускорить создание\залив дампа с помощью mysqldump?



Последнее исправление: dpronyaev (всего исправлений: 2)

Чтобы время простоя было минимальным, можно использовать master-slave репликацию. Настраиваете репликацию, когда новая БД догонит старую, переключаете.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

С сожалению, на новом сервере пока просто нет места - вместе с данными понадобится переставить SSD, на которых сейчас живет база. Поправил условие задачи.

dpronyaev
() автор топика
Ответ на: комментарий от dpronyaev

Ну тогда, может быть, переставить SSD с /var/lib/mysql и запустить скрипт обновления MariaDB (который выполняется, когда ты обновляешь 10.0->10.1). Потренироваться на копии /var/lib/mysql

goingUp ★★★★★
()
Ответ на: комментарий от dpronyaev

Так там же первой строчкой написано, что формат файлов не менялся.

Yur4eg ★★
()
Ответ на: комментарий от goingUp

Потренироваться на копии /var/lib/mysql

Хотя не получится просто взять и сделать копию файлов на работающей базе. Нужно делать дамп и заливать в 10.0).

goingUp ★★★★★
()

Можно ли просто перенести содержимое /var/lib/mysql на новый сервер? Версия MariaDB отличается, но только на минорную версию

Думаю прокатит. Какие там storage engine используются? По крайней мере у попсовых форматы в последнее время не менялись, кажется

MrClon ★★★★★
()
Ответ на: комментарий от dpronyaev

лучше через репликацию. xtrabackup'ом делаешь копию прям на новый сервер. Далее процедуры апгрейда до новой версии mariadb и запускаешь реплику. Смотришь, что новая база ведет себя корректно, не течет, селекты выполняются с оптимальной скоростью. Далее в любой момент разрываешь реплику и переключаешься. Так ты если что, сможешь откатиться и одновременно будет время подтюнить новую базу на новом железе.

anonymous
()

Я бы сделал самым медленным но надежным способом: mysqldump ... | ssh ... `cat | mysql`.

iron ★★★★★
()
Ответ на: комментарий от goingUp

Базы предварительно стопну, конечно - и донора и реципиента.

dpronyaev
() автор топика

Спасибо за советы! В общем, план действий у меня получился такой:

1) Стопаю базы на старом и новом серверах. Копирую файлы на новый сервер. Пробую сделать mysql_upgrade. Если работает - PROFIT. Если нет - 2) Делаю на старом сервере mysqldump, вливаю его в новый, отключим на время залива бинлоги и выставляю innodb_flush_log_at_trx_commit=0. 3) PROFIT!

dpronyaev
() автор топика
Ответ на: комментарий от goingUp

Хотя не получится просто взять и сделать копию файлов на работающей базе.

Я для минимизации даунтайма (именно при полном переносе) делал копию работающей базы через rsync, потом стопал исходник и ещё раз делал rsync для переноса уже изменившихся файлов. Их получается обычно сильно меньше 100%.

Репликация без хитростей позволяет обойтись нулевым даунтаймом, но только если она уже есть :) Т.к. иначе потребуется сделать mysqldump и он будет идти дольше, чем простое копирование.

Самый кошерный путь — это сделать полную копию базы через xtrabackup, поднять копию, сделать из неё реплицированный слейв, догнать его до мастера и тогда переключать. В таком случае можно обойтись реально с нулевым даунтаймом, но это только для InnoDB и требует глубоко влезать в вопрос.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Вариант с репликацией после бекапа innobackupex, конечно, самый приятный - я так в свое время перетаскивал mysql с отдельного сервера в Galera Cluster. Но в моей случае проблема в том, что носители, на которых крутится база, потребуется перенести в новый сервер - и без сохранения данных на них, т.к. в старом сервере HP-контроллер RAID,а в новом будет софтовый рейд.

dpronyaev
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.