Antes de começar
Certifique-se de que a versão do operador do Kubernetes do AlloyDB Omni é
1.5.0
. Para atualizar a versão do operador do AlloyDB Omni, consulte o artigo Migre para a versão mais recente do operador do AlloyDB Omni Kubernetes.Certifique-se de que tem, pelo menos, 5 GB de espaço livre no disco.
Se executar sistemas de cópia de segurança externos ou remotos, faça uma cópia de segurança completa e pause todas as cópias de segurança agendadas para evitar fazer cópias de segurança durante o processo de atualização.
Para ambientes de alta disponibilidade (HA) e resiliência de dados (DR), separe os clusters de base de dados antes de os atualizar.
Atualize a versão do AlloyDB Omni
Para atualizar a versão do AlloyDB Omni através do pg_upgrade
, escolha uma
das seguintes opções:
Execute o script Bash que faz a atualização por si.
Script de atualização
Pode encontrar um script que executa os passos de atualização manual nos exemplos do AlloyDB Omni no GitHub.
Para usar o script de atualização, transfira o script e execute o seguinte comando:
./MVU.sh 16.8.0 1.5.0 NAME NAMESPACE
Substitua as seguintes variáveis:
- NAME: o nome do cluster da base de dados.
- NAMESPACE: o espaço de nomes do cluster da base de dados.
Passos da atualização manual
Faça uma cópia de segurança dos seus dados para evitar a perda de dados.
Termine todos os processos de replicação. Isto inclui a replicação física usada para alta disponibilidade (AA) e resiliência de dados (RD) bem como todos os fluxos de replicação lógica.
Anote o cluster da base de dados para especificar uma atualização manual da 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 da base de dados.
Pare o processo do PostgreSQL para que os dados possam ser movidos para a atualização.
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 da cápsula.
Aplique patches ao cluster da base de dados para a versão
16.8.0
e aos agentes do plano de controlo (CPA) para a versão1.5.0
.kubectl patch dbclusters.alloydbomni.dbadmin.goog NAME --type=merge -p '{"spec":{"databaseVersion":"16.8.0","controlPlaneAgentsVersion":"omni_control_plane_agents_version"}}'
Substitua a seguinte variável:
- NAME: o nome do cluster da base de dados.
Crie um cluster de base 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 da cápsula.
Modifique
pg_hba.conf
no cluster da base de dados pré-existente para fornecer ao processo de atualização as autorizações e as ligações de que necessita.# 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 da cápsula.
Modifique o
pg_hba.conf
no novo cluster da base de dados para fornecer ao processo de atualização as autorizações e as ligações de que necessita.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 da cápsula.
Atualize o cluster da base 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 da cápsula.
Remova a anotação de atualização manual da versão do conjunto de bases de dados.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog NAME dbs.dbadmin.goog.com/manualmvu-
Substitua a seguinte variável:
- NAME: o nome do cluster da base de dados.
Retome as operações normais e reative todas as cópias de segurança, planos de cópias de segurança ou processos de replicação desativados nos passos um a três.