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:
- 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.
- Esegui un backup completo del database prima di iniziare l'upgrade. Per ulteriori informazioni, consulta la panoramica di backup e ripristino.
- 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.
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_NAMEPodman
podman inspect CONTAINER_NAMESostituisci
CONTAINER_NAMEcon il nome del tuo container AlloyDB Omni, ad esempiomy-omni.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_URIPodman
podman pull IMAGE_URISostituisci 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:
Arresta e rimuovi il container AlloyDB Omni esistente:
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMEL'arresto e la rimozione del container non influiscono sui file del database nella directory di dati dell'host montato.
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_URIPodman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ IMAGE_URISostituisci quanto segue:
CONTAINER_NAME: il nome del tuo container AlloyDB Omni, ad esempiomy-omni.PASSWORD: la password per l'utentepostgresdel 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 container5432, ad esempio5432.IMAGE_URI: l'URI dell'immagine container della versione secondaria aggiornata (o l'URI dell'immagine personalizzata ricostruita), ad esempiogoogle/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
postgresdel container. Se il container precedente utilizzava flag di runtime aggiuntivi, come--ulimit,--log-driver,--shm-sizeo-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:
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"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:
Arresta e rimuovi il container AlloyDB Omni di cui è stato eseguito l'upgrade:
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAMERicrea 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_URIPodman
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_URISostituisci quanto segue:
CONTAINER_NAME: il nome del tuo container AlloyDB Omni, ad esempiomy-omni.PASSWORD: la password per l'utentepostgresdel 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 container5432, ad esempio5432.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 esempiogoogle/alloydbomni:18.1.0.
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
- Esegui l'upgrade di AlloyDB Omni su una VM
- Configura AlloyDB Omni per la produzione
- Personalizza l'installazione di AlloyDB Omni
- Gestisci e monitora AlloyDB Omni
- Panoramica del backup e del ripristino