Datenbankcluster mit einer Cloud Storage-Sicherung auf einem einzelnen Server klonen

Auf dieser Seite erfahren Sie, wie Sie einen Datenbankcluster mithilfe einer Cloud Storage-Sicherung auf einem einzelnen Server klonen.

Im folgenden Workflow werden die Schritte zum Klonen erläutert:

  1. Konfigurieren Sie die Datei pgbackrest.conf für den Zugriff auf die Cloud Storage-Sicherung.
  2. Prüfen Sie mit pgBackRest-Befehlen, ob auf die Quellsicherungen zugegriffen werden kann.
  3. Verwenden Sie pgBackRest-Befehle, um die Sicherung auf dem Zielserver wiederherzustellen.

Hinweise

  • Zugriff auf den vollständigen Pfad des Cloud Storage-Bucket, in dem sich die Sicherung des Quelldatenbankclusters befindet. Dies ist derselbe Pfad, den Sie beim Erstellen der BackupPlan-Ressource für Ihren Quelldatenbankcluster verwendet haben.
  • Es wird ein AlloyDB Omni-Datenbankcluster mit einem einzelnen Server als Ziel erstellt. Weitere Informationen zur Installation von AlloyDB Omni in Kubernetes finden Sie unter AlloyDB Omni installieren.
  • Sie müssen als Nutzer postgres in der Datenbank angemeldet sein.

pgBackRest-Datei auf dem Zielserver konfigurieren

Konfigurieren Sie die Datei pgBackRest so, dass der Zieldatenbankcluster auf den Cloud Storage-Bucket zugreifen kann, in dem sich die Quellsicherungen befinden.

  1. Rufen Sie auf dem Zielserver das Verzeichnis alloydb-data auf.

  2. Erstellen Sie eine pgBackRest-Konfigurationsdatei, um auf in Cloud Storage gespeicherte Sicherungen zuzugreifen:

      $ 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

    Ersetzen Sie Folgendes:

    • GCS_SOURCE_BACKUP_BUCKET_NAME: Der Name des Cloud Storage-pgBackRest-Buckets, den Sie im Cluster der Quelldatenbank erstellt haben. Dies ist nicht die vollständige URL zum Bucket. Fügen Sie dem Bucket-Namen kein Präfix vorangestellt mit gs:// hinzu.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: Der Pfad zum Verzeichnis, in das der AlloyDB Omni-Betriebssystemadministrator Sicherungen im Cloud Storage-Bucket für den Quelldatenbankcluster schreibt. Der Pfad muss absolut sein und mit / beginnen.

    repo1-gcs-key-type ist auf auto festgelegt, um das Dienstkonto der Instanz zu verwenden. Weitere Informationen zu anderen Optionen finden Sie unter GCS-Repository-Schlüsseltypoption.

Quellsicherungen auf dem Zielserver prüfen

Melden Sie sich auf dem Zielserver an und führen Sie pgBackRest-Befehle aus, um zu prüfen, ob auf dem Zielserver auf die Sicherungen des Quelldatenbankclusters zugegriffen werden kann:

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

Ersetzen Sie CONTAINER_NAME durch den Namen eines neuen AlloyDB Omni-Containers, z. B. my-omni-1.

Hier ist eine Beispielantwort:

    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

Die Zeitstempel in der Antwort werden entweder verwendet, um die vollständige Sicherung wiederherzustellen oder um von einem bestimmten Zeitpunkt innerhalb des Wiederherstellungszeitraums wiederherzustellen.

Sicherung auf dem Zielserver wiederherstellen

Nachdem Sie die Sicherung oder einen Zeitpunkt ermittelt haben, zu dem Sie wiederherstellen möchten, führen Sie pgBackRest-Befehle auf dem Zielserver aus. Weitere Informationen zu diesen Befehlen finden Sie unter Befehl „Wiederherstellen“.

Im Folgenden finden Sie einige Beispiele für pgBackRest-Wiederherstellungsbefehle:

  • Aus einer Sicherung wiederherstellen

    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
  • Von einem bestimmten Zeitpunkt wiederherstellen

    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

Daten auf den Zielserver kopieren

Nachdem der Befehl zum Wiederherstellen erfolgreich abgeschlossen wurde, können Sie die Daten aus dem temporären Verzeichnis /mnt/disks/pgsql/data-restored in das aktuelle Verzeichnis /alloydb-data/data kopieren.

  1. Beenden Sie auf dem Zielserver den Datenbankdienst:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. Benennen Sie das aktuelle Datenverzeichnis sicherheitshalber in einen anderen Namen um:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Benennen Sie das temporäre Verzeichnis data-restored in das aktuelle Datenverzeichnis um:

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. Aktualisieren Sie den Wert pg1-path in der Datei postgresql.auto.conf, um die wiederhergestellten Daten zu laden:

    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. Starten Sie auf dem Zielserver den Datenbankdienst:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

Nachdem der Datenbankdienst gestartet wurde, können Sie eine Verbindung zur primären Instanz herstellen und Abfragen ausführen, um zu prüfen, ob die Daten aus der Sicherung wiederhergestellt wurden. Weitere Informationen finden Sie unter Verbindung zu AlloyDB Omni auf einem einzelnen Server herstellen.

Nächste Schritte