Questa pagina descrive come eseguire un upgrade della versione secondaria del database per AlloyDB Omni su Kubernetes.
Per eseguire l'upgrade di una versione secondaria del database, sono disponibili due opzioni:
- Upgrade con tempi di inattività ridotti (LDTM): negli ambienti a disponibilità elevata (HA), l'operatore AlloyDB Omni esegue l'upgrade delle istanze di standby. Una volta eseguito l'upgrade di tutti gli standby, l'operatore esegue un failover, promuovendo una delle istanze di standby aggiornate a nuova istanza primaria. Una volta completato il cambio, viene eseguito l'upgrade della vecchia istanza primaria. Questo processo di implementazione sequenziale garantisce un downtime minimo e mantiene attivo il primario sulla versione precedente finché l'upgrade dell'ambiente di standby non viene completamente convalidato.
- Upgrade simultaneo: negli ambienti non HA o se LDTM è disattivato in modo esplicito, l'operatore AlloyDB Omni esegue l'upgrade di tutte le istanze del database contemporaneamente. Questo metodo causa il downtime del database durante la procedura di upgrade.
Limitazioni
Durante il processo di upgrade con tempi di inattività ridotti, ogni istanza in standby viene aggiornata in sequenza e non è temporaneamente disponibile durante l'upgrade.
Per garantire che il cluster di database mantenga un Recovery Point Objective (RPO) pari a zero e non rischi la perdita di dati durante l'upgrade dello standby, è consigliabile disporre di almeno due istanze di standby. Questa configurazione funge da configurazione ad alta disponibilità a tre nodi.
Prima di iniziare
- Se il tuo cluster è HA e la versione di AlloyDB Omni è precedente alla 15.7.1, segui i passaggi elencati in Aggiorna i cluster di database prima di seguire questa procedura di upgrade della versione secondaria.
- Per evitare la perdita di dati, esegui il backup dei dati.
- Mentre l'operazione di upgrade con tempi di inattività ridotti è in corso, la ridondanza HA del cluster di database viene temporaneamente ridotta mentre un'istanza in standby viene sottoposta all'upgrade. Tuttavia, il database rimane disponibile per il traffico di lettura e scrittura nell'istanza primaria attiva.
Abilita la procedura di upgrade della versione secondaria del database con tempi di inattività ridotti
Il processo di upgrade con tempi di inattività ridotti (LDTM) è attivato automaticamente per impostazione predefinita se il cluster di database ha due o più standby.
Se il cluster di database ha un solo standby, devi attivare manualmente LDTM aggiungendo l'annotazione dbcluster.dbadmin.goog/enableLDTM=true al cluster di database:
kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME dbcluster.dbadmin.goog/enableLDTM=true
Sostituisci la seguente variabile:
DB_CLUSTER_NAME: il nome del cluster di database. È lo stesso nome del cluster di database che hai fornito al momento della creazione. Per saperne di più, consulta Installare AlloyDB Omni su Kubernetes.
Esegui l'upgrade della versione di AlloyDB Omni
Per eseguire l'upgrade alla versione 18.3.0, aggiorna i campi
databaseVersion e controlPlaneAgentsVersion nel file manifest del cluster, quindi riapplica il file.
Di seguito è riportato l'inizio di un file manifest che specifica la versione
18.3.0 per databaseVersion e la versione
1.8.2 per controlPlaneAgentsVersion:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
spec:
databaseVersion: "DB_VERSION"
controlPlaneAgentsVersion: "CONTROL_PLANE_AGENTS_VERSION"
# It is recommended to switch to UBI9 for improved security and
# compatibility.
# If you need to stick to Debian, set this field to "Debian".
databaseImageOSType: "OS_TYPE"
...
Sostituisci la seguente variabile:
DB_CLUSTER_NAME: il nome del cluster di database. È lo stesso nome del cluster di database che hai fornito al momento della creazione. Per saperne di più, consulta Installare AlloyDB Omni su Kubernetes.DB_VERSION: la versione del database a cui stai eseguendo l'upgrade.CONTROL_PLANE_AGENTS_VERSION: la versione degli agenti del control plane.OS_TYPE: (Facoltativo) Il sistema operativo di base per l'immagine del database. I valori validi sonoDebianeUBI9. Se non lo specifichi, l'operatore lo imposta automaticamente suDebiansedatabaseVersionè inferiore a16.9.0e suUBI9sedatabaseVersionè16.9.0o versioni successive.
Monitorare il processo di upgrade
Dopo aver aggiornato il file manifest, l'operatore AlloyDB Omni avvia
la procedura di upgrade. Per monitorare il processo di upgrade, controlla la condizione
DBCUpgradeInProgress.
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'
Sostituisci la seguente variabile:
DB_CLUSTER_NAME: il nome del cluster di database. È lo stesso nome del cluster di database che hai fornito al momento della creazione. Per saperne di più, consulta Installare AlloyDB Omni su Kubernetes.
Mentre il processo è in corso, lo stato della condizione è true. Al termine del processo, lo stato della condizione cambia in false e il motivo viene aggiornato a UpgradeComplete o UpgradeFailed.
Risoluzione dei problemi
Se ricevi messaggi di errore durante la procedura di upgrade, consulta le sezioni seguenti:
Errori pre-upgrade
Se ricevi un errore pre-upgrade sul cluster di database, controlla il messaggio e risolvi il problema di conseguenza.
Se vuoi ignorare il messaggio di errore pre-upgrade, puoi attivare
l'annotazione force-upgrade.
kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true
Sostituisci la seguente variabile:
DB_CLUSTER_NAME: il nome del cluster di database. È lo stesso nome del cluster di database che hai fornito al momento della creazione. Per saperne di più, consulta Installare AlloyDB Omni su Kubernetes.
Al termine della procedura di upgrade, imposta l'annotazione force-upgrade su
false.
Errori di upgrade
Durante il processo di upgrade automatico, ci sono diversi punti in cui potrebbe non riuscire negli ambienti HA. Per saperne di più su ciascuno scenario di errore e sulle azioni successive intraprese dall'operatore AlloyDB Omni, consulta la tabella seguente.
| Messaggio di errore | Descrizione | Azioni utente richieste |
|---|---|---|
Standby instance upgrade succeeded but its replication lag is too high to be promoted to a synchronous standby. Please monitor replication status.
|
L'istanza in standby è stata aggiornata correttamente, ma non è riuscita a raggiungere l'istanza primaria abbastanza velocemente da soddisfare la soglia di replica sincrona prima della finestra di timeout. Ciò è in genere causato da un traffico di scrittura elevato sull'istanza primaria. |
Per consentire la sincronizzazione dell'istanza in standby, procedere come segue:
|
All standbys upgrade succeeded but the switchover instance failed to promote an upgraded standby.
|
L'upgrade delle istanze di standby è stato eseguito correttamente, ma il processo di failover automatico progettato per promuovere un'istanza di standby aggiornata a principale non è riuscito. |
Per esaminare e risolvere l'errore di switchover, segui questi passaggi:
|
Standby instance upgrade failed but rollback to the previous versions succeeded
|
L'upgrade dell'istanza di standby non è riuscito, ma l'operatore AlloyDB Omni ha eseguito il rollback dell'istanza alla versione precedente funzionante. Poiché l'istanza principale non è mai stata toccata, il database rimane integro nella versione precedente. |
Per diagnosticare il problema sottostante e applicare una correzione, segui questi passaggi:
|
Standby instance upgrade failed and rollback to the previous versions failed
|
L'upgrade dell'istanza in standby non è riuscito e anche il tentativo automatico dell'operatore AlloyDB Omni di eseguire il rollback alla versione precedente non è riuscito. L'istanza in standby viene lasciata in uno stato non integro/inutilizzabile (riducendo la ridondanza HA), mentre la primaria continua a gestire il traffico di lettura/scrittura nella versione precedente. |
Per ripristinare l'integrità del cluster, esegui di nuovo il provisioning dello standby nel seguente modo:
|
Correggere le istanze primaria e in standby con versioni secondarie diverse
Per risolvere il problema, scegli una delle seguenti opzioni:
Se il problema di base che ha causato l'errore di upgrade è stato risolto, puoi riavviare l'upgrade. Rimuovi l'annotazione
start-timedell'upgrade da DBCluster per richiedere all'operatore AlloyDB Omni di generare un nuovo orario di inizio e riprovare:kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/start-time-
Sostituisci
DB_CLUSTER_NAMEcon il nome del cluster di database. È lo stesso nome del cluster di database che hai fornito al momento della creazione. Per saperne di più, consulta Installare AlloyDB Omni su Kubernetes.Se il problema che ha causato l'errore di upgrade persiste e preferisci mantenere il cluster nella versione precedente, non devi eseguire una procedura di downgrade. Poiché l'upgrade non è riuscito durante la fase di standby, il database primario non è mai stato aggiornato.
Per cancellare lo stato
UpgradeFailede tornare a uno stato stabile e non di upgrade, aggiorna i campidatabaseVersionecontrolPlaneAgentsVersiondel manifest DBCluster alle versioni utilizzate prima del tentativo di upgrade, quindi riapplica il file.