Gestione delle repliche di lettura

Questa pagina descrive come gestire le repliche di lettura. Queste operazioni includono la disattivazione e l'abilitazione della replica, la promozione di una replica, la configurazione della replica parallela e il controllo dello stato della replica.

Per ulteriori informazioni sul funzionamento della replica, consulta Replica in Cloud SQL.

Questa pagina si applica alle repliche di un'istanza Cloud SQL. Per configurare un'istanza Cloud SQL in modo che agisca come publisher per un abbonato esterno, consulta Configurare le repliche esterne.

Disabilita replica

Per impostazione predefinita, una replica viene avviata con la replica abilitata. Tuttavia, puoi disattivare la replica, ad esempio per eseguire il debug o analizzare lo stato di un'istanza. Quando è tutto pronto, riattiva esplicitamente la replica. La disattivazione o la nuova attivazione della replica non riavvia l'istanza replica.

La disattivazione della replica non interrompe l'istanza di replica, che diventa un'istanza di sola lettura che non esegue più la replica dall'istanza principale. Continuerai a ricevere gli addebiti per l'istanza. Nella replica disattivata, puoi riattivare la replica, eliminarla o promuoverla a un'istanza autonoma.

Per disattivare la replica:

Console

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

    Vai a Istanze Cloud SQL

  2. Seleziona un'istanza replica facendo clic sul nome.
  3. Fai clic su Disattiva replica nella barra dei pulsanti.
  4. Fai clic su OK.

gcloud

gcloud sql instances patch REPLICA_NAME \
--no-enable-database-replication

REST v1

Per eseguire questo comando cURL a un prompt della riga di comando, devi acquisire un token di accesso utilizzando il comando gcloud auth print-access-token. Puoi anche utilizzare Explorer API nella pagina Instances:patch per inviare la richiesta all'API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza replica

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name

Corpo JSON della richiesta:

{
  "settings":
  {
    "databaseReplicationEnabled": "False"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Per eseguire questo comando cURL a un prompt della riga di comando, devi acquisire un token di accesso utilizzando il comando gcloud auth print-access-token. Puoi anche utilizzare Explorer API nella pagina Instances:patch per inviare la richiesta all'API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza replica

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name

Corpo JSON della richiesta:

{
  "settings":
  {
    "databaseReplicationEnabled": "False"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Abilita replica

Se una replica non viene replicata da molto tempo, occorrerà più tempo per allinearla all'istanza principale. In questo caso, elimina la replica e creane una nuova.

Per attivare la replica:

Console

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

    Vai a Istanze Cloud SQL

  2. Seleziona un'istanza replica facendo clic sul nome.
  3. Fai clic su Attiva la replica.
  4. Fai clic su Ok.

gcloud

gcloud sql instances patch REPLICA_NAME \
--enable-database-replication

REST v1

Per eseguire questo comando cURL a un prompt della riga di comando, devi acquisire un token di accesso utilizzando il comando gcloud auth print-access-token. Puoi anche utilizzare Explorer API nella pagina Instances:patch per inviare la richiesta all'API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza replica

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name

Corpo JSON della richiesta:

{
  "settings":
  {
    "databaseReplicationEnabled": "True"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Per eseguire questo comando cURL a un prompt della riga di comando, devi acquisire un token di accesso utilizzando il comando gcloud auth print-access-token. Puoi anche utilizzare Explorer API nella pagina Instances:patch per inviare la richiesta all'API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza replica

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name

Corpo JSON della richiesta:

{
  "settings":
  {
    "databaseReplicationEnabled": "True"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Promuovi una replica

Con la promozione di una replica di lettura, la replica viene interrotta e l'istanza convertita in un'istanza principale Cloud SQL autonoma con funzionalità di lettura e scrittura.

Quando vengono promosse, le repliche di lettura vengono configurate automaticamente con i backup, ma non come istanze ad alta disponibilità (HA). Puoi attivare l'alta disponibilità dopo la promozione della replica, come faresti per qualsiasi istanza non replica. La configurazione di una replica di lettura per l'alta disponibilità avviene nello stesso modo come per un'istanza principale. Scopri di più sulla configurazione dell'istanza per l'alta disponibilità.

Prima di promuovere una replica di lettura, se l'istanza principale è ancora disponibile e serve i client, devi eseguire i seguenti passaggi:

  1. Interrompi tutte le scritture nell'istanza principale.
  2. Controlla lo stato della replica. Un'opzione per farlo è la dashboard del gruppo di disponibilità AlwaysOn in SQL Server Management Studio (SSMS).
  3. Verifica che la replica sia in corso, quindi controlla il ritardo della replica, ad esempio come indicato dalla metrica seconds_behind_master.

In caso contrario, in un'istanza appena promossa potrebbero mancare alcune transazioni che sono state committate nell'istanza principale.

Per promuovere una replica a un'istanza autonoma:

Console

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

    Vai a Istanze Cloud SQL

  2. Seleziona un'istanza replica facendo clic sul nome.
  3. Fai clic su Promuovi replica.
  4. Fai clic su Ok.

gcloud

gcloud sql instances promote-replica REPLICA_NAME
  

REST v1

Per eseguire questo comando cURL a un prompt della riga di comando, devi acquisire un token di accesso utilizzando il comando gcloud auth print-access-token. Puoi anche utilizzare Explorer API nella pagina Instances:promoteReplica per inviare la richiesta all'API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza replica

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Per eseguire questo comando cURL a un prompt della riga di comando, devi acquisire un token di accesso utilizzando il comando gcloud auth print-access-token. Puoi anche utilizzare Explorer API nella pagina Instances:promoteReplica per inviare la richiesta all'API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza replica

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Verifica che l'istanza promossa sia configurata correttamente. In particolare, se necessario, valuta la possibilità di configurare l'istanza per l'alta disponibilità.

Controllare lo stato della replica

Al momento, devi utilizzare query T-SQL o SSMS per monitorare lo stato della replica. Per ulteriori informazioni, consulta le seguenti risorse:

Risoluzione dei problemi

Problema Risoluzione dei problemi
La replica di lettura non è stata avviata al momento della creazione. Probabilmente è presente un errore più specifico nei file di log. Esamina i log in Cloud Logging per trovare l'errore effettivo.
Impossibile creare la replica di lettura: errore invalidFlagValue. Uno degli indicatori nella richiesta non è valido. Potrebbe trattarsi di un flag fornito esplicitamente o di un flag impostato su un valore predefinito.

Innanzitutto, controlla che il valore del flag max_connections sia maggiore o uguale al valore dell'istanza principale.

Se il flag max_connections è impostato correttamente, esamina i log in Cloud Logging per trovare l'errore effettivo.

Impossibile creare la replica di lettura - errore sconosciuto. Probabilmente è presente un errore più specifico nei file di log. Esamina i log in Cloud Logging per trovare l'errore effettivo.

Se l'errore è: set Service Networking service account as servicenetworking.serviceAgent role on consumer project, disattiva e riattiva Service Networking API. Questa azione crea il account di servizio necessario per continuare con la procedura.

Lo spazio sul disco è esaurito. Le dimensioni del disco dell'istanza principale possono esaurirsi durante la creazione della replica. Modifica l'istanza principale per eseguirne l'upgrade a una dimensione del disco maggiore.
L'istanza replica utilizza troppa memoria. La replica utilizza memoria temporanea per memorizzare nella cache le operazioni di lettura spesso richieste, il che può portare a utilizzare più memoria dell'istanza principale.

Riavvia l'istanza replica per recuperare lo spazio di memoria temporaneo.

La replica è stata interrotta. È stato raggiunto il limite di spazio di archiviazione massimo e l'aumento automatico dello spazio di archiviazione non è abilitato.

Modifica l'istanza per attivare automatic storage increase.

Il ritardo nella replica è costantemente elevato. Il carico di scrittura è troppo elevato per la replica. Il ritardo nella replica si verifica quando il thread SQL su una replica non è in grado di stare al passo con il thread I/O. Alcuni tipi di query o carichi di lavoro possono causare un ritardo elevato della replica temporaneo o permanente per un determinato schema. Ecco alcune delle cause più comuni del ritardo nella replica:
  • Query lente sulla replica. Trovarli e risolverli.
  • Query come DELETE ... WHERE field < 50000000 causano un ritardo nella replica con la replica basata su righe, poiché un numero enorme di aggiornamenti si accumula nella replica.

Ecco alcune possibili soluzioni:

  • Modifica l'istanza per aumentare le dimensioni della replica.
  • Riduci il carico sul database.
  • Invia il traffico di lettura alla replica di lettura.
  • Indicizza le tabelle.
  • Identifica e correggi le query di scrittura lente.
  • Ricrea la replica.
La creazione della replica non riesce a causa di un timeout. Le transazioni non committate di lunga durata nell'istanza principale possono causare la mancata creazione della replica di lettura.

Ricrea la replica dopo aver interrotto tutte le query in esecuzione.

Passaggi successivi