Перенос базы данных MYSQL со старого на новый сервер

Перенос или миграция базы данных MySQL или MariaDB между серверами обычно занимает всего несколько простых шагов. В этой статье мы расскажем про них, и вы сможете легко перенести данные со старого Linux сервера на новый, импортировать и выполнить проверку того что все прошло без ошибок. Поехали!

 


ПОДГОТОВКА

Первым делом нужно убедиться, что и на старом, и на новом сервере установлена одинаковая версия MySQL с одинаковым дистрибутивом. Для этого в командной строке выполните:

mysql -V

После этого нужно убедиться, что на новом сервере хватает места для файла дампа старой базы и импортированной базы данных (например, используя команду df).


ЭКСПОРТИРУЕМ БАЗУ ДАННЫХ MYSQL В ФАЙЛ ДАМПА

Внимание! Не переносите каталог data на новый сервер и не меняйте внутреннюю структуру БД.

Сначала на старом сервере остановите службу mysql или mariadb, используя команду systemctl:

# systemctl stop mariadb
ИЛИ
# systemctl stop mysql

Затем сделайте дамп ваших баз MySQL с помощью команды mysqldump:

# mysqldump -u
[user] -p --all-databases > all_databases.sql

Если база одна, то можно использовать команду:

# mysqldump -u root -p --opt [database name] > database_name.sql

ПЕРЕНОС ДАМПА MYSQL НА НОВЫЙ СЕРВЕР

Теперь используйте команду scp, чтобы перенести файл дампа на новый сервер. После подключения база будет перенесена на новый сервер.

# scp all_databases.sql user@merionet.ru:~/      	 [Все базы]
# scp database_name.sql user@merionet.ru:~/ [Одна база]

ИМПОРТ ФАЙЛА ДАМПА MYSQL НА НОВЫЙ СЕРВЕР

После того как файл дампа был перенесен, нужно выполнить следующую команду для импорта всех баз данных в MySQL.

# mysql -u [user] -p --all-databases < all_databases.sql   [All Databases]
# mysql -u [user] -p newdatabase < database_name.sql [Singe Database]

ПРОВЕРКА ИМПОРТА

После завершения импорта вы можете проверить базы данных на обоих серверах:

# mysql -u user -p
# show databases;

ПЕРЕНОС БАЗ ДАННЫХ И ПОЛЬЗОВАТЕЛЕЙ MYSQL НА НОВЫЙ СЕРВЕР

Если нужно переместить все свои БД MySQL, пользователей, разрешения и структуру данных старого сервера на новый, то нужно использовать команду rsync. С ее помощью скопируется весь контент из каталога данных mysql или mariadb на новый сервер.

# rsync -avz /var/lib/mysql/* user@merionet.ru:/var/lib/mysql/

Как только передача завершится, вы можете установить владельца каталога данных mysql или mariadb для пользователя и группы mysql. Для того чтобы убедиться, что что все файлы были переданы можно выполнить просмотр каталога.

# chown mysql:mysql -R /var/lib/mysql/
# ls -l /var/lib/mysql/

Готово! Мы только что очень быстро и просто выполнили миграцию всех баз со старого сервера на новый.