PostgreSQL: как сделать дамп базы (pg_dump) и развернуть в 1С (pg_restore)
- Необходимо перенести рабочую базу 1С с одного сервера PostgreSQL на другой.
- База данных слишком большая (более 50-100 ГБ), и стандартная выгрузка в файл
.dtзависает или выдает ошибку нехватки памяти. - Требуется быстро создать точную резервную копию базы данных без остановки работы пользователей.
Что такое pg_dump и pg_restore простыми словами?
pg_dump — это специальная служебная утилита PostgreSQL, которая «фотографирует» всю вашу базу данных 1С и аккуратно упаковывает ее в один сжатый файл-архив (дамп). pg_restore — утилита, которая распаковывает этот файл и создает готовую к работе базу на новом сервере.
Шаг 1. Создание резервной копии (Дампа)
- Зайдите на сервер, где работает база, и откройте командную строку (cmd в Windows или терминал в Linux).
- Выполните команду для выгрузки (замените имена на свои):
# Для Windows (запуск из папки bin PostgreSQL): "C:\Program Files\PostgreSQL 14-1C\bin\pg_dump.exe" -h localhost -p 5432 -U postgres -F c -b -v -f "C:\Backups\1c_buh.dump" 1c_buh_base - Введите пароль пользователя
postgres. Начнется процесс архивации, и в папке появится файл1c_buh.dump.
Шаг 2. Создание пустой базы на новом сервере
- Перенесите файл
1c_buh.dumpна новый сервер. - Создайте чистую пустую базу данных в PostgreSQL (например, через консоль pgAdmin или команду):
createdb -h localhost -p 5432 -U postgres -O postgres 1c_buh_new
Шаг 3. Восстановление данных (pg_restore)
- Выполните команду восстановления базы из дампа:
"C:\Program Files\PostgreSQL 14-1C\bin\pg_restore.exe" -h localhost -p 5432 -U postgres -d 1c_buh_new -v "C:\Backups\1c_buh.dump" - После завершения добавьте созданную информационную базу в Консоли кластера серверов 1С:Предприятия.
Частые вопросы (FAQ)
Почему перенос через pg_dump лучше, чем через выгрузку .dt из 1С?
Формат .dt не предназначен для больших баз и резервного копирования. На базах от 30-50 ГБ выгрузка в .dt часто падает с ошибкой нехватки памяти, а pg_dump работает на уровне СУБД, делает копию без остановки пользователей и гарантирует целостность.
Что означает параметр -F c в команде pg_dump?
Параметр -F c указывает создавать дамп в специальном бинарном сжатом формате (Custom format). Он занимает меньше места на диске и позволяет восстанавливать базу в несколько параллельных потоков.
Нужно ли выгонять пользователей из 1С при создании pg_dump?
Нет, не обязательно. PostgreSQL использует механизм MVCC (многоверсионность транзакций), благодаря чему дамп создается в согласованном состоянии на момент старта команды без блокировки работы людей.
Что делать, если при восстановлении pg_restore сыпятся предупреждения (warnings)?
Небольшие предупреждения о существующих системных объектах (например, public schema) допустимы и не являются критической ошибкой, если в конце команда завершилась без фатального сбоя (Fatal Error).