Antes de começar
Verifique se a versão do operador do AlloyDB Omni no Kubernetes é
1.4.0
. Para fazer upgrade da versão do operador do AlloyDB Omni, consulte Migrar para a versão mais recente do operador do AlloyDB Omni no Kubernetes.Verifique se você tem pelo menos 5 GB de espaço livre em disco.
Se você usa sistemas de backup externos ou remotos, faça um backup completo e pause todos os backups programados para evitar fazer backup durante o processo de upgrade.
Para ambientes de alta disponibilidade (HA) e capacidade de recuperação de dados (DR), desacople os clusters de banco de dados antes de fazer upgrade deles.
Fazer upgrade da versão do AlloyDB Omni
Para fazer upgrade da versão do AlloyDB Omni usando pg_upgrade
, faça uma
das seguintes ações:
Execute o script Bash que faz o upgrade para você.
Script de upgrade
Você encontra um script que executa as etapas de upgrade manual nos exemplos do AlloyDB Omni no GitHub.
Para usar o script de upgrade, faça o download e execute o seguinte comando:
./MVU.sh 16.3.0 1.4.0 NAME NAMESPACE
Substitua as seguintes variáveis:
- NAME: o nome do cluster de banco de dados.
- NAMESPACE: o namespace do cluster de banco de dados.
Etapas de upgrade manual
Faça backup dos seus dados para evitar a perda deles.
Encerre todos os processos de replicação. Isso inclui a replicação física usada para alta disponibilidade (HA) e resiliência de dados (DR), além de todos os fluxos de replicação lógica.
Anote o cluster de banco de dados para especificar um upgrade manual de versão.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu=true
Substitua a seguinte variável:
- NAME: o nome do cluster de banco de dados.
Interrompa o processo do PostgreSQL para que os dados possam ser movidos para o 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
Substitua a seguinte variável:
- POD_NAME: o nome do pod.
Faça o patch do cluster de banco de dados para a versão
16.3.0
e dos agentes do plano de controle (CPA) para1.4.0
.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.3.0","controlPlaneAgentsVersion":"omni_control_plane_agents_version"}}'
Substitua a seguinte variável:
- NAME: o nome do cluster de banco de dados.
Crie um cluster de banco de dados vazio para a nova versão do 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 ~
Substitua a seguinte variável:
- POD_NAME: o nome do pod.
Modifique
pg_hba.conf
no cluster de banco de dados preexistente para fornecer ao processo de upgrade as permissões e conexões necessárias.# 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
Substitua a seguinte variável:
- POD_NAME: o nome do pod.
Modifique
pg_hba.conf
no novo cluster de banco de dados para fornecer ao processo de upgrade as permissões e conexões necessárias.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
Substitua a seguinte variável:
- POD_NAME: o nome do pod.
Faça upgrade do cluster de banco de dados.
# (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/
Substitua a seguinte variável:
- POD_NAME: o nome do pod.
Remova a anotação de upgrade manual da versão do cluster de banco de dados.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
Substitua a seguinte variável:
- NAME: o nome do cluster de banco de dados.
Retome as operações normais e reative os backups, planos de backup ou processos de replicação desativados nas etapas de um a três.