Upgrade auf eine Nebenversion für AlloyDB Omni mit Containern durchführen

Wählen Sie eine Dokumentationsversion aus:

Wenn Sie Fehlerkorrekturen, Sicherheitspatches und kleinere Verbesserungen anwenden möchten, ohne Ihre Daten zu migrieren, führen Sie ein Upgrade der Nebenversion der Datenbank für AlloyDB Omni durch. Ersetzen Sie dazu das Container-Image durch ein Image einer neueren Nebenversion im selben Hauptversionspfad. Bei Upgrades auf eine Nebenversion bleiben das vorhandene Hostdatenverzeichnis und die Konfigurationsdateien erhalten. Sie können die aktualisierte Installation prüfen oder bei Bedarf ein Rollback auf eine frühere Nebenversion durchführen.

Informationen zum Upgrade zwischen PostgreSQL-Hauptversionen finden Sie unter AlloyDB Omni auf einer VM aktualisieren.

Die Anleitung auf dieser Seite gilt für eigenständige Bereitstellungen mit einem einzelnen Knoten und für einzelne Datenbankknoten in Topologien mit mehreren Knoten, z. B. Bereitstellungen mit Lesereplikaten oder Standby-Knoten mit Hochverfügbarkeit. Berücksichtigen Sie je nach Einrichtung Folgendes:

  • Externes Datenverzeichnis: Bevor Sie einen Container beenden und entfernen, prüfen Sie, ob Ihre Datenbankdaten in einem nichtflüchtigen Hostverzeichnis gespeichert sind, das im Container bereitgestellt ist (z. B. -v DATA_DIR:/var/lib/postgresql/data). Wenn Sie einen Container entfernen, der Daten nur im Containerdateisystem speichert, werden Ihre Datenbankdaten gelöscht. Weitere Informationen finden Sie unter AlloyDB Omni mit Containern installieren.
  • Topologien mit mehreren Knoten: Führen Sie immer ein Upgrade aller Replikat- und Standby-Knoten durch, bevor Sie ein Upgrade des primären Knotens durchführen. Pausieren Sie in einer Hochverfügbarkeitskonfiguration das automatische Failover oder die Fehlererkennung, bevor Sie Container beenden. Führen Sie außerdem einen Wechsel zu einem aktualisierten Standby-Knoten durch, bevor Sie den ehemaligen primären Knoten aktualisieren.
  • Benutzerdefinierte Container-Images mit Erweiterungen: Wenn Sie ein benutzerdefiniertes Container-Image mit Drittanbietererweiterungen wie PostGIS oder Orafce erstellt haben, erstellen Sie das benutzerdefinierte Container-Image mit dem aktualisierten Basis-Image der Nebenversion neu, bevor Sie den Container neu erstellen.

Hinweis

Führen Sie vor dem Upgrade von AlloyDB Omni die folgenden Schritte aus:

  1. Planen Sie ein Wartungsfenster oder eine kurze Dienstausfallzeit ein, da der Datenbankdienst für das Ersetzen des Containers vorübergehend beendet werden muss.
  2. Erstellen Sie eine Vollsicherung Ihrer Datenbank, bevor Sie mit dem Upgrade beginnen. Weitere Informationen finden Sie unter Sichern und Wiederherstellen – Übersicht.
  3. Wenn Sie ein Upgrade für eine Topologie mit mehreren Knoten durchführen, ermitteln Sie den aktuellen primären Knoten und alle Standby- oder Replikatknoten, damit Sie zuerst ein Upgrade für die Standby- und Replikatknoten durchführen können.
  4. Prüfen Sie den ausgeführten Container, um das aktuelle Image, die Hostdatenverzeichnis-Bereitstellung, die Portzuordnungen, die Umgebungsvariablen und die Laufzeit-Flags aufzuzeichnen, damit Sie den Container mit derselben Konfiguration neu erstellen können:

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

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

  5. Prüfen Sie vor dem Upgrade Ihre aktuelle AlloyDB Omni-Datenbankversion:

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Aktualisiertes Container-Image abrufen

Rufen Sie das Container-Image der Ziel-Nebenversion auf Ihren Hostcomputer ab:

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

Ersetzen Sie IMAGE_URI durch den Container-Image-URI und das Nebenversions-Tag, auf das Sie ein Upgrade ausführen möchten, z. B. google/alloydbomni:18.3.0 für das Debian-Image oder google/alloydbomni:18.3.0-ubi9 für das Red Hat Universal Base Image (UBI).

Wenn Ihre Bereitstellung ein benutzerdefiniertes Container-Image mit Erweiterungen wie PostGIS oder Orafce verwendet, aktualisieren Sie die FROM-Anweisung oder das OMNI_VERSION-Build-Argument in Ihrer Dockerfile, um auf das aktualisierte Nebenversions-Tag zu verweisen. Erstellen Sie dann das aktualisierte benutzerdefinierte Image, bevor Sie fortfahren.

AlloyDB Omni aktualisieren

Führen Sie die folgenden Schritte auf jedem Knoten aus, um Ihre AlloyDB Omni-Installation auf eine neuere Nebenversion zu aktualisieren. Führen Sie in einer Topologie mit mehreren Knoten die folgenden Schritte auf jedem Stand-by- oder Replikatknoten aus, bevor Sie den primären Knoten aktualisieren:

  1. Beenden und entfernen Sie den vorhandenen AlloyDB Omni-Container:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

    Das Beenden und Entfernen des Containers hat keine Auswirkungen auf Ihre Datenbankdateien im bereitgestellten Hostdatenverzeichnis.

  2. Erstellen Sie den AlloyDB Omni-Container neu und starten Sie ihn. Verwenden Sie dazu das aktualisierte Image der Nebenversion und stellen Sie Ihr vorhandenes Hostdatenverzeichnis bereit:

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Ersetzen Sie Folgendes:

    • CONTAINER_NAME: Der Name Ihres AlloyDB Omni-Containers, z. B. my-omni.
    • PASSWORD: das Passwort für den postgres-Nutzer des Containers. Wenn Sie ein vorhandenes initialisiertes Datenverzeichnis bereitstellen, behält der Container das vorhandene Passwort bei, das in Ihrer Datenbank konfiguriert ist.
    • DATA_DIR: der Pfad des Hostverzeichnisses, in dem Ihre vorhandenen Datenbankdaten gespeichert sind.
    • HOST_PORT: der TCP-Port auf dem Hostcomputer, der den Containerport 5432 veröffentlicht, z. B. 5432.
    • IMAGE_URI: der URI des aktualisierten Container-Images der Nebenversion (oder der URI Ihres neu erstellten benutzerdefinierten Images), z. B. google/alloydbomni:18.3.0.

    Verwenden Sie dieselbe Basis-Betriebssystem-Image-Variante (Debian oder UBI) wie für Ihren vorherigen Container, damit die Dateieigentümerschaft in Ihrem Hostdatenverzeichnis mit dem postgres-Nutzer des Containers übereinstimmt. Wenn Ihr vorheriger Container zusätzliche Laufzeit-Flags wie --ulimit, --log-driver, --shm-size oder -v /dev/shm:/dev/shm verwendet hat, fügen Sie diese Flags beim Neuerstellen des Containers hinzu. Weitere Informationen finden Sie unter AlloyDB Omni für die Produktion einrichten.

Upgrade prüfen

Nachdem Sie den Container neu erstellt und gestartet haben, prüfen Sie, ob der Datenbankdienst die aktualisierte Nebenversion ausführt:

  1. Prüfen Sie den Status des AlloyDB Omni-Containers und bestätigen Sie, dass der Status Up ist:

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. Stellen Sie eine Verbindung zur Datenbank her und prüfen Sie, ob die aktualisierte Version aktiv ist:

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Rollback für das Upgrade durchführen

Wenn Sie Ihre AlloyDB Omni-Installation auf die frühere Nebenversion zurücksetzen müssen, beenden und entfernen Sie den aktualisierten Container und starten Sie einen Container, der das Image Ihrer vorherigen Nebenversion verwendet:

  1. Beenden und entfernen Sie den aktualisierten AlloyDB Omni-Container:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. Erstellen Sie den Container mit dem Image der vorherigen Nebenversion neu und starten Sie ihn. Stellen Sie dabei dasselbe Hostdatenverzeichnis bereit:

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Ersetzen Sie Folgendes:

    • CONTAINER_NAME: Der Name Ihres AlloyDB Omni-Containers, z. B. my-omni.
    • PASSWORD: das Passwort für den postgres-Nutzer des Containers. Wenn Sie ein vorhandenes initialisiertes Datenverzeichnis bereitstellen, behält der Container das vorhandene Passwort bei, das in Ihrer Datenbank konfiguriert ist.
    • DATA_DIR: der Pfad des Hostverzeichnisses, in dem Ihre vorhandenen Datenbankdaten gespeichert sind.
    • HOST_PORT: der TCP-Port auf dem Hostcomputer, der den Containerport 5432 veröffentlicht, z. B. 5432.
    • ROLLBACK_IMAGE_URI: der Container-Image-URI und das Nebenversions-Tag Ihrer vorherigen Installation (oder der URI Ihres vorherigen benutzerdefinierten Images), z. B. google/alloydbomni:18.1.0.
  3. Prüfen Sie, ob der Container ausgeführt wird und die vorherige Datenbankversion aktiv ist:

    Docker

    docker ps --filter "name=CONTAINER_NAME"
    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

Nächste Schritte