← Назад к вопросам

Что такое custom format в dump в базах данных?

2.0 Middle🔥 81 комментариев
#Базы данных

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Custom Format в дампах баз данных

Custom format в контексте дампа (dump/backup) баз данных — это специальный бинарный формат хранения резервной копии, который предоставляет существенные преимущества по сравнению с классическим plain-text (обычным текстовым) форматом. Этот формат поддерживается такими утилитами как pg_dump для PostgreSQL и аналогичными инструментами в других СУБД, хотя чаще всего термин ассоциируется именно с экосистемой Postgres.

Ключевые характеристики Custom Format

Custom format представляет собой сжатый бинарный файл (обычно с расширением .dump или .dmp), который:

  • Не является человекочитаемым. В отличие от plain-text SQL-дампа, его нельзя открыть в текстовом редакторе.
  • Содержит метаданные и структурную информацию о дампе, что позволяет инструментам восстановления (например, pg_restore) "понимать" содержимое архива без его полной распаковки.
  • Поддерживает сжатие на лету (inline compression), что значительно экономит место на диске и время передачи по сети.
  • Позволяет селективное восстановление — можно извлекать отдельные объекты БД (таблицы, индексы, функции) без восстановления всей базы.

Основные преимущества перед Plain-Text форматом

  1. Эффективное сжатие данных
    Custom format использует сжатие по умолчанию (уровень можно регулировать), что дает выигрыш в 2-4 раза по объему.
```bash
# Создание дампа в custom format с максимальным сжатием
pg_dump -Fc -Z 9 mydatabase > mydb_backup.dump
```

2. Гибкость восстановления (Selective Restore)

    Это главное преимущество. Можно проанализировать архив и восстановить только нужное.
```bash
# Просмотр содержимого архива
pg_restore -l mydb_backup.dump > list_of_contents.txt

# Восстановление только структуры (DDL)
pg_restore --schema-only -d newdb mydb_backup.dump

# Восстановление только конкретной таблицы
pg_restore -t my_table -d newdb mydb_backup.dump

# Восстановление данных без предварительного удаления объектов (используя --data-only и --clean аккуратно)
pg_restore --data-only -d existingdb mydb_backup.dump
```

3. Параллельная обработка при восстановлении

    Custom format поддерживает **параллельное восстановление** (`-j`/`--jobs`), что ускоряет загрузку данных на многопроцессорных системах.
```bash
# Восстановление с использованием 4 параллельных потоков
pg_restore -j 4 -d newdb mydb_backup.dump
```

4. Целостность и порядок восстановления

    Формат хранит зависимости между объектами (таблицы -> индексы, функции -> триггеры). `pg_restore` автоматически восстанавливает объекты в правильном порядке, чтобы избежать ошибок целостности.

  1. Возможность восстановления на другой мажорной версии
    Custom format часто более устойчив при восстановлении на сервер с другой минорной или, в некоторых случаях, мажорной версией PostgreSQL, так как представляет собой сериализованный поток объектов, а не просто SQL-скрипт, который может содержать несовместимые конструкции.

Недостатки и ограничения

  • Непереносимость между СУБД. Формат специфичен для конкретной СУБД (и даже версии).
  • Требует специальных утилит для чтения и восстановления (pg_restore).
  • Сложнее для отладки — нельзя просто посмотреть, какие SQL-команды будут выполнены.

Практическое применение в DevOps

В DevOps-практиках custom format является предпочтительным для:

  • Регулярного резервного копирования (backup) производственных баз данных из-за экономии места.
  • Миграции данных между серверами, когда требуется гибкость (например, перенос только схемы в новое окружение).
  • Создания фикстур для тестовых сред, где нужны только подмножества данных.
  • Интеграции в CI/CD пайплайны, где этапы могут требовать развертывания определенных структур БД.

Пример создания и использования в скрипте:

#!/bin/bash
# Пример скрипта бэкапа и восстановления в DevOps-среде

DB_NAME="app_production"
BACKUP_FILE="/backups/${DB_NAME}_$(date +%Y%m%d_%H%M%S).dump"

# Создание custom format дампа с сжатием
pg_dump -Fc -h $DB_HOST -U $DB_USER $DB_NAME > $BACKUP_FILE

# Проверка успешности создания
if [ $? -eq 0 ]; then
    echo "Backup успешно создан: $BACKUP_FILE"
    
    # (Опционально) Восстановление в staging-окружении
    # pg_restore --clean --if-exists --no-owner --no-privileges -h $STAGING_DB_HOST -U $STAGING_DB_USER -d $STAGING_DB_NAME $BACKUP_FILE
else
    echo "Ошибка при создании бэкапа!" >&2
    exit 1
fi

Таким образом, custom format — это мощный, эффективный и гибкий формат резервных копий, созданный для профессионального администрирования и эксплуатации баз данных, что делает его незаменимым инструментом в арсенале DevOps-инженера, работающего с PostgreSQL и аналогичными системами.

Что такое custom format в dump в базах данных? | PrepBro