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

Seleziona una versione della documentazione:

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

Il seguente flusso di lavoro spiega 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 delle origini.
  3. Utilizza i comandi pgBackRest per ripristinare il backup sul server di destinazione.

Prima di iniziare

  • Accesso al percorso completo del bucket Cloud Storage in cui si trova il backup del cluster di database di origine. Questo è lo stesso percorso che hai utilizzato quando hai creato la risorsa BackupPlan per il cluster di database di origine.
  • Viene creato un singolo cluster di database AlloyDB Omni di destinazione del server. Per saperne di più 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 di database di origine. Questo non è l'URL completo del bucket; non aggiungere il prefisso gs:// al nome del bucket.
    • 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 di database di origine. Il percorso deve essere assoluto e iniziare con /.

    repo1-gcs-key-type è impostato su auto per utilizzare il account di servizio dell'istanza. Per saperne di più su altre opzioni, vedi Opzione Tipo di chiave 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 di 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 container 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 eseguire il ripristino da un momento specifico della finestra di recupero.

Ripristina il backup nel server di destinazione

Dopo aver identificato il backup o un momento specifico a cui eseguire il ripristino, esegui i comandi pgBackRest nel server di destinazione. Per ulteriori informazioni su questi comandi, consulta Restore Command.

Di seguito sono riportati alcuni comandi di ripristino di 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 correttamente 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. Rinomina la directory dei dati corrente con un altro nome come best practice:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Rinomina la directory temporanea data-restored nella directory dei 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 saperne di più, consulta Connessione ad AlloyDB Omni su un singolo server.

Passaggi successivi