hostprofi.ru
Подобрать хостинг
Термин·буква Д

Дамп БД (mysqldump, pg_dump)

краткое определение

Дамп БД (database dump) — резервная копия базы данных в виде SQL-скрипта или бинарного файла. mysqldump создаёт SQL-дамп MySQL/MariaDB, pg_dump — PostgreSQL. Дамп содержит DDL-операторы (CREATE TABLE) и DML (INSERT INTO) для полного восстановления структуры и данных.

Дамп базы данных — экспорт структуры и данных СУБД в файл для резервного копирования, переноса или клонирования. mysqldump — штатная утилита MySQL/MariaDB, pg_dumpPostgreSQL. Дамп в SQL-формате содержит SQL-операторы, которые при выполнении воссоздают исходную базу данных целиком или частично.

mysqldump

Базовые команды:

# Дамп одной базы
mysqldump -u root -p dbname > backup.sql

# Дамп всех баз
mysqldump -u root -p --all-databases > all_dbs.sql

# Дамп без данных (только структура)
mysqldump -u root -p --no-data dbname > schema.sql

# Дамп с компрессией
mysqldump -u root -p dbname | gzip > backup.sql.gz

mysqldump делает логическую резервную копию: читает данные через SELECT и записывает INSERT-операторы. Логический дамп сохраняет транзакционную согласованность при использовании параметра --single-transaction. Медленнее физического копирования файлов, но переносим между версиями MySQL и совместим с разными платформами.

pg_dump

Базовые команды:

# Дамп в SQL-формат
pg_dump -U postgres dbname > backup.sql

# Дамп в custom-формат (сжатый, быстрое восстановление)
pg_dump -U postgres -Fc dbname > backup.dump

# Дамп всего кластера (включая роли и табличные пространства)
pg_dumpall -U postgres > all_cluster.sql

# Параллельный дамп в directory-формат
pg_dump -U postgres -Fd -j 4 dbname -f backup_dir/

Custom-формат (-Fc) рекомендован для больших баз: он сжат, поддерживает выборочное восстановление отдельных таблиц через pg_restore, параллельное восстановление (-j).

Ограничения и альтернативы

Логические дампы медленнее и объёмнее физических. Для больших баз (100 ГБ+) предпочтительны физические инструменты: Percona XtraBackup (MySQL), pg_basebackup (PostgreSQL). Они делают копию файлов данных «на горячую» без остановки СУБД.

Для полного резервного копирования крупных PostgreSQL используют WAL-архивирование: каждый WAL-сегмент (16 МБ по умолчанию) копируется во внешнее хранилище. Вместе с базовой копией это позволяет восстановить базу на любой момент времени (Point-In-Time Recovery, PITR).

История

mysqldump появился в MySQL 3.x в начале 2000-х как базовый инструмент резервного копирования. pg_dump входит в дистрибутив PostgreSQL с первых версий (1996). Percona XtraBackup создан в 2009 году как альтернатива для MySQL с поддержкой горячего бэкапа без блокировки таблиц (что mysqldump с LOCK TABLES делает по умолчанию).

На что обращать внимание

mysqldump с параметром --single-transaction делает консистентный дамп InnoDB без блокировок — используйте всегда для production. Без этого параметра mysqldump блокирует таблицы на время дампа. pg_dump всегда консистентен без дополнительных параметров (транзакционный снимок). Сжатие дампа: для SQL-файлов pigz (параллельный gzip) значительно быстрее стандартного gzip. При наличии Master-Slave репликации дамп рекомендуется снимать с реплики, не нагружая Master. Дамп нужно хранить вне сервера — локальный дамп не защищает от отказа диска.

Автоматизация дампов

Настройте автоматический дамп через cron на VPS: ежедневный дамп всех баз с ротацией 7-30 дней. Пример cron-задачи MySQL: 0 3 * * * mysqldump -u root -p${MYSQL_PASS} --all-databases | gzip > /backup/mysql_$(date +%Y%m%d).sql.gz. Хранить бэкапы только на том же сервере — недостаточно; используйте off-site backup через rsync/rclone на внешнее хранилище.

Другие термины