Как максимально быстро перенести бд mysql (MariaDB) на другой сервер?
Есть база (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?
Если есть возможность ненадолго остановить сервер - что мешает скопировать /var/lib/mysql и подсунуть его новому серверу, и посмотреть, что будет? Ну т.е. "в принципе" всё должно быть ок, потому что с более старой на более новую уходят данные (т.е. если б просто взяли 1 комп, и обновили там марию - получился б ровно такой же эффект, так что можно просто посмотреть мануал по обновлению с 10.0 на 10.1), но разумеется без непосредственной проверке на ваших версиях софта нельзя ничего гарантировать, надо брать и проверять.
Валентин, да, в итоге так и вышло. Я сделал на старом сервере бекап через innobackupex, снял дамп - на всякий случай. Потом скопировал файлы на новый сервер (сперва на медленный системный диск, для теста работоспособности). Запустил mysql, выполнил mysql_upgrade - таблицы быстренько проверились и система признала, что они годны к использованию. После этого я уже перетащил SSD из старого сервера в новый, создал на них RAID1, скопировал туда "проверенные" файлы mysql и примонтировал директорию в /var/lib/mysql. И - всё работает!
Мало известный, но самый быстрый способ переноса БД:
mysqldump -uroot DB | mysql --host=host -uroot -ppass -C DB
Данные льются напрямую между базами в виде SQL. Последний раз переливал базу в 100ГБ, получилась 99% утилизация канала и чуть больше 2 часов по времени
С сожалению, на новом сервере пока просто нет места - вместе с данными понадобится переставить SSD, на которых сейчас живет база. Поправил условие задачи.
vlarkanov, тогда тогда в чем проблема если переносятся диски?
Делаете ручной даунгрейд до 10.0.32 и переносите /var/lib/mysql. В 99% все пройдет гладко, только не забудьте конфиги скопировать. Потом уже можете обновиться до последней актуальной версии
По идее между ближайшими major версиями репликация у mariadb работает, поэтому самое быстрое - поднять реплику, затем promote до мастера.
А, не ваш случай. Да, перенести физически диски - это будет быстрее, просто обычно нет такой возможности. Смотрите инструкцию к major обновлению, inplace upgrade возможен.