Настройка резервного копирования из кластера системы

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

Требования

  • Настроены базы данных PostgreSQL и ClickHouse для работы с резервными копиями.

  • S3-совместимое хранилище для хранения резервных копий, например: MinIO, AWS S3, Yandex Object Storage.

  • Доступ к утилитам kubectl и evoctl.

Настройка резервного копирования

  1. Подключитесь к кластеру.

  2. Подключитесь к master-узлу или машине, с которой производилась установка системы.

  3. Настройте резервное копирование с помощью одной из команд в зависимости от сценария:

    • ClickHouse на одном сервере:

      evoctl instance backup enable \
        --namespace <namespace> \
        --external \
        --name ch-main \
        --ch-backup \
        --wrapper-addr "<wrapper_addr>" \
        --auth-user <auth_user> \
        --auth-password '<auth_password>' \
        --s3-endpoint "<s3_endpoint>" \
        --s3-bucket <s3_bucket> \
        --s3-access-key <s3_access_key> \
        --s3-secret-key '<s3_secret_key>'
    • ClickHouse с несколькими шардами. Для каждого шарда ClickHouse включите резервное копирование, выполнив команду:

      evoctl instance backup enable \
        --namespace <namespace> \
        --external \
        --name <shard_name> \
        --ch-backup \
        --wrapper-addr "<wrapper_addr>" \
        --auth-user <auth_user> \
        --auth-password '<auth_password>' \
        --s3-endpoint "<s3_endpoint>" \
        --s3-bucket <s3_bucket> \
        --s3-access-key <s3_access_key> \
        --s3-secret-key '<s3_secret_key>'
      Для каждого шарда ClickHouse укажите свой адрес подключения к утилите wrapper.
    • PostgreSQL:

      evoctl instance backup enable \
        --namespace <namespace> \
        --external \
        --name pg-main \
        --pg-backup \
        --wrapper-addr "<wrapper_addr>" \
        --auth-user <auth_user> \
        --auth-password '<auth_password>' \
        --s3-endpoint "<s3_endpoint>" \
        --s3-bucket <s3_bucket> \
        --s3-access-key <s3_access_key> \
        --s3-secret-key '<s3_secret_key>'

      Здесь:

      • <namespace> — название пространства имен, в котором установлена система.

      • <shard_name> — название шарда ClickHouse.

      • <wrapper_addr> — адрес подключения к утилите wrapper, указанный при настройке ее конфигурации, например, http://ch-server.company.local:8080.

      • <auth_user> — логин, указанный при настройке конфигурации утилиты wrapper.

      • <auth_password> — пароль, указанный при настройке конфигурации утилиты wrapper.

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

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

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

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

    После выполнения команды создадутся контроллер CronJob для управления резервными копированием и секрет с данными подключения к S3-совместимому хранилищу.

  4. Проверьте, что контроллер CronJob был корректно создан, с помощью команды:

    kubectl get cronjob -n <namespace> -l app.kubernetes.io/name=external-backup

    Здесь:

    • <namespace> — название пространства имен, в котором установлена система.

  5. Проверьте, что секрет был корректно создан, с помощью команды:

    kubectl get secret -n <namespace> -l app.kubernetes.io/name=external-backup

    Здесь:

    • <namespace> — название пространства имен, в котором установлена система.

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

Доступные операции:

Все команды утилиты evoctl необходимо выполнять на master-узле или машине, с которой производилась установка системы.

Просмотр статуса резервного копирования

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

evoctl instance backup info -n <namespace>

Здесь:

  • <namespace> — название пространства имен, в котором установлена система.

Ручной запуск резервного копирования

Чтобы запустить резервное копирование вручную:

  1. Подключитесь к кластеру.

  2. Создайте задачу (job) из контроллера CronJob резервного копирования, выполнив команду:

    kubectl create job \
      --from=cronjob/<cronjob_name> \
      <backup_name>-$(date +%Y%m%d-%H%M%S) \
      -n <namespace>

    Здесь:

    • <namespace> — название пространства имен, в котором установлена система.

    • <cronjob_name> — название контроллера CronJob, созданного на этапе настройки.

    • <backup_name> — название задачи резервного копирования.

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

    kubectl get jobs -n <namespace> -l app.kubernetes.io/name=external-backup

    Здесь:

    • <namespace> — название пространства имен, в котором установлена система.

  4. При необходимости проверьте логи задачи резервного копирования, выполнив команду:

    kubectl logs job/<job_name> -n <namespace>

    Здесь:

    • <namespace> — название пространства имен, в котором установлена система.

    • <job_name> — название созданной задачи (job).

Отключение резервного копирования

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

  • Отключить резервное копирование всех внешних баз данных:

    evoctl instance backup disable -n <namespace> --external --name all
  • Отключить резервное копирование конкретной внешней базы данных:

    evoctl instance backup disable -n <namespace> --external --name <db_name>

Здесь:

  • <namespace> — название пространства имен, в котором установлена система.

  • <db_name> — название базы данных.

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

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