Prima di iniziare
Verifica che la versione dell'operatore AlloyDB Omni Kubernetes sia
1.5.0. Per eseguire l'upgrade della versione dell'operatore AlloyDB Omni, consulta Eseguire la migrazione alla versione più recente dell'operatore AlloyDB Omni Kubernetes.Verifica di avere almeno 5 GB di spazio libero su disco.
Se esegui sistemi di backup esterni o remoti, esegui un backup completo e metti in pausa tutti i backup pianificati per evitare di eseguire il backup durante la procedura di upgrade.
Per gli ambienti ad alta disponibilità (HA) e resilienza dei dati (RE), disaccoppia i cluster di database prima di eseguirne l'upgrade.
Esegui l'upgrade della versione di AlloyDB Omni
Per eseguire l'upgrade della versione di AlloyDB Omni utilizzando pg_upgrade, esegui una
delle seguenti operazioni:
Esegui lo script bash che esegue l'upgrade.
Esegui l'upgrade basato su script
Puoi trovare uno script che esegue i passaggi di upgrade manuale negli esempi di AlloyDB Omni su GitHub.
Per utilizzare lo script di upgrade, scaricalo ed esegui il comando seguente:
./MVU.sh 16.8.0 1.5.0 NAME NAMESPACE
Sostituisci le seguenti variabili:
- NAME: il nome del cluster di database.
- NAMESPACE: lo spazio dei nomi del cluster di database.
Esegui i passaggi di upgrade manuale
Esegui il backup dei dati per evitare di perderli.
Termina tutti i processi di replica. Ciò include la replica fisica utilizzata per l'alta affidabilità (HA) e la resilienza dei dati (RE), nonché tutti i flussi di replica logica.
Annota il cluster di database per specificare un upgrade manuale della versione.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=trueSostituisci la seguente variabile:
- NAME: il nome del cluster di database.
Arresta il processo PostgreSQL in modo che i dati possano essere spostati per l'upgrade.
k exec -ti POD_NAME -- /bin/Bash # Shut down postgres postgres@POD_NAME:~$ supervisorctl.par stop postgres postgres@POD_NAME:~$ mkdir /mnt/disks/pgsql/15; mv /mnt/disks/pgsql/data /mnt/disks/pgsql/15/data; cp -r /usr/lib/postgresql/15/bin /mnt/disks/pgsql/15/.; cp -r /usr/lib/postgresql/15/lib /mnt/disks/pgsql/15/.; cp -r /usr/share/postgresql/15 /mnt/disks/pgsql/15/share; rm /mnt/disks/pgsql/15/share/postgresql.conf.sample; cp /usr/share/postgresql/postgresql.conf.sample /mnt/disks/pgsql/15/share/postgresql.conf.sample; chmod 2740 /mnt/disks/pgsql/15/dataSostituisci la seguente variabile:
- POD_NAME: il nome del pod.
Applica la patch al cluster di database alla versione
16.8.0e agli agenti del control plane (CPA) alla versione1.5.0.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"omni_control_plane_agents_version"}}'Sostituisci la seguente variabile:
- NAME: il nome del cluster di database.
Crea un cluster di database vuoto per la versione di AlloyDB Omni di cui è stato eseguito l'upgrade.
kubectl exec -ti POD_NAME -- /bin/Bash postgres@POD_NAME:~$ supervisorctl.par stop postgres # Initialize a new, empty database cluster for the new version. postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/data; initdb -D /mnt/disks/pgsql/data -U alloydbadmin --data-checksums --encoding=UTF8 --locale=C --locale-provider=icu --icu-locale=und-x-icu --auth-host=trust --auth-local=reject; cd ~Sostituisci la seguente variabile:
- POD_NAME: il nome del pod.
Modifica
pg_hba.confnel cluster di database preesistente per fornire alla procedura di upgrade le autorizzazioni e le connessioni necessarie.# Backup pg_hba.conf of the pg15 cluster postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf /mnt/disks/pgsql/15/data/pg_hba.conf.bak # Update pg15 configurations postgres@POD_NAME:~$ echo "local all all trust" >> /mnt/disks/pgsql/15/data/pg_hba.conf; echo "host all all 127.0.0.1/32 trust" >> /mnt/disks/pgsql/15/data/pg_hba.confSostituisci la seguente variabile:
- POD_NAME: il nome del pod.
Modifica
pg_hba.confnel nuovo cluster di database per fornire all'upgrade le autorizzazioni e le connessioni di cui ha bisogno.postgres@POD_NAME:~$ rm /mnt/disks/pgsql/data/pg_hba.conf; echo "local all all trust" >> /mnt/disks/pgsql/data/pg_hba.conf; echo "host all all 127.0.0.1/32 trust" >> /mnt/disks/pgsql/data/pg_hba.conf; chmod 2740 /mnt/disks/pgsql/15/dataSostituisci la seguente variabile:
- POD_NAME: il nome del pod.
Esegui l'upgrade del cluster di database.
# (optional) Make sure postgres is stopped postgres@POD_NAME:~$ supervisorctl.par stop postgres # (optional) Check to verify that data can be upgraded. postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin --check -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v postgres@POD_NAME:~$ pg_upgrade -U alloydbadmin -b /mnt/disks/pgsql/15/bin -B /usr/lib/postgresql/16/bin -d /mnt/disks/pgsql/15/data -D /mnt/disks/pgsql/data --link -v # Recover pg15 configurations postgres@POD_NAME:~$ cp /mnt/disks/pgsql/15/data/pg_hba.conf.bak /mnt/disks/pgsql/data/pg_hba.conf; cp -r /mnt/disks/pgsql/15/data/postgresql.conf /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/postgresql.conf.d /mnt/disks/pgsql/data/.; cp -r /mnt/disks/pgsql/15/data/parambackup /mnt/disks/pgsql/data/. # Start postgres postgres@POD_NAME:~$ supervisorctl.par start postgres # Clean up backup data postgres@POD_NAME:~$ rm -fr /mnt/disks/pgsql/15/Sostituisci la seguente variabile:
- POD_NAME: il nome del pod.
Dopo un upgrade riuscito, rimuovi l'annotazione di upgrade manuale della versione dal cluster di database.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-Sostituisci la seguente variabile:
- NAME: il nome del cluster di database.
Riprendi le normali operazioni e riattiva i backup, i piani di backup o i processi di replica disattivati nei passaggi da 1 a 3.