Esegui l'upgrade della versione principale da AlloyDB Omni versione 15.x.x su Kubernetes

Seleziona una versione della documentazione:

Questa pagina descrive come eseguire un upgrade della versione principale ad AlloyDB Omni versione 15.13.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:

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 TO_VERSION OPERATOR_VERSION NAME NAMESPACE

Sostituisci le seguenti variabili:

  • TO_VERSION: la versione a cui esegui l'upgrade, ad esempio 16.8.0 o 17.5.0.
  • OPERATOR_VERSION: la versione dell'operatore AlloyDB Omni, ad esempio 1.5.0 o 1.6.0.
  • NAME: il nome del cluster di database.
  • NAMESPACE: lo spazio dei nomi del cluster di database.

Esegui i passaggi di upgrade manuale

Segui le istruzioni per la versione principale a cui stai eseguendo l'upgrade.

Eseguire l'upgrade dalla versione 15.x.x alla 16.x.x

  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 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":"1.5.0"}}'
    

    Sostituisci la seguente variabile:

    • NAME: il nome del cluster di database.
  7. 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.
  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
    
    # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql
    
    # (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.
  11. 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.
  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.

Esegui l'upgrade dalla versione 15.x.x alla 17.x.x

  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 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 17.5.0 e agli agenti del control plane (CPA) alla versione 1.6.0.

    kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.0"}}'
    

    Sostituisci la seguente variabile:

    • NAME: il nome del cluster di database.
  7. 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.
  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
    
    # Change to the pgsql directory before running pg_upgrade postgres@POD_NAME:~$ cd /mnt/disks/pgsql
    
    # (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/17/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/17/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.
  11. 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.
  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.