• Русский
  • Резервное копирование и восстановление

    Резервное копирование и восстановление базы данных — важные функции для обеспечения безопасности данных и непрерывности бизнеса. Регулярное создание резервных копий позволяет быстро восстановить данные в случае их потери, повреждения или ошибок в работе, минимизируя тем самым перебои в работе и потерю данных.

    Предварительные требования

    Перед выполнением резервного копирования необходимо указать место хранения. Вы можете выбрать один из следующих двух способов.

    • Persistent Volume Claim (PVC, Kubernetes PersistentVolumeClaim): Persistent Volume Claim инкапсулирует конфигурацию запроса на ресурсы хранения и автоматически подбирает подходящие persistent volumes в кластере на основе запрошенного режима доступа, размера хранилища и другой информации.

    • Внешнее хранилище S3: S3 (Amazon Simple Storage Service) — это сервис объектного хранения, предоставляемый Amazon. Если необходимо выполнять резервное копирование в собственный S3 bucket, пожалуйста, подтвердите с администратором, что S3 хранилище интегрировано в ваш проект.

    Процедура

    CLI
    Web Console
    1. Настройка места хранения
    • Использование PVC для хранения

      kubectl patch mysql -n <namespace> <name> --type='merge' --patch '
      spec:
        pxc:
          backup:
            storages:
              <storageName>:
                type: filesystem
                volume:
                  persistentVolumeClaim:
                    accessModes:
                      - ReadWriteOnce
                    resources:
                      requests:
                        storage: <size>Gi
                    storageClassName: <storageClass>
    • Использование S3 для хранения

      • Создайте секрет S3

        kubectl -n <namespace> create secret generic <backupSecretName> --from-literal=AWS_ACCESS_KEY_ID=$(accessKeyId) --from-literal=AWS_SECRET_ACCESS_KEY=$(secretAccessKey)
      • Настройте хранилище S3

        kubectl patch mysql -n $namespace $name --type='merge' --patch '
        spec:
          pxc:
            backup:
              storages:
                <storageName>:
                  type: s3
                  s3:
                    bucket: <bucket>
                    credentialsSecret: <backupSecretName>
                    endpointUrl: <endpointUrl>
    1. Автоматическое резервное копирование Добавьте конфигурацию автоматического резервного копирования в spec.pxc.backup CR, где поле schedule определяет цикл резервного копирования. Поле <storageName> соответствует имени хранилища резервных копий, созданному на шаге 1.

      kubectl patch mysql -n $namespace $name --type='merge' --patch '
      spec:
        pxc:
          backup:
            schedule:
            - keep: 5
              name: daily-backup
              schedule: 0 0 * * *
              storageName: <storageName>
      '
    2. Ручное резервное копирование

      kubectl -n <namespace> apply -f - <<EOF
      apiVersion: pxc.percona.com/v1
      kind: PerconaXtraDBClusterBackup
      metadata:
        labels:
          cluster: <name>
          trigger.type: manual
        name: <backupName>
        namespace: <namespace>
      spec:
        pxcCluster: <name>
        storageName: <storageName>
      EOF
    3. Проверка статуса резервного копирования

      kubectl get PerconaXtraDBClusterBackup -n <namespace> <backupName>
    4. Восстановление из резервной копии

      kubectl -n <namespace> apply -f - <<EOF
      apiVersion: pxc.percona.com/v1
      kind: PerconaXtraDBClusterRestore
      metadata:
        labels:
          cluster: <name>
        name: <restoreName>
        namespace: <namespace>
      spec:
        backupName: <backupName>
        pxcCluster: <name>
      EOF