Экспорт базы данных — процедура создания снимка (дампа) базы данных в файл. Дамп используется для резервного копирования (backup), миграции между серверами, архивирования данных или передачи разработчику. Форматы дампа: SQL-скрипт (текстовый), бинарный дамп (PostgreSQL custom format), CSV.
MySQL / MariaDB: mysqldump
Стандартная утилита для экспорта MySQL:
# Дамп одной БД
mysqldump -u user -p dbname > backup.sql
# Все БД
mysqldump -u root -p --all-databases > all_dbs.sql
# Без блокировок (для InnoDB)
mysqldump -u user -p --single-transaction dbname > backup.sql
Ключи: --single-transaction — консистентный снапшот InnoDB без блокировок; --skip-lock-tables — не блокировать таблицы при экспорте; --compress — сжатие через zlib.
PostgreSQL: pg_dump
# SQL-дамп
pg_dump -U user dbname > backup.sql
# Бинарный формат (быстрее, меньше размер)
pg_dump -U user -Fc dbname > backup.dump
# Восстановление
pg_restore -U user -d dbname backup.dump
Сжатие и хранение
Для крупных баз дампы сжимаются на лету: mysqldump dbname | gzip > backup.sql.gz. Размер сжатого дампа обычно в 5–15 раз меньше оригинала. Хранить дампы следует вне основного сервера: на отдельном хранилище, S3 или другом ЦОД.
История
mysqldump входит в дистрибутив MySQL с версии 3.23 (2001). pg_dump существует с PostgreSQL 6.0 (1997). phpmyadmin добавил экспорт через браузер в 1998 году, что сделало операцию доступной без SSH. Инструменты типа mydumper (2009) появились для параллельного дампа крупных БД.
Связь с хостингом
На виртуальном хостинге экспорт доступен через phpMyAdmin или панель управления (cPanel, Plesk). На VDS рекомендуется настроить автоматический cron-дамп с ротацией файлов. Перед обновлением CMS (WordPress, Joomla) обязательно делать дамп БД и файлов сайта.
Методы экспорта баз данных
Для MySQL/MariaDB: mysqldump -u root -p dbname > backup.sql (логический бэкап, переносим между версиями), mysqlpump (параллельный dump), Percona XtraBackup (физический hot backup без блокировок). Для PostgreSQL: pg_dump -Fc dbname > backup.dump (сжатый формат), pg_basebackup (физический бэкап для Point-in-Time Recovery). Размер SQL-дампа можно сжать: mysqldump dbname | gzip > backup.sql.gz -- это уменьшает файл в 5--10 раз. Автоматизация через cron: 0 3 * * * mysqldump -u root -p... | gzip > /backup/$(date +\%Y\%m\%d).sql.gz.
Экспорт в хостинге
На shared-хостинге экспорт доступен через phpMyAdmin (Экспорт -> SQL) или SSH (mysqldump). Ограничение: phpMyAdmin не справляется с базами >100--200 МБ (таймаут PHP). Для больших баз -- только через SSH. На VPS экспорт настраивается гибко. Дифференциальный бэкап экономит место: сохраняет только изменения с момента последнего полного бэкапа. Binlog-репликация MySQL позволяет делать Point-in-Time Recovery -- восстановление до конкретной секунды. Геораспределённый бэкап хранит копии в нескольких регионах для защиты от катастроф.