Esegui l'upgrade della versione principale del database in loco

Questa pagina descrive come eseguire l'upgrade della versione principale del database eseguendo l'upgrade dell'istanza Cloud SQL sul posto anziché eseguendo la migrazione dei dati.

Introduzione

I fornitori di software di database rilasciano periodicamente nuove versioni principali che contengono nuove funzionalità, miglioramenti delle prestazioni e miglioramenti della sicurezza. Cloud SQL accetta le nuove versioni dopo il loro rilascio. Dopo che Cloud SQL offre il supporto per una nuova versione principale, puoi eseguire l'upgrade delle istanze per mantenere aggiornato il database.

Puoi eseguire l'upgrade della versione del database di un'istanza sul posto o tramite la migrazione dei dati. Gli upgrade in loco sono un modo più semplice per eseguire l'upgrade della versione principale dell'istanza. Non è necessario migrare i dati o modificare le stringhe di connessione dell'applicazione. Con gli upgrade sul posto, puoi conservare il nome, l'indirizzo IP e altre impostazioni dell'istanza corrente dopo l'upgrade. Gli upgrade sul posto non richiedono lo spostamento dei file di dati e possono essere completati più rapidamente. In alcuni casi, il tempo di inattività è inferiore a quello richiesto per la migrazione dei dati.

Per MySQL 8.0.15 e versioni precedenti, l'operazione di upgrade in loco di MySQL utilizza l'utilità mysql_upgrade. Per MySQL 8.0.16 e versioni successive, l'operazione di upgrade in loco di MySQL viene gestita dal processo MySQL server. Per ulteriori informazioni sull'operazione di upgrade in loco, vedi Elementi aggiornati dalla procedura di upgrade di MySQL

Pianificare un upgrade della versione principale

  1. Verifica di disporre del ruolo richiesto per eseguire un upgrade della versione principale: Proprietario Cloud SQL o Amministratore Cloud SQL.
  2. Scegli una versione principale di destinazione.

    gcloud

    Per informazioni sull'installazione e su come iniziare a utilizzare gcloud CLI, consulta Installare gcloud CLI. Per informazioni sull'avvio di Cloud Shell, consulta Utilizzare Cloud Shell.

    Per controllare le versioni del database a cui puoi fare riferimento per un upgrade in loco sulla tua istanza:

    1. Esegui questo comando.
    2. gcloud sql instances describe INSTANCE_NAME
         

      Sostituisci INSTANCE_NAME con il nome dell'istanza.

    3. Nell'output del comando, individua la sezione etichettata upgradableDatabaseVersions.
    4. Ogni sottosezione restituisce una versione del database disponibile per l'upgrade. In ogni sottosezione, esamina i seguenti campi.
      • majorVersion: la versione principale a cui puoi fare riferimento per l'upgrade in loco.
      • name: la stringa della versione del database che include la versione principale. Per Cloud SQL per MySQL, questo campo include anche la versione secondaria del database.
      • displayName: il nome visualizzato per la versione del database.

    REST v1

    Per controllare quali versioni del database di destinazione sono disponibili per un upgrade in loco della versione principale, utilizza il metodo instances.get dell'API Cloud SQL Admin.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • INSTANCE_NAME: il nome dell'istanza.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    REST v1beta4

    Per controllare quali versioni del database di destinazione sono disponibili per l'upgrade in loco della versione principale di un'istanza, utilizza il metodo instances.get dell'API Cloud SQL Admin.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • INSTANCE_NAME: il nome dell'istanza.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    Per l'elenco completo delle versioni del database supportate da Cloud SQL, consulta Versioni del database e criteri delle versioni.

  3. Considera le funzionalità offerte in ogni versione principale del database e risolvi le incompatibilità.

    Le nuove versioni principali introducono modifiche incompatibili che potrebbero richiedere di modificare il codice dell'applicazione, lo schema o le impostazioni del database. Prima di eseguire l'upgrade dell'istanza di database, consulta le note di rilascio della versione principale di destinazione per determinare le incompatibilità da risolvere.

    Dopo l'upgrade a una versione successiva, il valore predefinito di alcune variabili di sistema potrebbe cambiare. Ad esempio, il valore predefinito di character_set_server in MySQL 5.6 e MySQL 5.7 è utf8. Quando esegui l'upgrade a MySQL 8.0, il valore predefinito di character_set_server cambia in utf8mb4. Per ripristinare utf8, devi modificare manualmente il valore del flag di database riportandolo al valore precedente. Per ulteriori informazioni, consulta Configurare i flag di database. La maggior parte delle modifiche ai valori predefiniti viene apportata dalla community MySQL (scopri di più in Upgrade Server Defaults).

  4. Esegui il controllo preliminare per gli upgrade.

    • Se esegui l'upgrade da MySQL 5.7 a 8.0, esegui un controllo preliminare per gli upgrade da MySQL 5.7 a 8.0. Puoi utilizzare l'utilità di controllo dell'upgrade nella shell MySQL.
    • Se esegui l'upgrade da MySQL 8.0 a 8.4, esegui un controllo preliminare per gli upgrade da MySQL 8.0 a 8.4. Puoi utilizzare l'utilità di controllo dell'upgrade nella shell MySQL.

      Se vengono rilevati problemi durante il controllo preliminare, risolvili prima di procedere con l'upgrade. Cloud SQL non supporta il controllo preliminare durante l'upgrade della versione principale. Anche un tentativo di upgrade di un'istanza per cui il controllo preliminare non è riuscito potrebbe non andare a buon fine.

  5. Controlla lo spazio su disco e i tipi di macchine delle istanze.

    L'upgrade di una versione principale richiede risorse aggiuntive, come spazio su disco, per archiviare le tabelle aggiornate. Se lo spazio su disco non è sufficiente, l'upgrade non riesce e viene eseguito il rollback. Per un upgrade da MySQL 5.7 a 8.0, è necessaria memoria aggiuntiva per convertire i vecchi metadati nel nuovo dizionario dei dati. Prima di eseguire un upgrade della versione principale, assicurati di avere più di 100 KB di memoria per ogni tabella. Puoi aumentare temporaneamente la memoria modificando il tipo di macchina.

  6. Per gli upgrade da MySQL 5.7 a MySQL 8.0, verifica le modifiche alle concessioni utente in MySQL 8.0

    Cloud SQL per MySQL versione 8.0 utilizza un flag denominato partial_revokes, che è impostato su ON per impostazione predefinita. A differenza di MySQL 5.7, questo flag rimuove la possibilità di utilizzare caratteri jolly nei comandi GRANT del database. Per garantire che gli utenti del database abbiano accesso agli schemi di database corretti, modifica i privilegi degli utenti del database prima di eseguire l'upgrade a MySQL 8.0. Aggiorna i privilegi dell'utente in modo che utilizzi il nome completo degli schemi di database richiesti anziché caratteri jolly.

    Per ulteriori informazioni sul funzionamento di questo flag in MySQL 8.0, consulta partial_revokes in MySQL 8.0.

  7. Testa l'upgrade con un test dry run.

    Esegui una prova del processo di upgrade end-to-end in un ambiente di test prima di eseguire l'upgrade del database di produzione. Puoi clonare l'istanza per creare una copia identica dei dati su cui testare la procedura di upgrade.

    Oltre a verificare che l'upgrade venga completato correttamente, esegui test per assicurarti che l'applicazione si comporti come previsto nel database aggiornato.

  8. Decidi un orario per l'upgrade.

    L'upgrade richiede che l'istanza non sia disponibile per un periodo di tempo. Pianifica l'upgrade durante un periodo di attività ridotta del database.

Prepararsi per un upgrade della versione principale

Prima di eseguire l'upgrade, completa i seguenti passaggi:

  1. SOLO per gli upgrade da MySQL 5.7 a 8.0: controlla e risolvi i problemi di incompatibilità rilevati durante il processo di pre-controllo. I problemi comuni riscontrati possono includere:

    1. Aggiunta di nuove parole chiave riservate, ad esempio RANKS, GROUPS, FUNCTION, in stored procedure, trigger e altri oggetti di database. Per ulteriori informazioni, consulta Parole chiave e parole riservate.
    2. Caratteri UTF non validi nelle definizioni delle tabelle.
    3. Transazioni XA non confermate che devono essere confermate (utilizzando l'istruzione XA COMMIT) o annullate (utilizzando l'istruzione XA ROLLBACK).
    4. Vincolo di chiave esterna nei nomi più lunghi di 64 caratteri.
    5. Tipo di dati spaziali nell'indice misto delle colonne. Per maggiori informazioni, consulta Tipo di dati spaziali.

    Per assistenza nella risoluzione dei problemi relativi a errori e problemi noti durante il controllo preliminare, consulta Problemi noti relativi all'upgrade in loco a MySQL 8.0. Per saperne di più sui problemi comuni di MySQL, consulta Preparare l'installazione per l'upgrade ed Eseguire l'upgrade a MySQL 8.0?.

    SOLO per gli upgrade da MySQL 8.0 a MySQL 8.4: controlla e correggi i problemi di incompatibilità rilevati durante il processo di precontrollo. Un problema comune potrebbe includere:

    • Terminologia di replica obsoleta. I termini MASTER e SLAVE vengono completamente rimossi da MySQL 8.4. Se utilizzi ancora comandi o configurazioni con questi termini, devi sostituirli o rimuoverli. Per saperne di più sulla rimozione e la sostituzione di questi termini, consulta Novità di MySQL 8.4 rispetto a MySQL 8.0.
    • Aggiorna il plug-in di autenticazione dei tuoi account utente esistenti in modo che utilizzi il plug-in di autenticazione caching_sha2_password anziché il plug-in mysql_native_password ritirato.

      Per modificare gli account utente del database esistenti in modo che utilizzino il plug-in di autenticazione caching_sha2_password, utilizza il seguente comando:
           ALTER USER 'username'@'%'
           IDENTIFIED WITH caching_sha2_password BY 'user_password';
           
      Sostituisci username e user_password con i valori dell'account utente che stai aggiornando.
  2. Controllare lo spazio su disco e il tipo di macchina dell'istanza

    Gli upgrade delle versioni principali richiedono spazio su disco e memoria aggiuntivi per archiviare le tabelle aggiornate e il nuovo dizionario dei dati. Spazio su disco insufficiente causa l'errore dell'upgrade e il rollback alla versione originale. Cloud SQL consiglia di avere un minimo di 100 KB di memoria per ogni tabella.

    Nota: puoi aumentare temporaneamente la memoria modificando il tipo di macchina prima di eseguire l'upgrade della versione principale. Per saperne di più, consulta Modificare il tipo di macchina.

Esegui l'upgrade della versione principale

Puoi eseguire l'upgrade della versione principale di una singola istanza Cloud SQL oppure puoi eseguire l'upgrade della versione principale di un'istanza principale e includere tutte le relative repliche, incluse le repliche in cascata e le repliche cross-region.

Esegui l'upgrade della versione principale di una singola istanza

Quando avvii un'operazione di upgrade per una singola istanza, Cloud SQL esegue le seguenti operazioni:

  1. Controlla la configurazione dell'istanza per assicurarsi che sia compatibile con un upgrade.
  2. Dopo che Cloud SQL verifica la configurazione, Cloud SQL rende l'istanza non disponibile.
  3. Esegue un backup pre-upgrade.
  4. Esegue l'upgrade dell'istanza.
  5. Rende disponibile l'istanza.
  6. Esegue un backup post-upgrade.
Quando esegui l'upgrade a MySQL 8.0, Cloud SQL esegue automaticamente il provisioning dell'istanza sulla versione secondaria predefinita.

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Modifica.
  4. Nella sezione Informazioni sull'istanza, fai clic sul pulsante Esegui l'upgrade e conferma che vuoi passare alla pagina di upgrade.
  5. Nella pagina Scegli una versione del database, fai clic sull'elenco Versione del database per l'upgrade e seleziona una delle versioni principali del database disponibili.
  6. Fai clic su Continua.
  7. Nella casella ID istanza, inserisci il nome dell'istanza e poi fai clic sul pulsante Avvia upgrade.
Il completamento dell'operazione richiede diversi minuti.

Verifica che la versione principale del database di cui è stato eseguito l'upgrade venga visualizzata sotto il nome dell'istanza nella pagina Panoramica dell'istanza.

gcloud

  1. Avvia l'upgrade.

    Utilizza il comando gcloud sql instances patch con il flag --database-version.

    Prima di eseguire il comando, sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza.
    • DATABASE_VERSION: l'enumerazione per la versione principale del database, che deve essere successiva alla versione attuale. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Pianifica l'upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseEnums.
    gcloud sql instances patch INSTANCE_NAME \
    --database-version=DATABASE_VERSION

    Il completamento degli upgrade delle versioni principali richiede diversi minuti. Potresti visualizzare un messaggio che indica che l'operazione sta richiedendo più tempo del previsto. Puoi ignorare questo messaggio o eseguire il comando gcloud sql operations wait per chiuderlo.

  2. Recupera il nome dell'operazione di upgrade.

    Utilizza il comando gcloud sql operations list con il flag --instance.

    Prima di eseguire il comando, sostituisci la variabile INSTANCE_NAME con il nome dell'istanza.

    gcloud sql operations list --instance=INSTANCE_NAME
  3. Monitora lo stato dell'upgrade.

    Utilizza il comando gcloud sql operations describe.

    Prima di eseguire il comando, sostituisci la variabile OPERATION con il nome dell'operazione di upgrade recuperato nel passaggio precedente.

    gcloud sql operations describe OPERATION

REST v1

  1. Avvia l'upgrade in loco.

    Utilizza una richiesta PATCH con il metodo instances:patch.

    Prima di utilizzare i dati della richiesta, sostituisci queste variabili:

    • PROJECT_ID: l'ID del progetto.
    • INSTANCE_NAME: il nome dell'istanza.

    Metodo HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Corpo JSON della richiesta:

    {
      "databaseVersion": DATABASE_VERSION
    }

    Sostituisci DATABASE_VERSION con l'enum per la versione principale del database, che deve essere successiva alla versione corrente. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Pianifica l'upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseVersion.

  2. Recupera il nome dell'operazione di upgrade.

    Utilizza una richiesta GET con il metodo operations.list dopo aver sostituito PROJECT_ID con l'ID del progetto.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
  3. Monitora lo stato dell'upgrade.

    Utilizza una richiesta GET con il metodo operations.get dopo aver sostituito le seguenti variabili:

    • PROJECT_ID: l'ID del progetto.
    • OPERATION_NAME: il nome dell'operazione di upgrade recuperato nel passaggio precedente.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME

Terraform

Per aggiornare la versione del database, utilizza una risorsa Terraform e il provider Terraform per Google Cloud, versione 4.34.0 o successive.

resource "google_sql_database_instance" "instance" {
  name             = "mysql-instance"
  region           = "us-central1"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-n1-standard-2"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Applica le modifiche

Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.

Prepara la directory

Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file viene denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel file main.tf appena creato.

    (Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
    terraform init

    (Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione -upgrade:

    terraform init -upgrade

Applica le modifiche

  1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione di Terraform eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply

    Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).

  3. Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.

Elimina le modifiche

Per eliminare le modifiche:

  1. Per disattivare la protezione dall'eliminazione, imposta l'argomento deletion_protection su false nel file di configurazione Terraform.
    deletion_protection =  "false"
  2. Applica la configurazione Terraform aggiornata eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply
  1. Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo yes al prompt:

    terraform destroy

Quando invii una richiesta di upgrade in loco, Cloud SQL esegue innanzitutto un controllo pre-upgrade. Se Cloud SQL determina che la tua istanza non è pronta per un upgrade, la richiesta di upgrade non va a buon fine e viene visualizzato un messaggio che suggerisce come risolvere il problema. Vedi anche Risolvere i problemi relativi all'upgrade di una versione principale.

Includi le repliche nell'upgrade della versione principale

Se l'istanza principale ha repliche, puoi includerle tutte nell'upgrade. Cloud SQL può eseguire l'upgrade di tutte le repliche dell'istanza principale, incluse le repliche cross-region e a cascata.

Quando includi le repliche in un upgrade della versione principale, Cloud SQL esegue le seguenti operazioni:

  1. Controlla la configurazione dell'istanza principale e delle repliche per assicurarsi che l'istanza e le repliche siano compatibili per un upgrade.
  2. Rende non disponibile l'istanza principale.
  3. Crea un backup pre-upgrade dell'istanza principale.
  4. Interrompe la replica per tutte le repliche.
  5. Esegue l'upgrade sull'istanza principale.
  6. Se l'upgrade sull'istanza primaria va a buon fine, l'istanza primaria torna disponibile e la replica viene riavviata.
  7. Cloud SQL esegue un backup post-upgrade dell'istanza principale.
  8. Cloud SQL procede all'upgrade di tutte le repliche.

Anche se l'upgrade della versione principale di una replica non va a buon fine, l'istanza principale continua a essere disponibile.

Per includere le repliche in un upgrade della versione principale, non puoi utilizzare la consoleGoogle Cloud o Terraform. Puoi utilizzare solo gcloud CLI o l'API Cloud SQL Admin.

gcloud

  1. Avvia l'upgrade.

    Utilizza il comando gcloud sql instances patch con i flag --database-version e --include-replicas-for-major-version-upgrade.

    Prima di eseguire il comando, sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza principale.
    • DATABASE_VERSION: l'enumerazione per la versione principale del database, che deve essere successiva alla versione attuale. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Pianifica l'upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseEnums.
    gcloud sql instances patch INSTANCE_NAME \
      --database-version=DATABASE_VERSION \
      --include-replicas-for-major-version-upgrade

    Il completamento degli upgrade delle versioni principali richiede diversi minuti. Potresti visualizzare un messaggio che indica che l'operazione sta richiedendo più tempo del previsto. Puoi ignorare questo messaggio o eseguire il comando gcloud sql operations wait per chiuderlo. L'upgrade delle repliche può richiedere diversi minuti. Per controllare lo stato dell'upgrade:

  2. Recupera il nome dell'operazione di upgrade.

    Utilizza il comando gcloud sql operations list con il flag --instance.

    Prima di eseguire il comando, sostituisci la variabile INSTANCE_NAME con il nome dell'istanza.

    gcloud sql operations list --instance=INSTANCE_NAME
  3. Monitora lo stato dell'upgrade.

    Utilizza il comando gcloud sql operations describe.

    Prima di eseguire il comando, sostituisci la variabile OPERATION con il nome dell'operazione di upgrade recuperato nel passaggio precedente.

    gcloud sql operations describe OPERATION

REST

  1. Avvia l'upgrade in loco.

    Utilizza una richiesta PATCH con il metodo instances:patch.

    Prima di utilizzare i dati della richiesta, sostituisci queste variabili:

    • PROJECT_ID: l'ID del progetto.
    • INSTANCE_NAME: il nome dell'istanza.

    Metodo HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Corpo JSON della richiesta:

    {
      "databaseVersion": DATABASE_VERSION
      "includeReplicasForMajorVersionUpgrade": true
    }

    • Sostituisci DATABASE_VERSION con l'enum per la versione principale del database, che deve essere successiva alla versione corrente. Specifica una versione del database per una versione principale disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questo enum come primo passaggio di Pianifica l'upgrade. Se hai bisogno di un elenco completo degli enum delle versioni del database, consulta SqlDatabaseVersion.
    • Nel campo includeReplicasForMajorVersionUpgrade, specifica true.

  2. Recupera il nome dell'operazione di upgrade.

    Utilizza una richiesta GET con il metodo operations.list dopo aver sostituito PROJECT_ID con l'ID del progetto.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
  3. Monitora lo stato dell'upgrade.

    Utilizza una richiesta GET con il metodo operations.get dopo aver sostituito le seguenti variabili:

    • PROJECT_ID: l'ID del progetto.
    • OPERATION_NAME: il nome dell'operazione di upgrade recuperato nel passaggio precedente.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME

Backup automatici degli upgrade

Quando esegui un upgrade della versione principale, Cloud SQL esegue automaticamente due backup on demand, chiamati backup di upgrade:

  • Il primo backup dell'upgrade è il backup pre-upgrade, che viene eseguito immediatamente prima di iniziare l'upgrade. Puoi utilizzare questo backup per ripristinare l'istanza di database allo stato della versione precedente.
  • Il secondo backup dell'upgrade è il backup post-upgrade, che viene eseguito immediatamente dopo che sono consentite nuove scritture nell'istanza del database aggiornata.

Quando visualizzi l'elenco dei backup, i backup dell'upgrade sono elencati con il tipo On-demand. I backup di upgrade sono etichettati in modo da poterli identificare rapidamente. Ad esempio, se esegui l'upgrade da MySQL 5.7 a MySQL 8.0, il backup pre-upgrade è etichettato Pre-upgrade backup, MYSQL_5_7 to MYSQL_8_0. e il backup post-upgrade Post-upgrade backup, MYSQL_8_0 from MYSQL_5_7. Se esegui l'upgrade da MySQL 8.0 a MySQL 8.4, il backup pre-upgrade è etichettato Pre-upgrade backup, MYSQL_8_0 to MYSQL_8_4. e il backup post-upgrade Post-upgrade backup, MYSQL_8_4 from MYSQL_8_0.

Come per gli altri backup on demand, i backup dell'upgrade vengono conservati finché non li elimini o finché non elimini l'istanza. Se hai abilitato il PITR, non puoi eliminare i backup dell'upgrade mentre si trovano nel periodo di conservazione. Se devi eliminare i backup dell'upgrade, devi disattivare PITR o attendere che i backup dell'upgrade non rientrino più nella finestra di conservazione.

Completa l'upgrade della versione principale

Dopo aver completato l'upgrade dell'istanza principale, segui questi passaggi per completare l'upgrade:

  1. Esegui test di accettazione.

    Esegui test per verificare che il sistema aggiornato funzioni come previsto.

  2. (Facoltativo) Aggiorna i privilegi utente.

    Se hai eseguito l'upgrade a MySQL 8.0, tieni presente che MySQL ha modificato i sistemi di gestione della sicurezza e degli account. Per saperne di più, consulta Novità di MySQL 8.0.

    Ciò potrebbe comportare che gli utenti creati nella versione MySQL 5.7 dell'istanza non abbiano gli stessi privilegi degli utenti creati direttamente in MySQL 8.0. Ad esempio, un utente che ha eseguito l'upgrade da MySQL 5.7 potrebbe non disporre dei privilegi CREATE ROLE e DROP ROLE perché non esistevano in MySQL 5.7. Cloud SQL consiglia di reimpostare i privilegi utente dopo l'upgrade delle versioni per risolvere eventuali problemi correlati.

    Se hai eseguito l'upgrade da MySQL 8.0 a MySQL 8.4, sono state apportate ulteriori modifiche ai privilegi utente, tra cui l'aggiunta di privilegi introdotti in MySQL 8.4 e la rimozione di privilegi esistenti in MySQL 8.0. Per saperne di più, consulta Privilegi utente di MySQL 8.4 (cloudsqlsuperuser).

    Puoi aggiornare i privilegi utente in MySQL 8.0 o MySQL 8.4 nel seguente modo:

    1. Crea un utente con il ruolo cloudsqlsuperuser concesso.

    2. Utilizza l'utente creato per revocare tutti i privilegi precedenti di un utente di cui è stato eseguito l'upgrade con:

      REVOKE ALL PRIVILEGES ON *.* FROM user@host
    3. Concedi i privilegi previsti all'utente di cui è stato eseguito l'upgrade.
  3. (Facoltativo) Crea un backup.

    Anche se Cloud SQL crea automaticamente un backup dopo l'upgrade dell'istanza principale, Cloud SQL consiglia di creare un backup autonomamente in modo da poter recuperare il database, se necessario.

  4. (Facoltativo) Se hai eseguito l'upgrade a Cloud SQL per MySQL 8.4, aggiorna anche tutti i connettori, i client e le shell MySQL a MySQL 8.4.

Risolvere i problemi relativi all'upgrade di una versione principale

Cloud SQL restituisce un messaggio di errore se tenti un comando di upgrade non valido, ad esempio se l'istanza contiene flag di database non validi per la nuova versione.

Se la richiesta di upgrade non va a buon fine, controlla la sintassi della richiesta. Se la richiesta ha una struttura valida, prova a esaminare i seguenti suggerimenti.

Visualizza log degli errori

Se si verificano problemi con una richiesta di upgrade valida, Cloud SQL pubblica i log degli errori in projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql.err. Ogni voce di log contiene un'etichetta con l'identificatore dell'istanza per aiutarti a identificare l'istanza con l'errore di upgrade. Cerca questi errori di upgrade e risolvili.

Per visualizzare i log degli errori, utilizza la console Google Cloud:

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Nel riquadro Operazioni e log della pagina Panoramica dell'istanza, fai clic sul link Visualizza i log degli errori MySQL.

    Si apre la pagina Esplora log.

  4. Visualizza i log nel seguente modo:

    • Per elencare tutti i log degli errori in un progetto, seleziona il nome del log nel filtro log Nome log.

    Per maggiori informazioni sui filtri delle query, consulta la sezione Query avanzate.

    • Per filtrare i log degli errori di upgrade per una singola istanza, inserisci la seguente query nella casella Cerca in tutti i campi, dopo aver sostituito DATABASE_ID

    con l'ID progetto seguito dal nome dell'istanza in questo formato: project_id:instance_name.

    resource.type="cloudsql_database"
    resource.labels.database_id="DATABASE_ID"
    logName : "projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql.err"

    Ad esempio, per filtrare i log degli errori di upgrade in base a un'istanza denominata shopping-db in esecuzione nel progetto buylots, utilizza il seguente filtro query:

     resource.type="cloudsql_database"
     resource.labels.database_id="buylots:shopping-db"
     logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fmysql.err"

    Puoi esaminare tutti i log segnalati in un determinato periodo di tempo oppure filtrare i log in base alla gravità. Un'opzione comune per la risoluzione dei problemi potrebbe includere la selezione dei seguenti filtri:

    • Emergenza
    • Avviso
    • Critico
    • Errore

    Potresti riscontrare alcuni problemi noti durante il controllo preliminare e l'upgrade da MySQL versione 5.7 a 8.0. Per assistenza nella risoluzione di questi problemi, consulta la sezione Problemi noti relativi all'upgrade in loco a MySQL 8.0.

Ripristina la versione principale precedente dell'istanza primaria

Se il sistema di database aggiornato non funziona come previsto, potrebbe essere necessario ripristinare la versione precedente dell'istanza principale. A questo scopo, ripristina il backup pre-upgrade in un'istanza di recupero Cloud SQL, ovvero una nuova istanza che esegue la versione pre-upgrade.

Per ripristinare una versione precedente dell'istanza primaria, segui questi passaggi:

  1. Identifica il backup pre-upgrade.

    Consulta Backup automatici degli upgrade.

  2. Crea un'istanza di recupero.

    Crea una nuova istanza Cloud SQL utilizzando la versione principale in esecuzione su Cloud SQL al momento della creazione del backup pre-upgrade. Imposta gli stessi flag e impostazioni dell'istanza utilizzate dall'istanza originale.

  3. Ripristina il backup precedente all'upgrade.

    Ripristina il backup pre-upgrade nell'istanza di recupero. L'operazione potrebbe richiedere diversi minuti.

  4. Aggiungi le repliche di lettura.

    Se utilizzi repliche di lettura, aggiungile singolarmente.

  5. Connetti la tua applicazione.

    Dopo aver recuperato il sistema di database, aggiorna l'applicazione con i dettagli sull'istanza di recupero e sulle relative repliche di lettura. Puoi riprendere a pubblicare il traffico nella versione precedente del database.

Limitazioni

Questa sezione elenca le limitazioni per un upgrade in loco della versione principale.

  • Non puoi eseguire un upgrade in loco della versione principale su una replica esterna.
  • L'upgrade delle istanze da MySQL 5.7 a 8.0 con più di 512.000 tabelle potrebbe richiedere molto tempo e andare in timeout.
  • L'upgrade delle istanze da MySQL 8.0 a 8.4 con più di 512.000 tabelle potrebbe richiedere molto tempo e andare in timeout.
  • Quando esegui l'upgrade da MySQL 8.0 a 8.4, se hai eseguito l'upgrade di una replica a MySQL 8.4, ma non dell'istanza primaria, è possibile creare un nuovo account utente su un'istanza primaria non aggiornata con il plug-in di autenticazione mysql_native_password ritirato. Per evitare questa situazione, assicurati di eseguire l'upgrade dell'istanza primaria immediatamente dopo l'upgrade delle repliche oppure crea nuovi account utente solo sull'istanza primaria utilizzando il seguente comando.

    CREATE USER 'USERNAME'@'%' IDENTIFIED WITH caching_sha2_password BY 'PASSWORD';

    Sostituisci USERNAME e PASSWORD con i valori appropriati.

Domande frequenti

Quando esegui l'upgrade della versione principale del database, potrebbero sorgere le seguenti domande.

La mia istanza non è disponibile durante un upgrade?
Sì. L'istanza rimane non disponibile per un periodo di tempo mentre Cloud SQL esegue l'upgrade.
Quanto tempo richiede un upgrade?

L'upgrade di una singola istanza in genere richiede meno di 10 minuti. Se la configurazione dell'istanza ha un numero ridotto di vCPU o memoria, l'upgrade potrebbe richiedere più tempo.

Se la tua istanza ospita troppi database o tabelle oppure i tuoi database sono molto grandi, l'upgrade potrebbe richiedere ore o addirittura scadere perché il tempo totale di upgrade corrisponde al numero di oggetti nei tuoi database. Se hai più istanze di cui eseguire l'upgrade, il tempo di upgrade aumenta proporzionalmente. Se includi repliche nell'upgrade, l'operazione di upgrade può richiedere fino a un'ora, a seconda del numero di repliche dell'istanza principale.

Posso monitorare ogni passaggio della procedura di upgrade?
Anche se Cloud SQL ti consente di monitorare se un'operazione di upgrade è ancora in corso, non puoi monitorare i singoli passaggi di ogni upgrade.
Posso annullare l'upgrade dopo averlo avviato?
No, non puoi annullare un upgrade una volta avviato. Se l'upgrade non va a buon fine, Cloud SQL recupera automaticamente l'istanza nella versione precedente.
Cosa succede alle mie impostazioni durante un upgrade?

Quando esegui un upgrade della versione principale sul posto, Cloud SQL conserva le impostazioni del database, inclusi il nome dell'istanza, l'indirizzo IP, i valori dei flag configurati in modo esplicito e i dati utente. Tuttavia, il valore predefinito delle variabili di sistema potrebbe cambiare. Ad esempio, il valore predefinito del flag character_set_server in MySQL 5.7 è utf8. Quando esegui l'upgrade a MySQL 8.0, il valore predefinito del flag cambia in utf8mb4. Per ripristinare utf8, imposta di nuovo il valore del flag sul valore precedente.

Per scoprire di più, consulta Configurare i flag di database. Se un determinato flag o valore non è più supportato nella versione di destinazione, Cloud SQL rimuove automaticamente il flag durante l'upgrade.

Cosa posso fare se la replica si interrompe dopo l'upgrade di una replica?

Se la replica si interrompe dopo l'upgrade di una replica, Cloud SQL esegue il rollback della replica alla versione principale di MySQL dell'istanza principale. Puoi eseguire di nuovo l'upgrade della replica, ma se il problema persiste, la replica potrebbe interrompersi di nuovo. Per questo motivo, ti consigliamo di includere le repliche quando esegui l'upgrade della versione principale anziché eseguire l'upgrade di ogni replica separatamente.

Se il rollback della replica non viene eseguito alla stessa versione principale dell'istanza principale, hai due opzioni:

  1. Elimina la replica danneggiata, creane una nuova ed esegui l'upgrade della nuova replica.

    Se l'upgrade non riesce di nuovo, è probabile che sia causato da modifiche incompatibili aggiunte all'istanza principale durante l'upgrade. Risolvi i problemi dell'upgrade per individuare il problema, correggi l'istanza principale e prova a eseguire l'upgrade della replica. Per ulteriori informazioni, consulta la sezione Risoluzione dei problemi.

  2. Esegui l'upgrade dell'istanza principale

    Se il thread di replica non funziona, l'operazione di upgrade sull'istanza principale ricrea le repliche.

Perché la mia replica di cui è stato eseguito l'upgrade è rollback alla versione principale precedente?

Se un upgrade non va a buon fine, la replica viene eseguito il rollback alla versione dell'istanza principale. Puoi eseguire di nuovo l'upgrade della replica, ma se il problema persiste, puoi controllare il log mysql.err sulla replica per trovare l'origine. Cerca parole chiave come [REPL]... failed executing transaction.... end_log_pos...; Failure Reason.

Se il messaggio di errore contiene Access denied for AuthId.... con modifiche ai privilegi utente, è probabile che venga eseguita una query utilizzando i privilegi utente di MySQL 5.7 sugli schemi mysql e sys e potrebbe non riuscire a causa delle modifiche ai sistemi di gestione di sicurezza e account in MySQL 8.0. Per risolvere il problema, devi interrompere le query sull'istanza primaria prima di eseguire l'upgrade dell'istanza primaria alla nuova versione e poi riprovare l'upgrade della replica. Cloud SQL consiglia di interrompere temporaneamente anche tutte queste query nell'istanza principale prima di eseguire l'upgrade alla nuova versione, in quanto potrebbe verificarsi un problema simile.

Se non vedi il motivo dell'errore, ad esempio Access denied for AuthID.... nei log MySQL, è probabile che il problema sia causato da nuovi dati incompatibili che potrebbero essere stati aggiunti all'istanza principale dopo l'upgrade della replica. Consulta la sezione Prepararsi all'upgrade di una versione principale per scoprire come risolvere i problemi di incompatibilità prima di eseguire di nuovo l'upgrade.

Passaggi successivi