Устранение проблем при восстановлении внешних баз данных

PostgreSQL: отсутствуют файлы WAL-архивации

Проявление: при попытке восстановления базы данных выводится следующее сообщение:

FATAL: could not locate a valid checkpoint record

Причина: отсутствуют файлы WAL-архивации, которые необходимы для корректного восстановления базы данных.

Решение: проверьте, что параметр restore_command настроен корректно.

PostgreSQL: конфликт версий истории базы данных

Проявление: при попытке восстановления базы данных выводится следующее сообщение:

FATAL: requested timeline X is not a child of this server's history

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

Решение: добавьте в файл конфигурации postgresql.conf следующую строку:

recovery_target_timeline = 'latest'

PostgreSQL: отказ в доступе к PGDATA

Проявление: при попытке восстановления базы данных выводится следующее сообщение:

permission denied

Причина: для директории файлов PostgreSQL (PGDATA) указан неверный владелец.

Решение: переопределите владельца директории файлов PostgreSQL, выполнив команду:

chown -R postgres:postgres /<path_to_pgdata>

Здесь:

  • <path_to_pgdata> — путь к директории с данными PostgreSQL, например, /var/lib/pgsql/16/data.

ClickHouse: разрыв в цепочке резервных копий

Проявление: при восстановлении базы данных из резервной FULL- или связанной DIFF-копии выводится следующее сообщение:

no such file or directory

Причина: произошел разрыв цепочки резервных копий: повреждена FULL-копия или связывающая DIFF-копия.

Решение: доступные способы решения проблемы:

  • Если повреждена резервная FULL-копия, то восстановите базу данных из предыдущей рабочей FULL-копии.

  • Если повреждена связывающая DIFF-копия, то восстановите базу данных вручную последовательно.

Чтобы решить проблему с поврежденной резервной FULL-копией:

  1. Проверьте список резервных копий, выполнив команду:

    clickhouse-backup list remote
    Пример списка резервных копий
    full-2026-01-27   remote                        all:14.35GiB
    inc-2026-01-28    remote   +full-2026-01-27     all:2.43GiB
    inc-2026-01-29    remote   +full-2026-01-27     all:2.28GiB

    В третьем столбце отображается название резервной FULL-копии, с которой связана DIFF-копия. Например, +full-2026-01-27.

  2. Если резервная FULL-копия отсутствует, то все связанные DIFF-копии становятся недействительными. Необходимо восстановить базу данных из предыдущей резервной FULL-копии.

Чтобы решить проблему с поврежденной DIFF-копией в цепочке:

  1. Очистите локальные резервные копии, выполнив команду:

    clickhouse-backup delete local --all
  2. Проверьте список резервных копий, выполнив команду:

    clickhouse-backup list remote
    Пример списка резервных копий
    full-2026-01-27   remote                        all:14.35GiB
    inc-2026-01-28    remote   +full-2026-01-27     all:2.43GiB
    inc-2026-01-29    remote   +full-2026-01-27     all:2.28GiB

    В третьем столбце отображается название резервной FULL-копии, с которой связана DIFF-копия. Например, +full-2026-01-27.

  3. Восстановите базу данных по порядку из каждой резервной копии, начиная с FULL-копии. Пример пошагового восстановления:

    clickhouse-backup restore_remote full-2026-01-27T10-00-00
    clickhouse-backup restore_remote inc-2026-01-28T10-00-00
    clickhouse-backup restore_remote inc-2026-01-29T10-00-00

ClickHouse: ошибка восстановления данных в существующую таблицу

Проявление: при попытке восстановить данные в конкретную таблицу базы данных выводится следующее сообщение:

DB::Exception: Table already exists

Причина: таблица, в которую восстанавливаются данные, уже существует.

Решение: доступны следующие варианты решения:

  • Удалить таблицу вручную.

  • Добавить к команде восстановления базы данных флаг --rm. Например:

    clickhouse-backup restore_remote --rm <backup_name>

    Здесь:

    • <backup_name> — название резервной копии.

ClickHouse: ошибка отключения таблицы

Проявление: при попытке восстановления базы данных выводится следующее сообщение:

Code: 243. DB::Exception: Cannot detach

Причина: таблица восстанавливаемой базы данных используется сторонним приложением.

Решение: остановите все приложения, которые посылают запросы к таблицам восстанавливаемой базы данных.

Была ли полезна эта страница?

Обратная связь