Перейти к содержимому
UAhostingБлог
PHP и базы данных

Как экспортировать и импортировать большую базу MySQL по SSH

Для большой базы командный клиент может быть удобнее phpMyAdmin, поскольку не зависит от времени веб-запроса. Нужны SSH-доступ и права пользователя БД.

Экспорт вне веб-каталога

Замените хост, пользователя и имя базы своими значениями. Пароль вводится в ответ на запрос, а не записывается в команду:

umask 077
mkdir -p ~/private-backups
cd ~/private-backups
mysqldump -h localhost -u account_dbuser -p --single-transaction --quick --no-tablespaces account_db > site.sql

Каталог ~/private-backups должен быть вне document root всех ваших сайтов. Не храните дамп в public_html. --single-transaction подходит для согласованного снимка InnoDB, но не гарантирует согласованности MyISAM; при экспорте не меняйте структуру таблиц. Для активного магазина согласуйте консистентный финальный экспорт.

Проверьте копию

Дождитесь завершения без ошибок, проверьте размер и протестируйте импорт в отдельную базу. Пустой или неполный файл не является резервной копией. Если нужны процедуры, события или специальные права, согласуйте дополнительные параметры с администратором; не выдавайте лишние глобальные права ради экспорта.

Импорт на новом сервере

Сначала создайте целевую базу и пользователя через cPanel. Перед импортом сохраните существующую базу: SQL-дамп может перезаписать её таблицы. Загрузите файл защищённым способом и выполните:

mysql -h localhost -u account_dbuser -p account_db < site.sql

Проверьте ошибки, кодировку и работу приложения. Имена команд могут быть mysql/mysqldump или mariadb/mariadb-dump в зависимости от сервера. Удаляйте лишние серверные копии только после проверки и сохранения нужного архива.

Документация

MySQL: mysqldump

От инструкции — к настройке

Условия и возможности соответствующей услуги — на основном сайте UAhosting.

Посмотреть услугу