К статье
Практический материал

Администрирование · 8 мин

Где лежит база 1С на PostgreSQL и как найти её файлы

Где физически хранится база 1С на PostgreSQL: каталог data в Linux и Windows, как найти путь через конфиг и запросы, чем отличается от файловой базы.

При клиент-серверном варианте работы 1С:Предприятия информационная база хранится не в файле 1Cv8.1CD, а внутри кластера PostgreSQL. Платформа 1С обращается к СУБД по сетевому протоколу, а сами данные лежат в каталоге данных PostgreSQL на сервере — в виде набора служебных файлов и подкаталогов, которые нельзя открыть или скопировать «как документ».

Точный путь зависит от операционной системы и способа установки PostgreSQL: пакетная установка из репозитория, сборка PostgresPro, установщик с сайта 1С или ручное развёртывание. Ниже разобраны типовые расположения, способы узнать фактический путь через конфигурацию и SQL-запросы, а также ограничения, которые важно учитывать перед любыми действиями с файлами базы.

Как 1С хранит данные в PostgreSQL

В клиент-серверной архитектуре участвуют три компонента: клиент 1С, сервер 1С:Предприятия и СУБД. Сервер 1С формирует SQL-запросы, а PostgreSQL исполняет их и физически размещает данные на диске. Поэтому на машине с сервером 1С файлов базы может не быть вовсе — всё находится на сервере СУБД.

Каждая информационная база, созданная через консоль кластера 1С или конфигуратор, соответствует одной базе данных внутри кластера PostgreSQL. Имя базы в СУБД совпадает с именем, указанным при создании. Внутри кластера база — это подкаталог с числовым идентификатором (OID) в структуре каталога данных, а не файл с понятным именем.

Типовые пути к каталогу данных

Расположение каталога данных задаётся при инициализации кластера (initdb) и фиксируется в настройках службы. Стандартные варианты зависят от дистрибутива и установщика.

ОкружениеТипичный путь к каталогу данных
Linux, пакет postgresql (Debian/Ubuntu)/var/lib/postgresql/<версия>/main
Linux, пакеты PostgreSQL/PostgresPro (RHEL, CentOS, ALT)/var/lib/pgsql/<версия>/data или /var/lib/pgsql/data
Linux, сборка от 1С (Postgres с патчами)/var/lib/pgsql/data или путь, заданный при установке
Windows, установщик PostgreSQLC:\Program Files\PostgreSQL\<версия>\data
Windows, PostgresProC:\Program Files\PostgresPro\<версия>\data

Это ориентиры, а не гарантия: администратор мог указать другой диск или каталог при установке, например D:\pgdata на Windows или отдельный том /opt/pgdata в Linux. Поэтому полагаться на «стандартный путь» нельзя — его нужно проверить.

Как узнать точный путь через PostgreSQL

Самый надёжный способ — спросить у самой СУБД. Подключитесь к кластеру через psql, pgAdmin или любой SQL-клиент под пользователем с правами суперпользователя (обычно postgres) и выполните запрос.

sql
SHOW data_directory;
-- Список баз и их владельцев:
SELECT datname FROM pg_database WHERE datistemplate = false;

Если подключиться к СУБД нельзя, путь виден в параметрах запуска службы. В Linux посмотрите юнит systemd или переменную PGDATA: systemctl cat postgresql или содержимое файла окружения службы. В Windows откройте реестр: ветка службы postgresql в HKLM\SYSTEM\CurrentControlSet\Services содержит ImagePath, где после ключа -D указан каталог данных.

Как найти каталог данных базы 1С
  1. 1
    Определите сервер СУБД: в консоли кластера 1С откройте свойства информационной базы и посмотрите поле «Сервер баз данных».
  2. 2
    Подключитесь к этому серверу через psql или pgAdmin под учётной записью postgres.
  3. 3
    Выполните SHOW data_directory; — получите каталог данных кластера.
  4. 4
    Выполните запрос к pg_database, чтобы увидеть список баз и найти нужную по имени.
  5. 5
    Сверьте имя базы в СУБД с именем, указанным в свойствах информационной базы 1С.

Что находится внутри каталога данных

Каталог данных — это не один файл, а структура. Ключевые элементы: подкаталог base с данными таблиц (по подкаталогу на каждую базу, имя — OID), global с общекластерными объектами, pg_wal с журналами предзаписи, а также конфигурационные файлы postgresql.conf и pg_hba.conf (в Debian-подобных системах конфиги вынесены в /etc/postgresql).

Соотнести базу 1С с её подкаталогом можно запросом: SELECT oid, datname FROM pg_database; — OID и будет именем папки внутри base. Однако практического смысла в ручной работе с этими файлами нет: таблицы 1С имеют служебные имена, а целостность обеспечивается только на уровне СУБД целиком.

Чем это отличается от файловой базы 1С

Файловая база — это один файл 1Cv8.1CD в сетевой папке, путь к которому виден прямо в списке баз при запуске 1С. Её можно скопировать проводником (при закрытых сеансах). С базой PostgreSQL такой подход не работает: простое копирование каталога данных без соблюдения процедур даёт непригодную или повреждённую копию.

Для переноса базы 1С на PostgreSQL используют выгрузку в dt через конфигуратор, выгрузку pg_dump с последующим восстановлением на новом сервере или создание новой информационной базы через консоль кластера с указанием уже восстановленной базы СУБД.

Способы получить копию базы

Выгрузка .dt из конфигуратора

Универсально и просто, переносит базу между любыми СУБД. Медленно на больших базах, требует монопольного доступа.

pg_dump / pg_restore

Быстро и штатно для PostgreSQL, можно делать без остановки работы. Привязано к PostgreSQL, требует доступа к серверу СУБД.

Копирование каталога data

Допустимо только при остановленной службе или через pg_basebackup. Самый рискованный вариант при ручном выполнении.

Частые ошибки и ограничения

Распространённая ситуация: администратор ищет «файл базы» на сервере 1С, хотя СУБД развёрнута на отдельной машине. Сначала проверьте свойства информационной базы в консоли кластера: там указаны и сервер СУБД, и имя базы данных, и пользователь СУБД, под которым 1С подключается.

Вторая типичная ошибка — попытка открыть каталог данных без прав. В Linux владельцем каталога является пользователь postgres, и даже чтение требует повышенных привилегий. Это нормальная защита, а не признак проблемы.

Типичные ошибки
01
Искать базу на сервере 1С, когда PostgreSQL работает на другой машине — путь нужно смотреть именно на сервере СУБД.
02
Копировать каталог data при запущенной службе — копия будет несогласованной и не запустится.
03
Путать каталог данных с каталогом конфигурации: в Debian/Ubuntu конфиги лежат в /etc/postgresql, а данные — в /var/lib/postgresql.
04
Пытаться восстановить отдельную таблицу из файлов в base — данные таблиц физически разнесены, ручное восстановление невозможно.
Контрольные точки

Как проверить результат

Путь из SHOW data_directory
Норма

Каталог существует и содержит подкаталоги base, global, pg_wal

Тревожный признак

Каталог пустой или не содержит служебных подкаталогов — это не каталог данных

Имя базы в pg_database
Норма

Имя совпадает с именем базы в свойствах информационной базы 1С

Тревожный признак

Базы с таким именем нет — возможно, вы подключились не к тому кластеру или серверу

Свойства ИБ в консоли кластера 1С
Норма

Указаны сервер СУБД и имя базы, тип СУБД — PostgreSQL

Тревожный признак

Тип СУБД другой или база файловая — инструкция не применима

FAQ

Можно ли скопировать базу 1С на PostgreSQL простым копированием папки?

Только при полностью остановленной службе PostgreSQL и копировании всего каталога данных целиком, а не отдельной базы. В рабочей практике надёжнее использовать pg_dump, pg_basebackup или выгрузку .dt из конфигуратора.

Как узнать, на каком сервере лежит база, если инфраструктура незнакомая?

Откройте консоль кластера сервера 1С, найдите информационную базу и посмотрите её свойства: поля «Сервер баз данных» и «Имя базы данных СУБД» укажут, куда подключаться за файлами.

Почему в каталоге base нет папок с именами баз?

Подкаталоги внутри base называются числовыми OID, а не именами баз. Соответствие показывает запрос SELECT oid, datname FROM pg_database;.

Где лежат настройки PostgreSQL, если путь к данным известен?

Обычно postgresql.conf и pg_hba.conf находятся в том же каталоге данных. Исключение — Debian/Ubuntu, где конфигурация вынесена в /etc/postgresql/<версия>/main. Точный путь к конфигу показывает запрос SHOW config_file;.

Можно ли перенести каталог данных на другой диск?

Да: остановите службу PostgreSQL, переместите каталог целиком с сохранением прав владельца postgres, обновите путь в параметрах службы (PGDATA или ключ -D) и запустите службу. Перед операцией сделайте резервную копию.

Итог

Что важно запомнить

База 1С на PostgreSQL физически лежит в каталоге данных кластера на сервере СУБД, а не на сервере 1С. Точный путь дают запрос SHOW data_directory и параметры службы, а нужная база ищется по имени в pg_database. Любые операции с файлами — только через штатные инструменты резервного копирования, ручное копирование при работающей СУБД разрушает данные.