Actualizar a la versión 16.8.0 de AlloyDB Omni en Kubernetes

Selecciona una versión de la documentación:

En esta página se describe cómo actualizar a la versión 16.8.0 de AlloyDB Omni en Kubernetes.

Antes de empezar

  • Asegúrate de que la versión de tu operador de Kubernetes de AlloyDB Omni sea 1.5.0. Para actualizar la versión del operador de AlloyDB Omni, consulta Migrar a la versión más reciente del operador de AlloyDB Omni Kubernetes.

  • Asegúrate de que tienes al menos 5 GB de espacio libre en el disco.

  • Si utilizas sistemas de copias de seguridad externos o remotos, realiza una copia de seguridad completa y pausa las copias de seguridad programadas para evitar que se creen copias de seguridad durante el proceso de actualización.

  • En los entornos de alta disponibilidad (HA) y recuperación ante desastres (DR), desacopla los clústeres de bases de datos antes de actualizarlos.

Actualizar la versión de AlloyDB Omni

Para actualizar tu versión de AlloyDB Omni con pg_upgrade, haz una de las siguientes acciones:

Secuencia de comandos de actualización

Puedes encontrar una secuencia de comandos que realice los pasos de actualización manual en los ejemplos de AlloyDB Omni en GitHub.

Para usar la secuencia de comandos de actualización, descárgala y ejecuta el siguiente comando:

./MVU.sh 16.8.0 1.5.0 NAME NAMESPACE

Sustituye las siguientes variables:

  • NAME: el nombre de tu clúster de bases de datos.
  • NAMESPACE: el espacio de nombres de tu clúster de base de datos.

Pasos para actualizar manualmente

  1. Crea una copia de seguridad de tus datos para evitar que se pierdan.

  2. Elimina tu plan de copia de seguridad.

  3. Finaliza todos los procesos de replicación. Esto incluye la replicación física, que se usa para la alta disponibilidad (HA) y la resiliencia de los datos (DR), así como todos los flujos de replicación lógica.

  4. Anota tu clúster de base de datos para especificar una actualización de versión manual.

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

    Sustituye la siguiente variable:

    • NAME: el nombre de tu clúster de bases de datos.
  5. Detén el proceso de PostgreSQL para que se puedan mover los datos para la actualización.

    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
    

    Sustituye la siguiente variable:

    • POD_NAME: el nombre de tu pódcast.
  6. Aplica un parche a tu clúster de base de datos para que tenga la versión 16.8.0 y a tus agentes del plano de control (CPA) para que tengan la versión 1.5.0.

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

    Sustituye la siguiente variable:

    • NAME: el nombre de tu clúster de bases de datos.
  7. Crea un clúster de base de datos vacío para la nueva versión de 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 ~
    

    Sustituye la siguiente variable:

    • POD_NAME: el nombre de tu pódcast.
  8. Modifica pg_hba.conf en tu clúster de base de datos para proporcionar al proceso de actualización los permisos y las conexiones que necesita.

    # 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
    

    Sustituye la siguiente variable:

    • POD_NAME: el nombre de tu pódcast.
  9. Modifica pg_hba.conf en el nuevo clúster de base de datos para proporcionarle al proceso de actualización los permisos y las conexiones que necesita.

    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
    

    Sustituye la siguiente variable:

    • POD_NAME: el nombre de tu pódcast.
  10. Actualiza tu clúster de base de datos.

    # (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/
    

    Sustituye la siguiente variable:

    • POD_NAME: el nombre de tu pódcast.
  11. Elimina la anotación de actualización manual de la versión de tu clúster de base de datos.

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

    Sustituye la siguiente variable:

    • NAME: el nombre de tu clúster de bases de datos.
  12. Reanuda el funcionamiento normal y vuelve a habilitar las copias de seguridad, los planes de copias de seguridad o los procesos de replicación que hayas inhabilitado en los pasos del uno al tres.