Администрирование · 11 мин
Где находится база 1С в PostgreSQL и как её найти
Где физически хранится база 1С на PostgreSQL: каталог данных, имя базы, поиск через pgAdmin и SQL-запросы, резервное копирование и типичные ошибки администраторов.
Когда 1С работает в клиент-серверном режиме с СУБД PostgreSQL, физические файлы базы лежат не в папке, которую администратор указал при создании информационной базы, а внутри каталога данных самого PostgreSQL. Путь к этому каталогу зависит от операционной системы, способа установки СУБД и настроек кластера, поэтому универсального ответа «база лежит здесь» не существует — её расположение нужно определить на конкретном сервере.
При этом важно различать три сущности: файловый каталог информационной базы (для файлового режима), базу данных внутри PostgreSQL (логический объект с таблицами) и физические файлы этой базы на диске. В клиент-серверном режиме 1С обращается к базе через сервер 1С:Предприятия, который, в свою очередь, подключается к PostgreSQL по сетевому протоколу. Прямой доступ к файлам данных для работы не требуется, но он нужен для резервного копирования на уровне файлов, диагностики и переноса.
Ниже разобраны типовые пути установки PostgreSQL, способы узнать точное расположение через SQL и инструменты администрирования, а также правила безопасной работы с файлами базы.
Где PostgreSQL хранит данные по умолчанию
Кластер PostgreSQL хранит все свои базы в одном корневом каталоге данных — data directory. Внутри него находятся служебные подкаталоги: base (файлы пользовательских баз), global (общие системные таблицы), pg_wal (журнал предзаписи), pg_tblspc (ссылки на табличные пространства) и другие.
Типовые пути зависят от платформы и дистрибутива:
- Windows, установка стандартным инсталлятором:
C:\Program Files\PostgreSQL\15\data(номер версии может отличаться); - Linux, пакеты из репозитория PostgreSQL:
/var/lib/postgresql/<версия>/main(Debian/Ubuntu) или/var/lib/pgsql/<версия>/data(RHEL/CentOS); - сборка PostgreSQL от фирмы «1С»: часто
/var/lib/pgsql/dataили путь, заданный при инициализации кластера; - если при установке администратор указал нестандартный каталог (например, на отдельном диске
D:\pgdata), данные будут именно там.
Отдельной «папки базы 1С» с понятным именем внутри data-каталога нет: файлы каждой базы лежат в base/<OID>, где OID — числовой идентификатор базы в системном каталоге PostgreSQL. Определить, какой OID соответствует нужной базе, помогает запрос к системным таблицам, описанный ниже.
Как узнать точный путь к каталогу данных
Самый надёжный способ — спросить у самого PostgreSQL. Для этого нужно подключиться к серверу любым клиентом (psql, pgAdmin, DBeaver) под пользователем с правами суперпользователя и выполнить запрос:
SHOW data_directory;Команда вернёт абсолютный путь к каталогу данных работающего экземпляра. Если серверов PostgreSQL на машине несколько, важно подключаться именно к тому порту, который использует 1С (по умолчанию 5432, но при параллельной установке нескольких версий порты различаются).
Альтернативные способы без подключения к СУБД:
- посмотреть параметры запуска службы: в Windows — в свойствах службы postgresql в «Службах», путь указан после ключа
-D; в Linux —systemctl cat postgresqlили файл/etc/postgresql/<версия>/main/postgresql.conf, параметрdata_directory; - выполнить
ps aux | grep postgresв Linux — в строке главного процесса postmaster виден ключ-Dс путём; - в pgAdmin: свойства сервера, вкладка с параметрами подключения и конфигурации.
- 1Подключитесь к PostgreSQL под суперпользователем через psql или pgAdmin
- 2Выполните SHOW data_directory; и запишите путь
- 3Выполните запрос к pg_database, чтобы узнать OID базы 1С
- 4Проверьте наличие подкаталога base/<OID> внутри каталога данных
Как определить, какая база PostgreSQL принадлежит 1С
Имя базы данных задаётся при создании информационной базы в консоли администрирования сервера 1С или в диалоге добавления базы. Чтобы посмотреть его, откройте консоль администрирования сервера 1С:Предприятия, найдите нужную информационную базу и откройте её свойства — там указаны сервер СУБД, имя базы данных и пользователь СУБД.
Зная имя базы, можно найти её физическое расположение запросом:
SELECT datname, oid, pg_size_pretty(pg_database_size(oid)) AS size FROM pg_database ORDER BY pg_database_size(oid) DESC;Запрос покажет имена всех баз, их OID и размер. База 1С обычно заметно крупнее служебных (postgres, template0, template1). Подкаталог base/<OID> внутри data-каталога — это и есть физическое хранилище конкретной базы.
Дополнительная проверка принадлежности: у базы 1С владельцем обычно является пользователь, указанный при создании информационной базы, а внутри присутствуют характерные таблицы (Params, Config, _Document* и другие с именами метаданных 1С). Посмотреть список таблиц можно запросом к information_schema.tables.
Табличные пространства: когда база лежит не в data-каталоге
Если при развёртывании администратор создал отдельное табличное пространство (tablespace) на другом диске, часть или все данные базы физически находятся вне каталога base. В этом случае в pg_tblspc лежат символические ссылки на реальные каталоги.
Проверить, используются ли табличные пространства, можно запросом:
SELECT spcname, pg_tablespace_location(oid) AS location FROM pg_tablespace;Если в списке есть пространства кроме pg_default и pg_global — уточните их расположение, иначе резервная копия каталога данных окажется неполной. Для типовых установок 1С табличные пространства используются редко, но на крупных внедрениях с выделенными дисками под данные это встречается.
Все данные внутри data-каталога, достаточно копировать его целиком
Зафиксируйте реальные пути через pg_tablespace_location и включите их в бэкап
Сверьте имя базы в свойствах ИБ в консоли сервера 1С
Как правильно копировать и переносить базу
Главное правило: нельзя копировать файлы каталога данных при работающем PostgreSQL и рассчитывать на целостную копию. Файлы постоянно изменяются, и снимок «на живую» почти гарантированно даст повреждённую базу.
Безопасные способы резервного копирования и переноса:
- pg_dump / pg_dumpall — логическая выгрузка в файл, штатный способ переноса базы на другой сервер или другую версию PostgreSQL;
- выгрузка в dt через конфигуратор 1С — перенос на уровне информационной базы, независимый от СУБД (подходит и для перехода между PostgreSQL и, например, MS SQL);
- pg_basebackup или файловая копия каталога данных при остановленной службе PostgreSQL — физическая копия кластера целиком;
- снапшоты файловой системы или ВМ — только с корректной заморозкой (quiesce) или при остановленной СУБД.
Для переноса базы 1С на другой сервер типовая последовательность такова: создать выгрузку pg_dump на исходном сервере, развернуть её на целевом через psql или pg_restore, затем в консоли администрирования сервера 1С изменить параметры подключения информационной базы (сервер СУБД, имя базы, пользователь). Проверка результата — успешный вход в базу клиентом 1С и открытие нескольких отчётов за разные периоды.
Типичные ошибки при поиске и работе с файлами базы
Ещё одна частая ситуация — администратор ищет базу на том сервере, где установлен сервер 1С:Предприятия, хотя PostgreSQL развёрнут на отдельной машине. Сервер СУБД указан в свойствах информационной базы; файлы данных находятся именно на той машине, где работает PostgreSQL.
Также не стоит пытаться «почистить» базу, удаляя отдельные файлы из base/<OID>: каждый файл — сегмент таблицы или индекса, и его удаление разрушает структуру базы. Уменьшение занимаемого места выполняется штатными средствами: VACUUM FULL, REINDEX, pg_repack либо выгрузкой и загрузкой.
Что важно запомнить
База 1С на PostgreSQL физически лежит в каталоге данных кластера (узнаётся через SHOW data_directory), в подкаталоге base/<OID>, где OID соответствует имени базы из pg_database. Копировать и переносить данные следует через pg_dump/pg_basebackup или выгрузку dt, а не файловыми операциями на работающей СУБД.
Частые вопросы
Можно ли открыть базу 1С напрямую из файлов PostgreSQL, минуя сервер 1С?
Нет. Файлы в каталоге данных — внутренний формат PostgreSQL, читаемый только самой СУБД. Даже подключившись к базе через SQL, вы увидите таблицы со служебной структурой 1С; осмысленная работа с данными возможна через платформу 1С или специализированные обработки. Прямые изменения в таблицах SQL-запросами нарушают лицензионные ограничения и могут разрушить целостность данных.
Как узнать, какой порт использует PostgreSQL, если их несколько?
Выполните запрос SHOW port; при подключении или посмотрите параметр port в postgresql.conf каждого экземпляра. В Windows список занятых портов покажет команда netstat -ano с фильтром по процессу postgres. Порт подключения 1С указан неявно — в свойствах информационной базы задаётся только сервер СУБД, а порт берётся из настроек клиентской библиотеки, поэтому при нестандартном порте его указывают через двоеточие после имени сервера.
Можно ли перенести каталог данных PostgreSQL на другой диск?
Да, но только при остановленной службе: скопируйте весь каталог данных на новое место, измените параметр data_directory в конфигурации (или путь в параметрах службы с ключом -D), проверьте права доступа для учётной записи postgres и запустите службу. Альтернатива без остановки — создать табличное пространство на новом диске и переместить в него объекты командой ALTER TABLE ... SET TABLESPACE.
Почему база 1С занимает на диске больше, чем показывает размер данных?
PostgreSQL не возвращает освобождённое место операционной системе автоматически: удалённые строки остаются в файлах как «мёртвые кортежи» до выполнения VACUUM FULL или pg_repack. Кроме того, в каталог данных входят журналы pg_wal и индексы. Реальный объём полезных данных показывает pg_database_size, а избыточное распухание файлов лечится регламентным обслуживанием, а не удалением файлов.
Чем перенос через pg_dump отличается от выгрузки в dt?
pg_dump создаёт копию на уровне СУБД: быстро, сохраняет всё как есть, но требует совместимых версий PostgreSQL и переносит базу только между серверами PostgreSQL. Выгрузка в dt работает на уровне платформы 1С: медленнее на больших базах, но позволяет перейти на другую СУБД или файловый режим и заодно выполняет часть проверок целостности. Для миграции между разными СУБД используйте dt, для переезда PostgreSQL→PostgreSQL — pg_dump.
Как проверить, что после переноса база работает корректно?
Убедитесь, что информационная база в консоли сервера 1С указывает на новый сервер СУБД, войдите в базу толстым или тонким клиентом, откройте несколько типовых документов и отчётов за разные периоды, выполните тестирование и исправление в режиме проверки логической целостности. Дополнительно сверьте количество записей в ключевых таблицах на старом и новом сервере до отключения исходного.