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

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

Где хранятся серверные базы 1С и как их найти

Разбираем, где физически хранятся серверные базы 1С: каталоги SQL Server, PostgreSQL, файловый режим, кластер srvinfo и способы найти базу на сервере.

База 1С в клиент-серверном режиме не лежит одним файлом в понятной папке «рядом с программой». Она распределена как минимум между двумя компонентами: сервером 1С:Предприятия, который хранит служебную информацию о регистрации баз, и сервером СУБД (MS SQL Server, PostgreSQL, Oracle или IBM DB2), где физически находятся сами данные. Поэтому вопрос «где хранится база» всегда распадается на два: где зарегистрирована база и где лежат её файлы данных.

Понимать эту структуру нужно в трёх практических ситуациях: при настройке резервного копирования, при переносе базы на другой сервер и при диагностике переполнения диска. Копирование «не тех» каталогов — типичная причина того, что резервная копия оказывается пустышкой, а восстановить данные из неё невозможно.

Ниже разобраны конкретные пути для каждого компонента: каталог кластера 1С, стандартные каталоги данных популярных СУБД, файловый режим для сравнения, а также способы точно определить расположение конкретной базы через консоль администрирования и средства самой СУБД.

Как устроено хранение: сервер 1С и СУБД

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

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

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

Каталог srvinfo: где сервер 1С хранит список баз

Регистрационная информация кластера находится в каталоге srvinfo. На Windows по умолчанию это C:\Program Files\1cv8\<версия платформы>\srvinfo либо каталог C:\Program Files\1cv8\srvinfo, если путь не менялся при установке. На Linux стандартный путь — /opt/1cv8/x86_64/<версия>/srvinfo или заданный параметром -d при запуске агента сервера.

Внутри srvinfo находятся подкаталоги вида reg_1541 (номер соответствует порту кластера) и файлы списка информационных баз — 1CV8Clst.lst и связанные с ним. В них в текстовом и бинарном виде записаны: имя базы, тип СУБД, адрес сервера СУБД, имя базы данных на стороне СУБД и признак блокировки соединений.

Если сервер 1С переустанавливали или агент запускается с другим рабочим каталогом, srvinfo может оказаться в нестандартном месте. Точный путь виден в свойствах службы «Агент сервера 1С:Предприятия» в Windows — параметр -d в строке запуска исполняемого файла ragent.exe.

Где лежат данные в MS SQL Server

Для MS SQL Server каждая база 1С — это обычная база данных SQL Server, состоящая минимум из двух файлов: основного файла данных с расширением MDF и файла журнала транзакций LDF. Возможны дополнительные файлы данных NDF, если базу разбивали на файловые группы.

По умолчанию файлы лежат в каталоге данных экземпляра SQL Server, например C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA — точный путь зависит от версии и имени экземпляра. Однако при создании базы администратор мог указать любой другой диск, и на практике базы часто размещают на отдельных массивах.

Точное расположение файлов конкретной базы проще всего узнать запросом в SQL Server Management Studio:

sql
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID(N'ИмяБазы1С');

Запрос вернёт полные пути ко всем файлам данных и журнала. Это единственный надёжный способ: искать файлы по имени базы в проводнике нельзя, потому что логическое имя базы в 1С, имя базы в SQL Server и имена файлов могут не совпадать.

Где лежат данные в PostgreSQL

В PostgreSQL база 1С — это база данных внутри кластера PostgreSQL. Физически все базы кластера хранятся в общем каталоге данных, который задаётся при инициализации. Типичные пути: на Windows — C:\Program Files\PostgreSQL\<версия>\data, на Linux — /var/lib/pgsql/<версия>/data или /var/lib/postgresql/<версия>/main в зависимости от дистрибутива.

Внутри каталога data находится подкаталог base, где каждой базе соответствует папка с числовым именем — это внутренний идентификатор OID, а не имя базы. Сопоставить OID и имя можно запросом:

sql
SELECT oid, datname FROM pg_database ORDER BY datname;

Искать файлы конкретной базы «глазами» по каталогу base неудобно и рискованно: вручную копировать или удалять эти папки нельзя ни при каких обстоятельствах — это разрушит кластер PostgreSQL. Резервное копирование выполняется только штатными средствами: pg_dump, pg_basebackup или на уровне файловой системы с корректной остановкой службы.

Файловый режим: для сравнения и пограничных случаев

В файловом режиме вся база — это один файл 1Cv8.1CD, который лежит в каталоге, указанном при добавлении базы в список. Этот каталог может находиться на локальном диске или в сетевой папке. Путь до базы виден внизу окна выбора информационных баз при выделении строки, а также в параметре Connect=File="..." строки соединения.

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

Отличить режим просто: если в свойствах базы в списке указан путь к каталогу — это файловая база; если указаны сервер 1С и имя базы на сервере — клиент-серверная. От этого зависит и стратегия копирования: файл 1Cv8.1CD можно скопировать как обычный файл (при отсутствии активных сеансов), а базу СУБД — только средствами СУБД.

Сравнение вариантов

Файловый режим (1Cv8.1CD)

Подходит для небольших команд и простых сценариев. Ограничение: файл копируется только при закрытых сеансах, при росте объёма и числа пользователей падает производительность.

Клиент-серверный режим (СУБД)

Подходит для одновременной работы десятков и сотен пользователей. Ограничение: требует администрирования СУБД, резервное копирование только штатными средствами СУБД.

Как найти конкретную базу: пошаговый порядок

Когда нужно точно определить, где лежит конкретная база, действуйте от регистрации к физическим файлам, а не наоборот. Поиск по диску файлов с похожими именами даёт ложные совпадения, особенно если на сервере несколько копий и тестовых баз.

Порядок действий
  1. 1
    Откройте консоль администрирования серверов 1С (или оснастку «Администрирование серверов 1С») и найдите нужную информационную базу в дереве кластера.
  2. 2
    В свойствах базы посмотрите тип СУБД, адрес сервера СУБД и имя базы данных на стороне СУБД.
  3. 3
    Подключитесь к указанному серверу СУБД (SSMS для MS SQL, psql или pgAdmin для PostgreSQL).
  4. 4
    Запросом к sys.master_files (MS SQL) или pg_database/pg_tablespace (PostgreSQL) получите физические пути файлов.
  5. 5
    Проверьте, что найденные файлы по размеру и дате изменения соответствуют рабочей базе, а не старой копии.

Если консоль администрирования недоступна, имя базы на стороне СУБД можно подсмотреть в файле списка баз внутри srvinfo, но удобнее открыть свойства базы в конфигураторе: меню «Администрирование — Свойства информационной базы» показывает сервер СУБД и имя базы данных.

Контрольные точки

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

Имя базы в свойствах ИБ совпадает с именем в СУБД
Норма

Имена совпадают, запрос путей возвращает существующие файлы

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

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

Дата изменения файлов данных
Норма

Файлы изменялись недавно, в период активной работы пользователей

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

Файлы старые — это заброшенная копия, рабочая база лежит в другом месте

Размер файлов
Норма

Размер соответствует ожидаемому объёму учётных данных

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

Подозрительно маленький MDF на десятки мегабайт при многолетнем учёте — вероятно, не та база

Резервное копирование и перенос: что копировать на самом деле

Главная практическая ошибка — копировать srvinfo и считать, что база сохранена. Каталог srvinfo содержит только регистрацию, в нём нет данных. Резервная копия серверной базы делается на стороне СУБД: полный backup средствами MS SQL Server, pg_dump или pg_basebackup для PostgreSQL. Альтернатива — выгрузка в файл .dt через конфигуратор, которая не зависит от СУБД, но занимает заметно больше времени на больших базах.

При переносе базы на другой сервер последовательность обратная поиску: сначала восстанавливают базу в целевой СУБД, затем в консоли администрирования нового кластера создают информационную базу, указывая существующую базу данных. Копировать srvinfo со старого сервера на новый имеет смысл только при миграции кластера целиком и с остановленными службами.

Типичные ошибки
01
Копирование только каталога srvinfo как «резервной копии» — данные в нём отсутствуют, восстановить учётную базу из него невозможно.
02
Копирование MDF/LDF или каталога base PostgreSQL при работающей СУБД — файлы несогласованы, база из такой копии не поднимается или поднимается с повреждениями.
03
Поиск базы по имени файла в проводнике — логическое имя базы и имена файлов часто не совпадают, находится чужая копия.
04
Удаление «лишних» папок из каталога base PostgreSQL вручную — разрушается весь кластер СУБД, а не одна база.
05
Перенос базы только средствами СУБД без создания регистрации в кластере 1С — база есть в СУБД, но пользователи её не видят.
Маршрут решения

Как выбрать действие

Нужно узнать, где лежит рабочая базаОткройте свойства ИБ в консоли администрирования, затем запросите пути файлов в СУБД
Нужна резервная копия серверной базыИспользуйте backup средствами СУБД или выгрузку .dt через конфигуратор, но не копирование каталогов
База пропала из списка после переустановки сервера 1СДанные в СУБД, скорее всего, целы: добавьте ИБ в кластер заново, указав существующую базу данных
Диск переполнен и непонятно, что занимает местоПроверьте размер файлов СУБД и журналов транзакций LDF — они часто растут быстрее файлов данных
Итог

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

Серверная база 1С живёт в двух местах: регистрация — в каталоге srvinfo кластера 1С, данные — в файлах СУБД. Точные пути определяют через консоль администрирования и системные запросы СУБД. Копировать и переносить базу нужно средствами СУБД или выгрузкой .dt, а не копированием служебных каталогов.

Частые вопросы

Можно ли перенести серверную базу 1С, просто скопировав папку srvinfo?

Нет. В srvinfo хранится только регистрационная информация кластера: список баз, настройки, блокировки. Сами данные — документы, справочники, проводки — находятся в файлах СУБД. Перенос выполняется через backup/restore на стороне СУБД или выгрузку .dt, после чего база заново регистрируется в кластере на новом сервере.

Как узнать путь к базе, если нет доступа к консоли администрирования 1С?

Откройте конфигуратор под пользователем с правами администратора и посмотрите «Администрирование — Свойства информационной базы»: там указаны тип СУБД, сервер и имя базы данных. Затем путь к файлам получите запросом к sys.master_files в MS SQL или pg_database в PostgreSQL. Крайний вариант — изучить файл списка баз внутри каталога srvinfo.

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

PostgreSQL хранит данные каждой базы в папке с числовым именем — внутренним идентификатором OID. Сопоставление OID и имён баз возвращает запрос SELECT oid, datname FROM pg_database. Ориентироваться по именам папок и тем более изменять их вручную нельзя.

Что занимает больше всего места: srvinfo или файлы СУБД?

Файлы СУБД. Каталог srvinfo обычно занимает от мегабайт до нескольких гигабайт (в основном за счёт журнала регистрации), тогда как база в СУБД может достигать сотен гигабайт. При нехватке места в первую очередь проверяйте файлы данных и журналы транзакций LDF, которые при модели полного восстановления растут до первого бэкапа журнала.

Можно ли хранить файлы базы на сетевом диске?

Для СУБД это не рекомендуется и часто технически невозможно без специальных настроек: сетевые протоколы не гарантируют нужной семантики блокировок и записи, что грозит повреждением базы. Файлы данных размещают на локальных дисках сервера СУБД или на СХД с блочным доступом (iSCSI, FC). Сетевые папки допустимы только для файлового режима 1С и для хранения готовых резервных копий.

База есть в SQL Server, но в списке баз 1С её нет. Что делать?

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