Импорт базы данных — процесс загрузки данных и структуры таблиц из файла в СУБД. Типовые сценарии: восстановление из резервной копии, миграция базы между серверами или хостингами, загрузка данных из сторонней системы. Обратная операция — экспорт (дамп).
Как работает
Для MySQL/MariaDB дамп создаётся mysqldump и представляет собой SQL-файл с командами CREATE TABLE и INSERT. Импорт выполняется командой:
mysql -u user -p database_name < dump.sql
Для больших баз (10+ ГБ) эффективнее использовать mydumper/myloader — многопоточный инструмент, работающий в 5–10 раз быстрее mysqldump. Или Percona XtraBackup для физического копирования файлов InnoDB без SQL-парсинга.
Для PostgreSQL дамп создаётся pg_dump (в SQL или custom формате). Импорт: psql -U user -d dbname < dump.sql или pg_restore -U user -d dbname dump.custom. Custom-формат поддерживает параллельное восстановление: pg_restore -j 4 использует 4 потока.
При импорте через phpMyAdmin есть лимит на размер файла, задаваемый в PHP: upload_max_filesize и post_max_size. Для файлов свыше 50–100 МБ используйте командную строку.
История
Утилита mysqldump разработана Игорем Романовым в 1998 году как часть MySQL 3.23. pg_dump входит в дистрибутив PostgreSQL с первых версий (1996). MyDumper создан в 2011 году командой Booking.com и Percona для ускорения дампа и загрузки крупных баз.
Связь с хостингом
При переезде сайта на другой хостинг или VPS импорт БД — обязательный этап. Типичная последовательность: создать дамп на старом хостинге → перенести файл → создать базу на новом хостинге → выполнить импорт. Большие базы (>500 МБ) на виртуальном хостинге с phpMyAdmin потребуют временного увеличения PHP-лимитов или переноса через SSH/CLI.
Инструменты импорта
mysqldump → mysql: mysql -u root -p db_name < dump.sql. Для больших файлов (>1 ГБ): pv dump.sql | mysql db_name (показывает прогресс). PostgreSQL: pg_restore -d dbname dump.backup. MongoDB: mongorestore --db dbname ./dump/.
Импорт больших БД
Оптимизация для MySQL: перед импортом отключить проверки (SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0). Размер innodb_buffer_pool увеличить временно. Для сжатых дампов: gzip -dc dump.sql.gz | mysql db. Время импорта 10 ГБ дампа — от 30 минут до нескольких часов.
Миграция БД между серверами
Lossless migration: mysqldump на источнике → rsync дампа → импорт на цели. Для больших БД без простоя: Percona XtraBackup (горячий бэкап InnoDB). При смене версии MySQL — проверить совместимость типов данных и функций (особенно при переходе 5.7 → 8.0).
Проверка целостности после импорта
MySQL: CHECK TABLE tablename проверяет индексы и данные. ANALYZE TABLE обновляет статистику после импорта. PostgreSQL: ANALYZE после pg_restore. Сравнение числа строк: SELECT COUNT(*) FROM table на источнике и цели. CHECKSUM TABLE сравнивает контрольную сумму.
mydumper/myloader — быстрый импорт MySQL
mydumper: параллельный дамп MySQL в несколько файлов. myloader: параллельный импорт. Для БД > 10 ГБ ускорение в 4–8 раз vs mysqldump. myloader -u root -p pass -d /backup/dump/ --threads=8. Использует несколько потоков для параллельной записи в разные таблицы.