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

    Введение

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

    Процедура

    CLI
    Web Console

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

    # Example: Configure backup storage for instance '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
    '

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

    # Example: Create a backup named 'my-backup' for cluster '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  # Optional: Specify the pod to execute the backup
    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"  # Point-in-time to restore
    EOF

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

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

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

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

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