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

Инициализация репозитория для хранения служебной информации в БД

примечание

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

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

CopyWala в экземпляре базы данных хранит информацию о задачах и результатах резервного копирования данного экземпляра. Информация сохраняется в базе данных, которая указана в конфигурационном файле copywala.yaml в параметре pbra_db. Если этот параметр отсутствует, используется база данных target_db. Рекомендуется размещать данную служебную информацию в специальной служебной базе данных postgres, выделив отдельную схему с названием pbr.

Для правильной организации структуры репозитория для хранения служебной информации существует команда copywala db init-repository.

примечание

Инициализация репозитория не является обязательной процедурой и происходит автоматически при запуске первого снятия резервной копии обслуживаемого экземпляра БД (команда create-backup).

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

Инициируйте создание репозитория для хранения служебной информации через CLI утилиты copywala командой copywala db init-repository.

Результат

При выполнении команды отображаются две ключевые части информации:

  • текущая версия миграций репозитория
  • информационное сообщение
2025-11-11 14:01:43.124 INF init-repository: migrations version: 2025092616200017
2025-11-11 14:01:43.235 INF init-repository: backups repository is ready

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

  • Ошибка подключения к БД

    2025-11-11 14:01:36.761 ERR failed to init repository in db err="db: open connection failed: failed to connect to `user=username database=postgres`: 127.0.0.1:5433 (localhost): server error: FATAL: no pg_hba.conf entry for host \"127.0.0.1\", user \"username\", database \"postgres\", SSL encryption (SQLSTATE 28000)"

    Решение

    1. Некорректно указаны учетные данные; их следует перепроверить.
    2. Отсутствие разрешений на подключение текущего клиента в конфигурационном файле базы данных (pg_hba.conf). Для устранения неполадки необходимо добавить разрешение на подключение указанного клиента в файл конфигурации pg_hba.conf.
  • Ошибка получения версии миграций (поврежденная таблица db_migrations)

    2025-11-11 14:14:39.198 ERR failed to init repository in db err="failed to get schema version: ERROR: column \"version\" does not exist (SQLSTATE 42703) in line 0: SELECT version, dirty FROM \"pbr\".\"db_migrations\" LIMIT 1"

    Решение:

    Пересоздайте базу данных pbr, а затем повторно инициализируйте репозиторий.

  • Ошибка удаления таблицы после инициализации

    ERR failed to init repository in db err=«failed to apply database migrations: Dirty database version 2025011414280010. Fix and force version.»

    Решение:

    Удалите и заново создайте базу данных pbra (или удалите схему вместе со всеми таблицами в ней каскадом и вновь создайте ее). Затем проведите повторную инициализацию репозитория.

  • Ошибка нехватки прав на чтение служебных таблиц

    [postgres@pbra-9a0b3b80 pbr] $ copywala db init-repository
    2025-12-11 07:26:41.345 INF copywala v1.2.1 (870e6c7) compiled at 2025-12-09_11:28:41
    2025-12-11 07:26:41.451 ERR failed to get schema version package=repository err=“ERROR: permission denied for table db_migrations (SQLSTATE 42501) in line 0: SELECT version, dirty FROM \”pbr\”.\”db_migrations\” LIMIT 1”
    2025-12-11 07:26:41.672 ERR failed to init repository in db err=“failed to get schema version: ERROR: permission denied for table db_migrations (SQLSTATE 42501) in line 0: SELECT version, dirty FROM \”pbr\”.\”db_migrations\” LIMIT 1”

    Решение:

    Выдайте права на чтение и изменение данных пользователю backup_user на созданные технические таблицы:

    • db_migrations;
    • pbr_backup_policies;
    • pbr_backup_tasks;
    • pbr_backups;
    • pbr_recovery_tasks;
    • pbr_retention_policies;
    • pbr_sync_backups;
    • pbr_sync_tasks.