Инициализация репозитория для хранения служебной информации в БД
Исполнять сценарий необходимо от имени пользователя 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)"Решение
- Некорректно указаны учетные данные; их следует перепроверить.
- Отсутствие разрешений на подключение текущего клиента в конфигурационном файле базы данных (
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.