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.
L'operazione di upgrade in loco di Cloud SQL per SQL Server utilizza l'utilità di upgrade in loco di SQL Server.Pianificare un upgrade della versione principale
- Verifica di disporre del ruolo richiesto per eseguire un upgrade della versione principale: Proprietario Cloud SQL o Amministratore Cloud SQL.
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:
- Esegui questo comando.
- Nell'output del comando,
individua la sezione etichettata
upgradableDatabaseVersions
. - 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.displayName
: il nome visualizzato per la versione del database.
gcloud sql instances describe INSTANCE_NAME
Sostituisci INSTANCE_NAME con il nome dell'istanza.
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: "SQLSERVER_2022_STANDARD" name: "SQLSERVER_2022_STANDARD" display_name: "SQL Server 2022 Standard" }
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: "SQLSERVER_2022_STANDARD" name: "SQLSERVER_2022_STANDARD" display_name: "SQL Server 2022 Standard" }
Per l'elenco completo delle versioni del database supportate da Cloud SQL, consulta Versioni del database e criteri delle versioni.
Considera le funzionalità offerte in ogni versione principale del database e risolvi le incompatibilità.
Consulta le funzionalità ritirate e le modifiche che causano interruzioni di SQL Server.
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.
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.
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.
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:
- Controlla la configurazione dell'istanza per assicurarsi che sia compatibile con un upgrade.
- Dopo che Cloud SQL verifica la configurazione, Cloud SQL rende l'istanza non disponibile.
- Esegue un backup pre-upgrade.
- Esegue l'upgrade dell'istanza.
- Rende disponibile l'istanza.
- Esegue un backup post-upgrade.
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Fai clic su Modifica.
- Nella sezione Informazioni sull'istanza, fai clic sul pulsante Esegui l'upgrade e conferma che vuoi passare alla pagina di upgrade.
- 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.
- Fai clic su Continua.
- Nella casella ID istanza, inserisci il nome dell'istanza e poi fai clic sul pulsante Avvia upgrade.
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
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.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
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
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.
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
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.
Applica le modifiche
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
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).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
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
-
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.
-
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).
- 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:
- Per disattivare la protezione dall'eliminazione, imposta l'argomento
deletion_protection
sufalse
nel file di configurazione Terraform.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il comando seguente e
inserendo
yes
al prompt:terraform apply
-
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.
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 SQL Server Enterprise 2017 a SQL Server Enterprise 2019 o SQL Server
Enterprise 2022, il backup pre-upgrade è etichettato come Pre-upgrade backup, SQLSERVER_2017_ENTERPRISE to SQLSERVER_2019_ENTERPRISE or SQLSERVER_2022_ENTERPRISE.
e il backup post-upgrade è etichettato come
Post-upgrade backup, SQLSERVER_2019_ENTERPRISE or SQLSERVER_2022_ENTERPRISE from SQLSERVER_2017_ENTERPRISE.
Come per gli altri backup on demand, i backup dell'upgrade vengono conservati finché non li elimini o finché non elimini l'istanza.
Eseguire l'upgrade del livello di compatibilità del database
Il livello di compatibilità del database determina il comportamento del database rispetto all'applicazione a cui fornisce i dati. L'impostazione del livello di compatibilità del database garantisce la compatibilità con le versioni precedenti di SQL Server ed è correlata alle modifiche di Transact-SQL e Query Optimizer. Quando viene eseguito l'upgrade della versione del database di un'istanza SQL Server, i livelli di compatibilità dei database esistenti vengono mantenuti, in modo che l'applicazione possa continuare a operare sulla versione più recente di SQL Server. L'upgrade del livello di compatibilità ti consente di usufruire di nuove funzionalità, miglioramenti dell'elaborazione delle query e altre modifiche.
Dopo aver eseguito l'upgrade della versione del motore del database di un'istanza, quando l'applicazione a cui il database fornisce i dati è pronta, esegui l'upgrade del livello di compatibilità del database per ogni database nell'istanza. Quando il livello di compatibilità è impostato sull'ultima versione, i database vengono aggiornati con le funzionalità più recenti e un rendimento migliore.
Per eseguire l'upgrade del livello di compatibilità del database:
Identifica il livello di compatibilità attuale del tuo database.
Ad esempio, per SQL Server 2017, il livello di compatibilità predefinito è 140. Per controllare il livello di compatibilità attuale del database, esegui questo comando in Transact-SQL, dopo aver sostituito
DATABASE_NAME
con il nome del database sull'istanza SQL Server.
USE DATABASE_NAME GO SELECT compatibility_level FROM sys.databases WHERE name = 'DATABASE_NAME'
Determina il livello di compatibilità target.
Identifica la designazione del livello di compatibilità predefinito per la versione del database aggiornata per determinare il livello di compatibilità target per il database. Ad esempio, per SQL Server 2022, il livello di compatibilità predefinito è 160. Consulta la tabella che mette in relazione le nuove versioni di SQL Server con i livelli di compatibilità.
Valuta le differenze tra i livelli di compatibilità attuali e di destinazione.
Prima di eseguire l'upgrade del livello di compatibilità, studia le differenze nel comportamento del sistema tra il livello di compatibilità attuale e quello di destinazione. Consulta l'elenco completo delle differenze tra i livelli di compatibilità.
Raccogli una baseline dei dati del workload.
Prima di eseguire l'upgrade del livello di compatibilità, raccogli una baseline dei dati del carico di lavoro utilizzando SQL Server Query Store, in modo da poter identificare e risolvere in un secondo momento le query regredite. Utilizzi Query Store per acquisire query e piani per un ciclo aziendale tipico per stabilire una base di riferimento per il rendimento. Per un flusso di lavoro guidato, utilizza la funzionalità Assistente per l'ottimizzazione delle query in SQL Server Management Studio.
Esegui l'upgrade del livello di compatibilità.
Per modificare il livello di compatibilità del database, esegui il seguente comando in Transact-SQL dopo aver sostituito
DATABASE_NAME
con il nome del database nell'istanza SQL Server e
TARGET_COMPATIBILITY_LEVEL
con il livello di compatibilità di destinazione.ALTER DATABASE DATABASE_NAME SET COMPATIBILITY_LEVEL = TARGET_COMPATIBILITY_LEVEL; GO
Raccogli i dati dei workload di cui è stato eseguito l'upgrade.
Raccogli i dati dei carichi di lavoro aggiornati utilizzando Query Store per il confronto e il rilevamento della regressione.
Query di regressione degli indirizzi.
Nella maggior parte dei casi, le modifiche apportate allo strumento di ottimizzazione delle query nei livelli di compatibilità aggiornati migliorano il rendimento. Tuttavia, di tanto in tanto, le prestazioni di alcune query potrebbero peggiorare. La funzionalità Query con regressione di Query Store ti aiuta a identificare le query che hanno subito una regressione e ti consente di forzare l'ultimo piano di query valido noto. SQL Server offre anche la correzione automatica del piano, che può passare automaticamente all'ultimo piano valido noto in caso di regressione della query.
Completa l'upgrade della versione principale
Dopo aver eseguito l'upgrade dell'istanza principale, esegui i test di accettazione per assicurarti che il sistema aggiornato funzioni come previsto.
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%2Fsqlserver.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:
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
Nel riquadro Operazioni e log della pagina Panoramica dell'istanza, fai clic sul link Visualizza log degli errori di SQL Server.
Si apre la pagina Esplora log.
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%2Fsqlserver.err"
Ad esempio, per filtrare i log degli errori di upgrade in base a un'istanza denominata
shopping-db
in esecuzione nel progettobuylots
, utilizza il seguente filtro query:resource.type="cloudsql_database" resource.labels.database_id="buylots:shopping-db" logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fsqlserver.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
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:
Identifica il backup pre-upgrade.
Consulta Backup automatici degli upgrade.
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.
Ripristina il backup precedente all'upgrade.
Ripristina il backup pre-upgrade nell'istanza di recupero. L'operazione potrebbe richiedere diversi minuti.
Aggiungi le repliche di lettura.
Se utilizzi repliche di lettura, aggiungile singolarmente.
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.
Domande frequenti
Quando esegui l'upgrade della versione principale del database, potrebbero sorgere le seguenti domande.
- 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.
- 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.
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.
Passaggi successivi
- Scopri di più sulle opzioni per connettersi a un'istanza.
- Scopri di più sull'importazione e sull'esportazione dei dati.
- Scopri di più sull'impostazione dei flag di database.