Восстановление базы данных ClickHouse

Проверка соединения с S3-совместимым хранилищем

Чтобы проверить соединение:

  1. Установите переменные подключения к S3-совместимому хранилищу, если они не были заданы на этапе настройки Backup Wrapper. Для этого выполните команды:

    export REMOTE_STORAGE=s3
    export S3_ENDPOINT="<aws_endpoint>"
    export S3_BUCKET="<bucket>"
    export S3_PATH="<path_to_backups>"
    export S3_ACCESS_KEY="<access_key>"
    export S3_SECRET_KEY="<secret_key>"
    export S3_FORCE_PATH_STYLE=true
    export S3_DISABLE_SSL=true

    Здесь:

    • <aws_endpoint> — URL-адрес S3-совместимого хранилища, например, http://your-s3-endpoint:9000

    • <bucket> — название контейнера (bucket) для хранения резервных копий.

    • <path_to_backups> — путь к директории внутри контейнера (bucket), где будут храниться резервные копии.

    • <aws_access_key> — идентификатор ключа доступа к S3-совместимому хранилищу.

    • <aws_secret_key> — секретный ключ доступа к S3-совместимому хранилищу.

  2. Проверьте доступ утилиты wal-g к S3-совместимому хранилищу, выполнив команду:

    clickhouse-backup list remote

Восстановление базы данных

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

Восстановление из последней резервной копии

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

clickhouse-backup restore_remote LATEST

Восстановление из конкретной резервной копии

Чтобы восстановить базу данных:

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

    clickhouse-backup list remote
  2. Восстановите базу данных. Способ восстановления зависит от типа резервной копии:

    • FULL

    • DIFF

    Для восстановления резервной FULL-копии выполните команду:

    clickhouse-backup restore_remote <full_backup_name>

    Здесь:

    • <full_backup_name> — название резервной FULL-копии, например, full-2026-01-27T10-00-00.

    Для восстановления резервной DIFF-копии выполните команду:

    clickhouse-backup restore_remote <diff_backup_name>

    Здесь:

    • <diff_backup_name> — название резервной DIFF-копии, например, inc-2026-01-28T10-00-00.

Восстановление данных в другую базу данных

Чтобы восстановить данные в новую базу данных:

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

    clickhouse-backup list remote
  2. Восстановите данные в новую базу данных, выполнив команду:

    clickhouse-backup restore_remote --restore-database-mapping <old_db>:<new_db> <backup_name>

    Здесь:

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

    • <old_db> — название существующей базы данных.

    • <new_db> — название новой базы данных.

Восстановление данных в другую таблицу

Чтобы восстановить данные в новую таблицу:

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

    clickhouse-backup tables --remote-backup <backup_name>

    Здесь:

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

  2. Восстановите данные в новую таблицу, выполнив команду:

    clickhouse-backup restore_remote --restore-table-mapping <old_table>:<new_table> <backup_name>

    Здесь:

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

    • <old_table> — название существующей таблицы.

    • <new_table> — название новой таблицы.

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

Чтобы провести проверку:

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

    clickhouse-client -q "SELECT count() FROM <database_table>"

    Здесь:

    • <database_table> — название восстанавливаемой базы данных и таблицы, например, your_database.your_table.

  2. Проверьте данные в системных таблицах, выполнив команду:

    clickhouse-client -q "SELECT count() FROM system.parts WHERE active"
    clickhouse-client -q "SELECT database, table, count() FROM system.parts WHERE active GROUP BY database, table"
  3. Проверьте наличие ошибок в логах. Отобразить логи с ошибками можно с помощью команды:

    grep -i error /var/log/clickhouse-server/clickhouse-server.log | tail -50
  4. При необходимости оптимизируйте восстановленные таблицы, осуществив принудительное слияние (merge) всех частей данных. Для этого выполните команду:

    clickhouse-client -q "OPTIMIZE TABLE <table> FINAL"

    Здесь:

    • <table> — название таблицы базы данных.

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

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