Где посмотреть GUID информационной базы в кластере 1С

· 9 мин

Содержание

Идентификатор базы 1С на сервере быстрее всего узнать командой rac infobase --cluster=<GUID кластера> summary list: в строке infobase будет GUID, а в строке name — имя базы. Второй способ, когда нет утилиты: открыть каталог srvinfo\reg_1541 на сервере. Каждая подпапка с длинным именем вида 8f3c2a1e-... — это GUID одной из баз кластера.

Типичная ситуация: техподдержка просит прислать журнал регистрации базы buh_main. Вы заходите на сервер, а там два десятка папок с одинаково нечитаемыми именами. Чтобы взять нужную, придётся сопоставить имя базы с её идентификатором. Ниже все рабочие способы, от самого надёжного до запасных.

Что такое GUID базы в кластере и зачем он нужен

Когда базу регистрируют в кластере серверов 1С:Предприятия, кластер присваивает ей уникальный идентификатор. Это GUID из 32 шестнадцатеричных символов в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Пользователи его не видят: при подключении они указывают сервер и имя базы.

Идентификатор понадобится администратору в таких случаях:

  • 📁 найти журнал регистрации базы — он лежит в папке <GUID базы>\1Cv8Log внутри каталога кластера;
  • 🧹 почистить серверные служебные файлы конкретной базы, не трогая остальные;
  • 🖥 управлять базой из командной строки через rac — почти все команды по базе требуют --infobase=<GUID>;
  • 🔍 разобрать список сеансов или соединений, где база указана идентификатором, а не именем;
  • 📨 передать данные в техподдержку или подрядчику по сопровождению.

У кластера тоже есть свой GUID, и у рабочего сервера — свой. Путать их нельзя: команды rac для базы ждут сначала GUID кластера, потом GUID самой базы.

У файловой базы кластерного идентификатора нет. Он появляется только у баз, зарегистрированных на сервере 1С.

Что видно в консоли администрирования серверов

Консоль «Администрирование серверов 1С Предприятия» — первое, что открывают администраторы. Путь в дереве: Central 1C:Enterprise 8.3 servers → <имя сервера> → Кластеры → <кластер> → Информационные базы.

В окне свойств базы консоль показывает:

  • имя и описание базы;
  • тип СУБД и сервер баз данных;
  • имя базы данных на сервере СУБД;
  • пользователя СУБД;
  • настройки блокировки сеансов и регламентных заданий.

GUID отдельным полем в окне свойств не выводится. Поэтому консоль на этом шаге нужна для другого: уточнить точное имя базы, номер порта кластера (по умолчанию 1541) и имя базы в СУБД. Эти три значения пригодятся дальше.

Порт кластера определяет имя каталога: для кластера на порту 1541 это reg_1541, для кластера на порту 2541 — reg_2541. Если на сервере несколько кластеров, без этой детали легко искать папку не там.

Если консоль не открывается или пишет ошибку подключения, проверьте, что запущена служба агента сервера 1С. Консоль подключается к агенту, по умолчанию на порт 1540.

Как узнать идентификатор базы 1С через rac

Утилита rac — самый точный способ. Она лежит в каталоге платформы рядом с 1cv8.exe: в Windows это C:\Program Files\1cv8\<версия>\bin\rac.exe, в Linux — /opt/1cv8/x86_64/<версия>/rac.

Шаг 1. Запустите сервер администрирования ras

rac работает не напрямую с кластером, а через сервер администрирования ras. По умолчанию он слушает порт 1545. Проверьте, запущен ли он:

  • в Windows — найдите в списке служб службу сервера администрирования или процесс ras.exe в диспетчере задач;
  • в Linux — выполните ps aux | grep ras.

Если ras не запущен, для разовой работы его можно стартовать вручную:

# Linux, от пользователя usr1cv8
/opt/1cv8/x86_64/<версия>/ras cluster --daemon

# Windows, в командной строке от администратора
"C:\Program Files\1cv8\<версия>\bin\ras.exe" cluster

Без параметров ras подключается к агенту на localhost:1540 и сам слушает порт 1545. В Windows окно командной строки с ras.exe закрывать нельзя, пока вы работаете с rac.

Шаг 2. Получите GUID кластера

rac cluster list

Если rac запускается на другой машине, укажите адрес сервера администрирования первым аргументом: rac srv1c:1545 cluster list.

В выводе ищите строку cluster:

cluster                       : 4a1b7c2e-0d3f-4e5a-9b6c-1f2e3d4c5b6a
host                          : srv1c
port                          : 1541
name                          : "Локальный кластер"

Значение после двоеточия и есть идентификатор кластера. Порт в выводе подскажет, какой каталог reg_* ему соответствует.

Шаг 3. Выведите список баз с идентификаторами

rac infobase --cluster=4a1b7c2e-0d3f-4e5a-9b6c-1f2e3d4c5b6a summary list

Результат — блоки по три строки на каждую базу:

infobase : 9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b
name     : buh_main
descr    :

Строка infobase — искомый GUID. Сверьте name с именем из консоли и скопируйте значение.

Если на кластере заданы администраторы, команда без авторизации вернёт ошибку. Добавьте параметры --cluster-user=<логин> и --cluster-pwd=<пароль>.

Шаг 4. Уточните параметры базы

Чтобы убедиться, что GUID относится к нужной базе, запросите подробности:

rac infobase --cluster=<GUID кластера> info --infobase=<GUID базы> \
  --infobase-user=<пользователь 1С> --infobase-pwd=<пароль>

Команда покажет сервер СУБД и имя базы данных. Если в базе есть пользователи, нужны логин и пароль пользователя 1С с административными правами, иначе info откажет в доступе. Для summary list эти данные не требуются.

Дополнительно: GUID через список сеансов

Иногда нужно понять, в какой базе сидит конкретный пользователь. Команда rac session --cluster=<GUID кластера> list выводит сеансы, и у каждого есть строка infobase с идентификатором базы. Сопоставьте её со списком из шага 3. Если какие-то подкоманды или параметры вызывают сомнение, посмотрите встроенную справку: rac help infobase, rac help session.

Что покажут конфигуратор и сама база

Многие ищут идентификатор в конфигураторе через Справка → О программе. Там видна строка соединения вида Srvr="srv1c";Ref="buh_main";. Это адрес сервера и имя базы в кластере, но не GUID.

Из встроенного языка картина та же. Функция СтрокаСоединенияИнформационнойБазы() возвращает ту же строку с сервером и именем. Кластерный GUID средствами самой конфигурации не получить: база о нём не знает, его хранит кластер.

В типовых конфигурациях на Библиотеке стандартных подсистем есть собственный идентификатор базы. Его генерирует сама конфигурация и хранит в своих данных, он используется для интернет-поддержки и обменов. С кластерным GUID он не совпадает. Не отправляйте его в техподдержку, когда просят идентификатор базы на сервере, и не ищите по нему папку в srvinfo.

Отсюда практический вывод. Конфигуратор полезен, чтобы узнать точное имя базы и сервер, если вы подключены к базе, но не знаете, как она называется в кластере. А сам GUID берите через rac или каталог кластера.

Идентификатор базы в каталоге кластера srvinfo

Если rac недоступен, GUID можно найти прямо на диске сервера. Каталог кластера по умолчанию:

ОСТипичный путь
WindowsC:\Program Files\1cv8\srvinfo\reg_1541
Linux/home/usr1cv8/.1cv8/1C/1cv8/reg_1541

Точный путь задаётся параметром -d при запуске агента ragent. В Windows его видно в свойствах службы агента, в поле пути к исполняемому файлу. В Linux — в выводе ps aux | grep ragent.

Как сопоставить папку с базой

В каталоге reg_1541 лежат:

  • 📄 файл 1CV8Clst.lst — реестр кластера со списком зарегистрированных баз;
  • 📁 папки с именами-GUID — по одной на каждую базу;
  • служебные папки и файлы самого кластера.

Внутри реестра у каждой базы записаны рядом её GUID и имя. Найдите строку с именем базы:

# Linux
grep -o '[0-9a-f-]\{36\},"buh_main"' /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst
# Windows PowerShell
Select-String -Path "C:\Program Files\1cv8\srvinfo\reg_1541\1CV8Clst.lst" -Pattern 'buh_main' -Encoding UTF8

В найденном фрагменте GUID стоит непосредственно перед именем базы. Если шаблон ничего не вернул, откройте файл копией в текстовом редакторе и поищите имя базы вручную: формат записи у разных версий платформы может немного отличаться.

Есть и обходной приём без чтения реестра. Откройте каждую папку-GUID и посмотрите, когда менялись файлы в 1Cv8Log. Попросите пользователя зайти в нужную базу — свежая запись в журнале появится только в её папке.

Ничего не удаляйте и не редактируйте в srvinfo при работающей службе. Порча 1CV8Clst.lst выводит из строя регистрацию всех баз кластера. Чистку папок баз делайте только после остановки службы агента, когда пользователи вышли: все сеансы оборвутся. Перед этим скопируйте каталог reg_1541 целиком.

Связь GUID с базой данных на сервере СУБД

Таблицы самой базы на MS SQL Server или PostgreSQL кластерного GUID не содержат. Это часто сбивает с толку: администратор СУБД видит базу buh_main_2024, а в кластере она зарегистрирована как buh_main. Связка идёт через параметры регистрации, а не через данные.

Порядок такой:

  1. Получите список баз данных на сервере СУБД.
  2. Сопоставьте их с параметром «имя базы данных» из консоли кластера или из вывода rac infobase ... info.
  3. По имени базы в кластере возьмите GUID из rac infobase ... summary list.

Запросы для первого шага:

-- MS SQL Server
SELECT name, create_date FROM sys.databases ORDER BY name;

-- PostgreSQL
SELECT datname FROM pg_database WHERE datistemplate = false ORDER BY datname;

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

Где смотретьЧто получитеGUID базы
Консоль кластераимя, описание, СУБД, имя БДнет
rac ... summary listGUID и имяда
1CV8Clst.lst и папки srvinfoGUID и имяда
Конфигуратор, СтрокаСоединенияИнформационнойБазы()сервер и имянет
Запрос к СУБДимена баз данныхнет

Скрипт: выгрузить идентификаторы всех баз сервера

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

Bash (Linux)

#!/bin/bash
RAC=/opt/1cv8/x86_64/<версия>/rac
HOST=localhost:1545
# AUTH="--cluster-user=admin --cluster-pwd=secret"   # если на кластере есть администраторы

for CL in $($RAC $HOST cluster list | awk -F' *: *' '$1=="cluster"{print $2}'); do
  $RAC $HOST infobase --cluster=$CL $AUTH summary list \
    | awk -F' *: *' -v cl="$CL" '$1=="infobase"{id=$2} $1=="name"{print cl";"id";"$2}'
done

Сохраните в файл, дайте права chmod +x и перенаправьте вывод: ./ib_list.sh > ib_list.csv.

PowerShell (Windows)

$rac = "C:\Program Files\1cv8\<версия>\bin\rac.exe"

$clusters = & $rac cluster list | ForEach-Object {
    if ($_ -match '^cluster\s*:\s*(\S+)') { $Matches[1] }
}

$result = foreach ($cl in $clusters) {
    $id = $null
    & $rac infobase "--cluster=$cl" summary list | ForEach-Object {
        if ($_ -match '^infobase\s*:\s*(\S+)') { $id = $Matches[1] }
        elseif ($_ -match '^name\s*:\s*(.*)$') {
            [pscustomobject]@{ Cluster = $cl; Id = $id; Name = $Matches[1].Trim() }
        }
    }
}

$result | Export-Csv -Path "C:\temp\ib_list.csv" -Delimiter ';' -Encoding UTF8 -NoTypeInformation

Если имена баз на кириллице выводятся «кракозябрами», дело в кодировке консоли. Перед запуском выполните chcp 65001 или проверьте результат в CSV, а не на экране.

Запускайте выгрузку по расписанию раз в неделю и складывайте файлы с датой в имени. Когда базу перерегистрируют, GUID изменится, и по истории будет видно, когда это произошло и какая папка в srvinfo осталась бесхозной.

Пароль администратора кластера в скрипте храните так же аккуратно, как любой другой: в файле с ограниченными правами, а не в общей папке.

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

Меняется ли GUID базы после загрузки файла .dt?
Нет. Загрузка .dt меняет данные и конфигурацию, но регистрация в кластере остаётся прежней, поэтому идентификатор сохраняется.
Что будет с GUID, если удалить базу из кластера и зарегистрировать заново?
Кластер выдаст новый идентификатор. Старая папка в srvinfo с прежним журналом регистрации может остаться на диске.
Меняется ли идентификатор при переименовании базы в консоли?
Нет. Имя и описание — это свойства базы, а GUID закреплён за регистрацией и при переименовании не меняется.
Совпадает ли GUID базы при переносе на другой сервер 1С?
Нет. На новом сервере база регистрируется заново и получает свой идентификатор, даже если имя и база данных в СУБД те же.
Можно ли узнать GUID базы, имея только клиент 1С без доступа к серверу?
Нет: клиент видит только сервер и имя базы. Попросите администратора выполнить rac infobase ... summary list или выгрузить таблицу скриптом.