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

В данном разделе описана настройка резервного копирования баз данных PostgreSQL и ClickHouse, развернутых в кластере Kubernetes. Данный вариант резервного копирования подходит, если база данных:

  • развернута через стандартную установку системы;

  • управляется helm-чартами в кластере Kubernetes, в котором установлена система;

  • является частью инфраструктуры системы.

Требования

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

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

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

Вы можете настроить резервное копирование следующими способами:

Интерактивная настройка

  1. Подключитесь к кластеру, в котором развернута база данных.

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

  3. Перейдите в директорию установщика системы. По умолчанию /opt/r-vision.

  4. Запустите процес настройки резервного копирования, выполнив команду:

    evoctl instance backup enable -n <namespace>

    Здесь:

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

    Откроется мастер интерактивной настройки резервного копирования.

  5. Выберите тип базы данных.

    Перемещение по списку опций осуществляется с помощью клавиш со стрелками вверх и вниз. Чтобы выбрать опцию или отменить ее выбор, нажмите на клавишу SPACE.

  6. Выберите расписание резервного копирования.

    backup config 2

    • Daily at 2:00 AM — ежедневно в 02:00. Рекомендуемый вариант.

    • Daily at 4:00 AM — ежедневно в 04:00.

    • Weekly (Sunday at midnight) — еженедельно, в воскресенье в 00:00.

    • Enter custom cron expression — свое расписание в cron-формате.

      Не рекомендуется настраивать резервное копирование чаще одного раза в сутки.
    Время в расписании указывается относительно часового пояса в кластере Kubernetes, в котором установлена платформа.
  7. Введите URL-адрес для подключения к S3-совместимому хранилищу.

    backup config 3

  8. Введите имя корзины (bucket).

    backup config 4

  9. Введите регион S3-совместимого хранилища.

    backup config 5

  10. Введите access key для подключения к S3-совместимому хранилищу.

    backup config 6

  11. Введите secret key для подключения к S3-совместимому хранилищу.

    backup config 7

  12. Введите secret key повторно для его подтверждения. После ввода данных установщик проверит соединение с S3-совместимым хранилищем.

  13. Выберите способ применения конфигурации резервного копирования.

    backup config 8

    • Show commands for manual execution (default) — показать команды для применения конфигурации вручную. Рекомендуемый вариант.

    • Execute helm upgrade automatically now — применить конфигурацию автоматически.

  14. Если вы выбрали вариант применения кофигурации Show commands for manual execution, то примените конфигурацию вручную с помощью команды helm.

Настройка с помощью командной строки

  1. Подключитесь к кластеру, на котором развернута база данных.

  2. Выполните команду настройки конфигурации в зависимости от сценария использования:

    • Только ClickHouse:

      evoctl instance backup enable \
        --namespace <namespace> \
        --ch-backup \
        --s3-endpoint <endpoint> \
        --s3-bucket <bucket> \
        --s3-access-key <access_key> \
        --s3-secret-key <secret_key>
    • Только PostgreSQL:

      evoctl instance backup enable \
        --namespace <namespace> \
        --pg-backup \
        --s3-endpoint <endpoint> \
        --s3-bucket <bucket> \
        --s3-access-key <access_key> \
        --s3-secret-key <secret_key>
    • Обе базы данных через один S3-bucket:

      evoctl instance backup enable \
        --namespace <namespace> \
        --both \
        --s3-endpoint <endpoint> \
        --s3-bucket <bucket> \
        --s3-region <region> \
        --s3-access-key <access_key> \
        --s3-secret-key <secret_key> \
        --auto-upgrade
    • Обе базы данных через разные S3-bucket:

      evoctl instance backup enable \
        --namespace <namespace> \
        --both \
        --s3-endpoint <endpoint> \
        --s3-access-key <access_key> \
        --s3-secret-key <secret_key> \
        --ch-bucket <ch_bucket> \
        --pg-bucket <pg_bucket>
    • Обе базы данных через разные S3-совместимые хранилища:

      • Настройка ClickHouse:

        evoctl instance backup enable \
          --namespace <namespace> \
          --ch-backup \
          --s3-endpoint <endpoint> \
          --s3-bucket <ch_bucket> \
          --s3-access-key <access_key> \
          --s3-secret-key <secret_key>
      • Настройка PosgreSQL:

        evoctl instance backup enable \
          --namespace <namespace> \
          --pg-backup \
          --s3-endpoint <endpoint> \
          --s3-bucket <pg_bucket> \
          --s3-access-key <access_key> \
          --s3-secret-key <secret_key>

    Здесь:

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

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

    • <region> — код региона, в котором развернуты и выполняются ваши сервисы и функци AWS, например, ru-central1-a.

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

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

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

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

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

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

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

Все действия необходимо производить в кластере Kubernetes, в котором развернута база данных. Подробности о подключении к кластеру приведены в разделе Подключение к кластеру.

Изменение расписания

Не рекомендуется настраивать резервное копирование чаще одного раза в сутки.

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

  • ClickHouse:

    evoctl instance backup configure \
      --namespace <namespace> \
      --ch-only \
      --schedule "<schedule>"
  • PostgreSQL:

    evoctl instance backup configure \
      --namespace <namespace> \
      --pg-only \
      --schedule "<schedule>"

Здесь:

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

  • <schedule> — новое расписание в cron-формате. Например, 30 4 * * * — ежедневно в 4:30.

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

Чтобы изменить access key и secret key, выполните команду для изменения данных для подключения к S3-совместимому хранилищу:

evoctl instance backup configure \
  --namespace <namespace> \
  --s3-access-key <new_access_key> \
  --s3-secret-key <new_secret_key>

Здесь:

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

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

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

Вы можете изменить другие параметры подключения к S3-совместимому хранилищу, указав их в виде флагов в команде evoctl instance backup configure. Например:

evoctl instance backup configure \
  --namespace <namespace> \
  --s3-endpoint <endpoint>
  --s3-bucket <bucket>

Здесь:

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

  • <endpoint> — URL-адрес S3-совместимого хранилища.

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

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

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

evoctl instance backup info -n <namespace>

Здесь:

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

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

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

  • Отключить резервное копирование полностью:

    evoctl instance backup disable -n <namespace>
  • Отключить только резервное копирование ClickHouse:

    evoctl instance backup disable -n <namespace> --ch-only
  • Отключить только резервное копирование PostgreSQL:

    evoctl instance backup disable -n <namespace> --pg-only

Здесь:

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

Вы можете открыть справку по команде отключения резервного копирования, выполнив команду:

evoctl instance backup disable --help

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

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

  1. Выполните резервное копирование вручную с помощью одной из команд:

    • Для ClickHouse:

      kubectl create job \
        --from=cronjob/clickhouse-backup-shard0 \
        manual-ch-$(date +%s) \
        -n <namespace>
    • Для PostgreSQL:

      kubectl create job \
        --from=cronjob/postgresql-backup-client \
        manual-pg-$(date +%s) \
        -n <namespace>
  2. Проверьте статус задания (job) резервного копирования, выполнив команду:

    kubectl get jobs -n <namespace> | grep backup

Здесь:

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

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

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

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

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