Antes de comenzar
Verifica que la versión del operador de AlloyDB Omni para Kubernetes sea
1.6.3. Para actualizar la versión del operador de AlloyDB Omni, consulta Migra a la versión más reciente del operador de AlloyDB Omni para Kubernetes.Verifica que tengas al menos 5 GB de espacio libre en el disco.
Si ejecutas sistemas de copia de seguridad externos o remotos, realiza una copia de seguridad completa y pausa las copias de seguridad programadas para evitar la creación de copias de seguridad durante el proceso de actualización.
Para entornos de alta disponibilidad (HA) y resiliencia de datos (DR), desacopla los clústeres de bases de datos antes de actualizarlos.
Actualiza tu versión de AlloyDB Omni
Para actualizar tu versión de AlloyDB Omni con pg_upgrade, haz una de las siguientes acciones:
Ejecuta la secuencia de comandos de Bash que realiza la actualización por ti.
Realiza la actualización con secuencias de comandos
Puedes encontrar una secuencia de comandos que realiza los pasos de actualización manual en las muestras de AlloyDB Omni en GitHub.
Para usar la secuencia de comandos de actualización, descárgala y ejecuta el siguiente comando:
./MVU.sh TO_VERSION OPERATOR_VERSION NAME NAMESPACE
Reemplaza las siguientes variables:
- TO_VERSION: Es la versión a la que actualizas, por ejemplo,
16.8.0o17.5.0. - OPERATOR_VERSION: Es la versión del operador de AlloyDB Omni, por ejemplo,
1.5.0o1.6.0. - NAME: Es el nombre de tu clúster de base de datos.
- NAMESPACE: Es el espacio de nombres de tu clúster de base de datos.
Realiza los pasos de actualización manual
Sigue las instrucciones para la versión principal a la que realizas la actualización.
Actualiza de la versión 15.x.x a la 16.x.x
Crea una copia de seguridad de tus datos para evitar la pérdida de datos.
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 datos (DR) así como todas las transmisiones de replicación lógica.
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=trueReemplaza la siguiente variable:
- NAME: Es el nombre de tu clúster de base de datos.
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/dataReemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Aplica un parche a tu clúster de base de datos a la versión
16.8.0y a tus agentes del plano de control (CPA) a1.5.0.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"1.5.0"}}'Reemplaza la siguiente variable:
- NAME: Es el nombre de tu clúster de base de datos.
Crea un clúster de base de datos vacío para la versión actualizada de AlloyDB Omni.
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 ~Reemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Modifica
pg_hba.confen tu clúster de base de datos preexistente 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.confReemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Modifica
pg_hba.confen el nuevo clúster de base de datos para proporcionar 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/dataReemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Actualiza tu clúster de base de datos.
# (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/Reemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Después de una actualización correcta, quita la anotación de actualización de versión manual de tu clúster de base de datos.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-Reemplaza la siguiente variable:
- NAME: Es el nombre de tu clúster de base de datos.
Reanuda las operaciones normales y vuelve a habilitar las copias de seguridad, los planes de copias de seguridad o los procesos de replicación que inhabilitaste en los pasos del uno al tres.
Actualiza de la versión 15.x.x a la 17.x.x
Crea una copia de seguridad de tus datos para evitar la pérdida de datos.
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 datos (DR) así como todas las transmisiones de replicación lógica.
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=trueReemplaza la siguiente variable:
- NAME: Es el nombre de tu clúster de base de datos.
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/dataReemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Aplica un parche a tu clúster de base de datos a la versión
17.5.0y a tus agentes del plano de control (CPA) a1.6.0.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"17.5.0","controlPlaneAgentsVersion":"1.6.0"}}'Reemplaza la siguiente variable:
- NAME: Es el nombre de tu clúster de base de datos.
Crea un clúster de base de datos vacío para la versión actualizada de AlloyDB Omni.
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 ~Reemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Modifica
pg_hba.confen tu clúster de base de datos preexistente 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.confReemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Modifica
pg_hba.confen el nuevo clúster de base de datos para proporcionar 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/dataReemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Actualiza tu clúster de base de datos.
# (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/Reemplaza la siguiente variable:
- POD_NAME: Es el nombre de tu pod.
Después de una actualización correcta, quita la anotación de actualización de versión manual de tu clúster de base de datos.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-Reemplaza la siguiente variable:
- NAME: Es el nombre de tu clúster de base de datos.
Reanuda las operaciones normales y vuelve a habilitar las copias de seguridad, los planes de copias de seguridad o los procesos de replicación que inhabilitaste en los pasos del uno al tres.