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

Wählen Sie eine Dokumentationsversion aus:

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

Im folgenden Workflow werden die Schritte zum Klonen beschrieben:

  1. Konfigurieren Sie die Datei pgbackrest.conf für den Zugriff auf die Cloud Storage-Sicherung.
  2. Verwenden Sie pgBackRest-Befehle, um zu prüfen, ob auf 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 Ihres 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.
  • Achten Sie darauf, dass Sie als Nutzer postgres in der Datenbank angemeldet sind.

pgBackRest-Datei auf dem Zielserver konfigurieren

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

  1. Wechseln Sie auf dem Zielserver zum Verzeichnis alloydb-data.

  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-Buckets pgBackRest, den Sie im Quelldatenbankcluster erstellt haben. Dies ist nicht die vollständige URL zum Bucket. Stellen Sie dem Bucket-Namen nicht das Präfix gs:// voran.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: Der Pfad des Verzeichnisses, in das der AlloyDB Omni-Operator Sicherungen schreibt, innerhalb des Cloud Storage-Bucket für den Quelldatenbankcluster. 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 Key Type Option.

Quellsicherungen auf dem Zielserver überprüfen

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

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 oder die Wiederherstellung zu einem bestimmten Zeitpunkt im Wiederherstellungszeitraum durchzuführen.

Sicherung auf dem Zielserver wiederherstellen

Nachdem Sie die Sicherung oder den Zeitpunkt ermittelt haben, zu dem Sie die Wiederherstellung durchführen möchten, führen Sie pgBackRest-Befehle auf dem Zielserver aus. Weitere Informationen zu diesen Befehlen finden Sie unter Restore-Befehl.

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 Wiederherstellungsbefehl 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 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