Esegui l'upgrade ad AlloyDB Omni versione 16.8.0 su Kubernetes

Seleziona una versione della documentazione:

Questa pagina descrive come eseguire l'upgrade ad AlloyDB Omni versione 16.8.0 su Kubernetes.

Prima di iniziare

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:

Upgrade dello 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 tuo cluster di database.
  • NAMESPACE: lo spazio dei nomi del cluster di database.

Procedura di upgrade manuale

  1. Esegui il backup dei dati per evitare di perderli.

  2. Rimuovi il piano di backup.

  3. 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 gli stream di replica logica.

  4. Annota il cluster di database per specificare un upgrade manuale della versione.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
    

    Sostituisci la seguente variabile:

    • NAME: il nome del tuo cluster di database.
  5. 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/data
    

    Sostituisci la seguente variabile:

    • POD_NAME: il nome del pod.
  6. Applica la patch al cluster di database alla versione 16.8.0 e agli agenti del control plane (CPA) alla versione 1.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 tuo cluster di database.
  7. Crea un cluster di database vuoto per la nuova versione di AlloyDB Omni.

    k 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.
  8. Modifica pg_hba.conf nel 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.conf
    

    Sostituisci la seguente variabile:

    • POD_NAME: il nome del pod.
  9. Modifica pg_hba.conf nel 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/data
    

    Sostituisci la seguente variabile:

    • POD_NAME: il nome del pod.
  10. 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
    
    # Need to 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.
  11. 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 tuo cluster di database.
  12. Riprendi le normali operazioni e riattiva i backup, i piani di backup o i processi di replica disattivati nei passaggi da 1 a 3.