Esegui l'upgrade della versione secondaria per AlloyDB Omni utilizzando i container

Seleziona una versione della documentazione:

Per applicare correzioni di bug, patch di sicurezza e piccoli miglioramenti senza eseguire la migrazione dei dati, esegui l'upgrade della versione secondaria del database per AlloyDB Omni sostituendo l'immagine container con un'immagine della versione secondaria successiva nello stesso percorso della versione principale. Gli upgrade delle versioni secondarie conservano la directory di dati e i file di configurazione dell'host esistenti e ti consentono di verificare l'installazione di cui è stato eseguito l'upgrade o di eseguire il rollback a una versione secondaria precedente, se necessario.

Per eseguire l'upgrade tra le versioni principali di PostgreSQL, consulta Esegui l'upgrade di AlloyDB Omni su una VM.

Le istruzioni riportate in questa pagina si applicano ai deployment autonomi a nodo singolo e ai singoli nodi di database in topologie multi-nodo, come i deployment con repliche di lettura o nodi in standby ad alta affidabilità. Esamina le seguenti considerazioni in base alla tua configurazione:

  • Directory di dati esterna: prima di arrestare e rimuovere un container, verifica che i dati del database siano archiviati in una directory host permanente montata nel container (ad esempio -v DATA_DIR:/var/lib/postgresql/data). La rimozione di un container che archivia i dati solo all'interno del file system del container elimina i dati del database. Per ulteriori informazioni, consulta Installa AlloyDB Omni utilizzando i container.
  • Topologie multi-nodo: esegui sempre l'upgrade di tutti i nodi di replica e di standby prima di eseguire l'upgrade del nodo principale. In una configurazione ad alta affidabilità, metti in pausa il failover automatico o il rilevamento degli errori prima di arrestare i container ed esegui un cambio a un nodo in standby di cui è stato eseguito l'upgrade prima di eseguire l'upgrade del nodo principale precedente.
  • Immagini container personalizzate con estensioni: se hai creato un'immagine container personalizzata con estensioni di terze parti come PostGIS o Orafce, ricrea l'immagine container personalizzata utilizzando l'immagine di base della versione secondaria aggiornata prima di ricreare il container.

Prima di iniziare

Prima di eseguire l'upgrade di AlloyDB Omni, completa i seguenti passaggi:

  1. Pianifica un periodo di manutenzione o un breve tempo di inattività del servizio, perché la sostituzione del container richiede l'arresto temporaneo del servizio di database.
  2. Esegui un backup completo del database prima di iniziare l'upgrade. Per ulteriori informazioni, consulta la panoramica di backup e ripristino.
  3. Se esegui l'upgrade di una topologia multi-nodo, identifica il nodo principale attuale e tutti i nodi in standby o di replica in modo da poter eseguire l'upgrade dei nodi in standby e di replica per primi.
  4. Ispeziona il container in esecuzione per registrare l'immagine corrente, il montaggio della directory di dati dell'host, le mappature delle porte, le variabili di ambiente e i flag di runtime in modo da poter ricreare il container con la stessa configurazione:

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

    Sostituisci CONTAINER_NAME con il nome del tuo container AlloyDB Omni, ad esempio my-omni.

  5. Controlla la versione attuale del database AlloyDB Omni prima di eseguire l'upgrade:

    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();"

Estrai l'immagine container aggiornata

Esegui il pull dell'immagine container della versione secondaria di destinazione sulla tua macchina host:

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

Sostituisci IMAGE_URI con l'URI dell'immagine container e il tag della versione secondaria a cui vuoi eseguire l'upgrade, ad esempio google/alloydbomni:18.3.0 per l'immagine Debian o google/alloydbomni:18.3.0-ubi9 per l'immagine Red Hat Universal Base Image (UBI).

Se il tuo deployment utilizza un'immagine container personalizzata con estensioni come PostGIS o Orafce, aggiorna l'istruzione FROM o l'argomento di build OMNI_VERSION nel tuo Dockerfile per fare riferimento al tag della versione secondaria aggiornato, quindi crea l'immagine personalizzata aggiornata prima di procedere.

Esegui l'upgrade di AlloyDB Omni

Per eseguire l'upgrade dell'installazione di AlloyDB Omni a una versione secondaria successiva, completa i seguenti passaggi su ogni nodo. In una topologia multi-nodo, completa questi passaggi su ogni nodo in standby o di replica prima di eseguire l'upgrade del nodo principale:

  1. Arresta e rimuovi il container AlloyDB Omni esistente:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

    L'arresto e la rimozione del container non influiscono sui file del database nella directory di dati dell'host montato.

  2. Ricrea e avvia il container AlloyDB Omni utilizzando l'immagine della versione secondaria aggiornata e montando la directory di dati host esistente:

    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

    Sostituisci quanto segue:

    • CONTAINER_NAME: il nome del tuo container AlloyDB Omni, ad esempio my-omni.
    • PASSWORD: la password per l'utente postgres del container. Quando monti una directory di dati inizializzata esistente, il container conserva la password esistente configurata nel database.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati del database esistente.
    • HOST_PORT: la porta TCP sulla macchina host che pubblica la porta del container 5432, ad esempio 5432.
    • IMAGE_URI: l'URI dell'immagine container della versione secondaria aggiornata (o l'URI dell'immagine personalizzata ricostruita), ad esempio google/alloydbomni:18.3.0.

    Utilizza la stessa variante dell'immagine sistema operativo di base (Debian o UBI) del container precedente, in modo che la proprietà dei file nella directory dei dati host corrisponda all'utente postgres del container. Se il container precedente utilizzava flag di runtime aggiuntivi, come --ulimit, --log-driver, --shm-size o -v /dev/shm:/dev/shm, includi questi flag quando ricrei il container. Per saperne di più, consulta Configura AlloyDB Omni per la produzione.

Verifica l'upgrade

Dopo aver ricreato e avviato il container, verifica che il servizio di database esegua la versione secondaria aggiornata:

  1. Controlla lo stato del container AlloyDB Omni e verifica che sia Up:

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. Connettiti al database e verifica che la versione di cui è stato eseguito l'upgrade sia attiva:

    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();"

Esegui il rollback dell'upgrade

Se devi ripristinare l'installazione di AlloyDB Omni alla versione secondaria precedente, arresta e rimuovi il container di cui è stato eseguito l'upgrade e avvia un container che utilizza l'immagine della versione secondaria precedente:

  1. Arresta e rimuovi il container AlloyDB Omni di cui è stato eseguito l'upgrade:

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. Ricrea e avvia il container utilizzando l'immagine della versione secondaria precedente e montando la stessa directory di dati host:

    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

    Sostituisci quanto segue:

    • CONTAINER_NAME: il nome del tuo container AlloyDB Omni, ad esempio my-omni.
    • PASSWORD: la password per l'utente postgres del container. Quando monti una directory di dati inizializzata esistente, il container conserva la password esistente configurata nel database.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati del database esistente.
    • HOST_PORT: la porta TCP sulla macchina host che pubblica la porta del container 5432, ad esempio 5432.
    • ROLLBACK_IMAGE_URI: l'URI dell'immagine container e il tag della versione secondaria dell'installazione precedente (o l'URI dell'immagine personalizzata precedente), ad esempio google/alloydbomni:18.1.0.
  3. Verifica che il container sia in esecuzione e che la versione precedente del database sia attiva:

    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();"

Passaggi successivi