Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PG_BACKUP_UTILITY_FAIL 1С:Предприятие и СУБД

Резервное копирование PostgreSQL: pg_dump, pg_dumpall и pg_basebackup

Обновлено: 26.08.2026 · Официальная документация ↗
  • Ошибка pg_dump: error: query failed: canceling statement due to statement_timeout.
  • Многочасовое создание дампа крупной базы данных 1С в один поток.
  • Потеря ролей пользователей, прав доступа и табличных пространств при разворачивании дампа на новом сервере.

1. Быстрое многопоточное логическое копирование через pg_dump (Custom Format)

Всегда используйте кастомный сжатый формат -Fc или формат каталога -Fd для распараллеливания:

# Многопоточный бэкап базы в 4 потока со сжатием Zstandard
pg_dump -h 127.0.0.1 -p 5432 -U postgres -d Enterprise1C \
    -Fd -j 4 -Z zstd:6 \
    -f /mnt/backups/Enterprise1C_dump_dir

2. Сохранение глобальных объектов кластера (логины, роли, таблицы)

# Сохранение только глобальных ролей и паролей (без данных баз)
pg_dumpall -h 127.0.0.1 -p 5432 -U postgres --globals-only -f /mnt/backups/globals.sql

3. Создание физического бинарного бэкапа через pg_basebackup

# Полная бинарная копия экземпляра с включением всех WAL файлов
pg_basebackup -h 127.0.0.1 -p 5432 -U replicator \
    -D /mnt/backups/physical_basebackup/ \
    -Ft -z -Xs -P -v

4. Восстановление логического дампа через pg_restore

# 1. Восстановление глобальных пользователей
psql -h 127.0.0.1 -U postgres -f /mnt/backups/globals.sql

# 2. Параллельное восстановление структуры и данных в 4 потока
pg_restore -h 127.0.0.1 -p 5432 -U postgres -d Enterprise1C_New \
    -j 4 --clean --if-exists /mnt/backups/Enterprise1C_dump_dir
💡 Практика специалистов: Для терабайтных баз 1С регулярные логические дампы (pg_dump) неприменимы из-за огромного RTO на фазе восстановления индексов. Используйте физический pg_basebackup в связке с непрерывной архивацией WAL (pgBackRest/WAL-G).

Частые вопросы (FAQ)

В чем главное отличие логического бэкапа (pg_dump) от физического (pg_basebackup)?

pg_dump экспортирует SQL-команды/схемы и данные таблиц (работает медленнее, но позволяет восстанавливать отдельные таблицы и переносить данные между разными версиями PostgreSQL). pg_basebackup создает точную бинарную копию файлов кластера (работает быстро, идеален для DR и создания реплик).

Блокирует ли pg_dump работу пользователей в базе данных?

Нет. pg_dump использует транзакцию с уровнем изоляции REPEATABLE READ и читает консистентный снимок данных без блокировки операций SELECT, INSERT, UPDATE, DELETE (блокируются только DDL операции ALTER/DROP TABLE).

Почему нельзя использовать флаг -j (параллелизм) с обычным текстовым форматом .sql?

Параллельный сброс и восстановление поддерживаются только для формата каталога (-Fd) и сжатого кастомного архива (-Fc), так как СУБД требуется TOC-оглавление для распределения объектов между воркерами.

Как избежать падения pg_dump по statement_timeout на тяжелых базах?

Передайте команду отключения таймаута сессии через переменную окружения или флаг: PGOPTIONS="-c statement_timeout=0" pg_dump ...

Полезные материалы
Рекомендуем