Clona un cluster di database in un singolo server utilizzando un backup di Cloud Storage

Questa pagina mostra come clonare un cluster di database in un singolo server utilizzando un backup di Cloud Storage.

Il seguente flusso di lavoro illustra i passaggi di clonazione:

  1. Configura il file pgbackrest.conf per accedere al backup di Cloud Storage.
  2. Utilizza i comandi pgBackRest per verificare che sia possibile accedere ai backup di origine.
  3. Utilizza i comandi pgBackRest per ripristinare il backup sul server di destinazione.

Prima di iniziare

  • Accedi al percorso completo del bucket Cloud Storage in cui risiede il backup del cluster del database di origine. Si tratta dello stesso percorso utilizzato per creare la risorsa BackupPlan per il cluster del database di origine.
  • Viene creato un singolo cluster di database AlloyDB Omni di destinazione del server. Per ulteriori informazioni sull'installazione di AlloyDB Omni su Kubernetes, consulta Installa AlloyDB Omni.
  • Assicurati di aver eseguito l'accesso al database come utente postgres.

Configura il file pgBackRest sul server di destinazione

Configura il file pgBackRest per consentire al cluster di database di destinazione di accedere al bucket Cloud Storage in cui si trovano i backup di origine.

  1. Nel server di destinazione, vai alla directory alloydb-data.

  2. Crea un file di configurazione pgBackRest per accedere ai backup archiviati in Cloud Storage:

      $ cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data-restored
      pg1-socket-path=/tmp
      pg1-user=pgbackrest
      [global]
      log-path=/obs/pgbackrest
      log-level-file=info
      repo1-type=gcs
      repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME
      repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH
      repo1-storage-ca-file=/etc/ssl/certs/ca-certificates.crt
      repo1-retention-full=9999999
      repo1-gcs-key-type=auto

    Sostituisci quanto segue:

    • GCS_SOURCE_BACKUP_BUCKET_NAME: il nome del bucket Cloud Storage pgBackRest che hai creato nel cluster del database di origine. Non si tratta dell'URL completo del bucket; non anteporre il nome del bucket con gs://.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: il percorso della directory in cui l'operatore AlloyDB Omni scrive i backup, all'interno del bucket Cloud Storage per il cluster del database di origine. Il percorso deve essere assoluto e deve iniziare con /.

    repo1-gcs-key-type è impostato su auto per utilizzare l'account di servizio dell'istanza. Per ulteriori informazioni sulle altre opzioni, consulta Opzione Tipo di chiave del repository GCS.

Verifica i backup dell'origine nel server di destinazione

Accedi al server di destinazione ed esegui i comandi pgBackRest per verificare che i backup del cluster del database di origine siano accessibili sul server di destinazione:

Docker

sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Podman

sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Sostituisci CONTAINER_NAME con il nome di un nuovo contenitore AlloyDB Omni, ad esempio my-omni-1.

Di seguito è riportato un esempio di risposta:

    stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F

I timestamp nella risposta vengono utilizzati per ripristinare il backup completo o per ripristinare da un punto nel tempo della finestra di recupero.

Ripristina il backup nel server di destinazione

Dopo aver identificato il backup o un punto in cui vuoi eseguire il ripristino, esegui i comandi pgBackRest sul server di destinazione. Per ulteriori informazioni su questi comandi, consulta Comando Restore.

Di seguito sono riportati alcuni comandi di ripristino pgBackRest di esempio:

  • Ripristina da un backup

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
  • Ripristina da un momento specifico

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

Copia i dati sul server di destinazione

Una volta completato il comando di ripristino, puoi copiare i dati dalla directory temporanea /mnt/disks/pgsql/data-restored alla directory /alloydb-data/data corrente.

  1. Nel server di destinazione, arresta il servizio di database:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. Come best practice, rinomina la directory di dati corrente con un altro nome:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Rinomina la directory temporanea data-restored con il nome della directory di dati corrente:

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. Aggiorna il valore pg1-path nel file postgresql.auto.conf per caricare i dati ripristinati:

    vim ~/alloydb-data/data/postgresql.auto.conf
    # Verify postgresql.auto.conf.
    # Do not edit this file manually!
    # It will be overwritten by the ALTER SYSTEM command.
    # Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11
    restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"'
    recovery_target = 'immediate'
    recovery_target_action = 'promote'
    recovery_target_timeline = 'current'
  1. Nel server di destinazione, avvia il servizio di database:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

Dopo l'avvio del servizio di database, puoi connetterti all'istanza principale ed eseguire query per verificare che i dati vengano ripristinati dal backup. Per ulteriori informazioni, consulta Connettersi ad AlloyDB Omni su un singolo server.

Passaggi successivi