Перейти к основному содержимому

Инициализация приложения

примечание

Исполнять сценарий необходимо от имени пользователя postgres.

Описание сценария

Инициализация выполняется через CLI утилиты copywala командой:

copywala init <agent_name>

Где agent_name – уникальное имя агента (задается самостоятельно администратором).

При первичной инициализации:

  1. Утилита copywala генерирует уникальный идентификатор agent_id.

  2. На основании agent_name и agent_id автоматически формируется значение полного уникального наименования экземпляра агента instance_name по принципу: agent_name+_+agent_id.

    Пример:

        $ copywala init test_agent

    2026-04-07 11:41:02.712 [522766] INF copywala 1.2.3 (ab60aae1) compiled at 2026-04-03_12:38:14
    2026-04-07 11:41:02.733 [522766] INF copywala initialization complete: name="test_agent" id="019d671a-300d-7049-b98a-bcd917e545d2"

    На основе этих данных формируется instance_name:

    test_agent_019d671a-300d-7049-b98a-bcd917e545d2
Подсказка

Узнать значенияinstance_name, agent_name и agent_id можно с помощью команды:

$ copywala db info

dbuser: backup_user
dbname: postgres
version: "15.15"
db_list: First_db, demo, demo_temp, postgres, template0, template1
edition: Platform V Pangolin DB 6.7.0
system_id: "7624074065519217763"
instance_name: dbname_0198a248-0f5c-7339-b454-7301bb98ef3e
replication: standalone
replication_partners: ""
leader: ""
home: /pgdata/06/data
archive_mode: "off"
archive_command: (disabled)
wal_level: replica
user: postgres
status: stopped
size: 351539988
port: 5433

В данном примере:

dbnameagent_name_10198a248-0f5c-7339-b454-7301bb98ef3eagent_idinstance_name\overbrace{\underbrace{\text{dbname}}_{\mathrm{agent\_name}}\_\underbrace{\text{10198a248-0f5c-7339-b454-7301bb98ef3e}}_{\mathrm{agent\_id}}}^{\mathrm{instance\_name}}

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

Идентификатор сохраняется в файле /etc/pbr/pbr.agent.id (задается в copywala.yaml, параметр app.agent_id_file_path) и далее используется для однозначного распознавания конкретного экземпляра базы данных и агентского приложения. Например, все резервные копии и WAL-файлы этого экземпляра будут сохраняться в отдельной подпапке хранилища с названием, соответствующим instance_name.

Важно

Если в системе установлены оба сервиса — pbr-agent и copywala, пути к файлу pbr.agent.id в конфигурационных файлах этих сервисов должны совпадать. Любое изменение пути в одном файле необходимо также внести в другой:

  • pbr-agent.yaml
  • copywala.yaml

Если пользователи pbr-agent и copywala разные, то нужно настроить права доступа к файлу pbr.agent.id (при инициализации — на запись и чтение, для работы — на чтение).

app:
agent_id_file_path: "path/to/id/file"

Последовательность выполнения

Выполните инициализацию приложения через CLI компонента copywala командой copywala init <наименование агента / экземпляра БД>.

Результат

В результате выполнения команды будет выведено:

$ copywala init dbmain
2025-08-08 17:24:53.876 INF copywala initialization complete: name="dbmain" id="01988a12-06bf-7f0b-87f8-e290972fe614"

Исключительные сценарии

Будет выведено соответствующее сообщение для случаев:

  • Ошибка при повторной инициализации — идентификатор экземпляру уже был сгенерирован ранее:

      $ copywala init db1
    2025-08-08 17:23:24.162 ERR app: init app id info failed err="app id already initialized"
    2025-08-08 17:23:24.273 WRN copywala already initialized: name="db1" id="01988444-1801-77b8-90de-bf03df71df55"
  • Ошибка при загрузке файла конфигурации.

  • Ошибка при инициализации логера.