Настройка резервного копирования из кластера системы
Данный сценарий подойдет, если резервное копирование внешних баз данных настраивается из кластера системы.
Требования
-
Настроены базы данных PostgreSQL и ClickHouse для работы с резервными копиями.
-
S3-совместимое хранилище для хранения резервных копий, например: MinIO, AWS S3, Yandex Object Storage.
-
Доступ к утилитам kubectl и evoctl.
Настройка резервного копирования
-
Подключитесь к кластеру.
-
Подключитесь к master-узлу или машине, с которой производилась установка системы.
-
Настройте резервное копирование с помощью одной из команд в зависимости от сценария:
-
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-совместимому хранилищу.
-
-
Проверьте, что контроллер CronJob был корректно создан, с помощью команды:
kubectl get cronjob -n <namespace> -l app.kubernetes.io/name=external-backupЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Проверьте, что секрет был корректно создан, с помощью команды:
kubectl get secret -n <namespace> -l app.kubernetes.io/name=external-backupЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
Работа с резервными копиями баз данных
Доступные операции:
| Все команды утилиты evoctl необходимо выполнять на master-узле или машине, с которой производилась установка системы. |
Просмотр статуса резервного копирования
Чтобы посмотреть статус резервного копирования, выполните команду:
evoctl instance backup info -n <namespace>
Здесь:
-
<namespace>— название пространства имен, в котором установлена система.
Ручной запуск резервного копирования
Чтобы запустить резервное копирование вручную:
-
Подключитесь к кластеру.
-
Создайте задачу (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>— название задачи резервного копирования.
-
-
Проверьте статус созданной задачи, выполнив команду:
kubectl get jobs -n <namespace> -l app.kubernetes.io/name=external-backupЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
При необходимости проверьте логи задачи резервного копирования, выполнив команду:
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>— название базы данных.
Была ли полезна эта страница?