Импорт/Экспорт БД MySQL через SSH на лету или в файл со сжатием

Опубликовано в Веб-разработка

В данной статье описаны способы экспорта и импорта баз данных MySQL в файл, в файл со сжатием и "на лету" между серверами.

Вы можете сразу перейти к пункту "Копирование БД между серверами через SSH на лету", либо ознакомиться со статьей целиком.

Переменные в этой статье:

USERNAME - имя пользователя БД, 
PASSWORD - пароль пользователя БД, 
DATABASE - имя базы данных, 
db_file_name.sql - имя файла, с которым проводится та или иная операция,
REMOTE_SERVER_USER - имя пользователя удаленного сервера
REMOTE_SERVER_ADDRESS - адрес удаленног сервера (IP или доменное имя)

Экспорт БД через SSH в файл

Для того, чтобы экспортировать базу данных MySQL в файл через консоль SSH, воспользуйтесь командой:

mysqldump -uUSERNAME -pPASSWORD DATABASE > db_file_name.sql

Экспорт БД через SSH в файл со сжатием

Если база данных большого размера, есть смысл сжать файл перед копированием. Сделать это можно следующим образом:

mysqldump -uUSERNAME -pPASSWORD DATABASE | gzip > db_file_name.sql.gz

Вы также можете создать файл экспорта, содержащий временную отметку выполнения данной операции, что полезно при частых дампах, выполнив эту команду:

mysqldump -uUSERNAME -pPASSWORD DATABASE | gzip > `date -I`.db_file_name.sql.gz

Импорт БД через SSH из файла

Для внесения экспортированных данных из файла в базу воспользуйтесь этой командой:

mysql -uUSERNAME -pPASSWORD DATABASE < db_file_name.sql

Импорт БД через SSH из сжатого файла

gzip -dc < db_file_name.sql.gz | mysql -uUSERNAME -pPASSWORD DATABASE

либо, если вы воспользовались для экспорта со сжатием второй командой, то выполнить этот код:

gzip -dc < `date -I`.db_file_name.sql.gz | mysql -uUSERNAME -pPASSWORD DATABASE

Копирование БД между серверами напрямую через SSH

Когда вы ограничены дисковым пространством и нет возможности сделать экспорт в файл, в можете провести его напрямую, выполнив команду ниже:

mysqldump -uUSERNAME -pPASSWORD DATABASE | ssh REMOTE_SERVER_USER@REMOTE_SERVER_ADDRESS "mysql -uUSERNAME -pPASSWORD DATABASE"

Tags: SSH