Ради этого мы тут все и собрались. Давайте погрузимся в возможности резервных копий. До этого вы могли наблюдать непонятный ключ -F, который позволяет указать формат. Всего в PostgreSQL есть 4 формата:
— plain (стандартный)
— custom
— tar
— dir
❗️ Теперь хочется познакомиться с каждым поближе, но перед этим обсудим одну очень важную для понимания разницы между форматами вещь — TOC.
TOC — Table of Contents, оглавление резервной копии, которое отражает, какой контент содержится в дампе, в каком порядке его нужно восстанавливать и какие есть зависимости между объектами.
1. Plain (текстовый SQL-файл)
Особенности:
— Текстовый формат, редактируемый и читаемый.
— Нет сжатия, выборочного восстановления и параллельной обработки.
pg_dump -Fp demo -f demo-plain
Результат:Размер: ~888 МБ для БД 2.5 ГБ.
Время создания: ~8 сек.
2. Custom (бинарный формат с TOC)
Особенности:
— Сжатие, выборочное восстановление через pg_restore, параллельное восстановление.
— Нечитаемый формат без восстановления.
pg_dump -Fc demo -f demo.dump
Результат:Размер: ~233 МБ.
Время создания: ~37 сек.
3. Tar (архив с SQL и данными)
Особенности:
— Удобен для транспортировки.
— Нет сжатия и параллельной работы, но есть выборочное восстановление.
pg_dump -Ft demo -f demo-tar
Результат:
Размер: ~888 МБ.
Время создания: ~11 сек.
4. Dir (каталог со сжатыми файлами)
Особенности:
— Параллельные дамп/восстановление (-j N), сжатие, высокая скорость для больших БД.
— Неудобен для ручного управления.
pg_dump -Fd demo -j 5 -f demo-dir-5
Результат:
Размер: ~233 МБ.
Время создания: ~18 сек (с 5 потоками).
🕹 Когда что использовать?
Plain — миграция между СУБД, ручное редактирование дампа.
Custom — регулярные бэкапы с минимизацией места.
Tar — резервирование с возможностью извлечения файлов без pg_restore.
Dir — большие БД, требующие скорости
@postgresql | 😊 @iscode
