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

    Введение

    Обеспечивает возможности физического резервного копирования и восстановления на основе хранилища для гарантии безопасности данных. Поддерживается ручной запуск резервного копирования и восстановление на новые экземпляры.

    Процедура

    CLI
    Web Console

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

    # Пример: Настройка хранилища резервного копирования для экземпляра 'my-pg-instance'
    kubectl patch postgresql my-pg-instance -n my-namespace --type='merge' -p '
    spec:
      backup:
        retainDay: 7
        storage:
          name: my-s3-config
          bucket: my-backup-bucket
          namespace: storage-namespace
    '

    Создание резервной копии

    # Пример: Создание резервной копии с именем 'my-backup' для кластера 'my-pg-cluster'
    cat <<EOF | kubectl create -f -
    apiVersion: middleware.alauda.io/v1
    kind: PostgresBackup
    metadata:
      name: my-backup
      namespace: my-namespace
    spec:
      cluster: my-pg-cluster
      executeNode: my-pg-cluster-0  # Необязательно: указать pod для выполнения резервного копирования
    EOF

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

    kubectl get postgresbackup <backup-name> -n <namespace> -o yaml

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

    cat <<EOF | kubectl create -f -
    apiVersion: middleware.alauda.io/v1
    kind: PostgresRestore
    metadata:
      name: <restore-instance-name>
      namespace: <namespace>
    spec:
      backupCluster:
        name: <backup-pg-cluster-name>
        uid: <backup-pg-cluster-uid>
        storage:
          name: <storage-name>
          namespace: <storage-namespace>
          bucket: <s3-bucket-name>
      targetCluster: |
        apiVersion: acid.zalan.do/v1
        kind: postgresql
        metadata:
          name: <new-instance-name>
          namespace: <new-instance-namespace>
        spec:
          enableExporter: true
          enablePgpool2: false
          numberOfInstances: 2
          postgresql:
            version: "16"
          resources:
            limits:
              cpu: "1"
              memory: 2Gi
            requests:
              cpu: "1"
              memory: 2Gi
          teamId: ACID
          volume:
            size: 20Gi
            storageClass: sc-topolvm
      timestamp: "2023-07-26T14:36:38+00:00"  # Точка времени для восстановления
    EOF

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

    Описание полей статуса резервного копирования:

    ПолеОписание
    backupNameИмя файла резервной копии
    clusterUidУникальный идентификатор кластера
    configBackupStorageКонфигурация хранилища резервного копирования
    executeNodeУзел, выполняющий резервное копирование
    finishLsnПозиция LSN в конце резервного копирования
    finishTimeВремя завершения резервного копирования
    lastModifiedВремя последнего изменения резервной копии
    pgVersionВерсия PostgreSQL
    startLsnПозиция LSN в начале резервного копирования
    startTimeВремя начала резервного копирования
    stateСтатус резервного копирования

    Меры предосторожности

    1. Конфигурация хранилища для резервного копирования должна быть выполнена до создания резервной копии.
    2. Операция восстановления создаст новый экземпляр PostgreSQL.
    3. Резервные копии будут автоматически удалены после истечения срока хранения.
    4. Не выполняйте операции записи в исходном кластере во время процесса восстановления.
    5. Убедитесь, что класс хранилища целевого кластера совместим с классом хранилища исходного кластера.
    6. Проверьте наличие достаточного свободного места в хранилище перед началом резервного копирования.
    7. Регулярно тестируйте процедуры восстановления для проверки валидности резервных копий.
    8. Рассмотрите возможность включения шифрования резервных копий для чувствительных данных.