Gestione delle repliche di lettura

In questa pagina viene descritto come gestire le repliche di lettura. Queste operazioni includono la disattivazione e l'attivazione della replica, la promozione di una replica, la configurazione della replica parallela e il controllo dello stato della replica.

Per saperne di più su come funziona la 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 subscriber esterno, consulta Configura 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, riattivi esplicitamente la replica. La disattivazione o la riattivazione della replica non riavvia l'istanza di 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 addebiti per l'istanza. Nella replica disabilitata, puoi riattivare la replica, eliminarla o promuoverla a un'istanza autonoma.

Se disattivi la replica per un periodo di tempo prolungato, i requisiti di spazio di archiviazione del disco potrebbero aumentare. Ad esempio, l'istanza potrebbe accumulare log transazionali per consentirti di riprendere la replica quando la riattivi. Per evitare di aumentare i requisiti di spazio di archiviazione su disco, anziché disabilitare la replica per un periodo di tempo prolungato, valuta la possibilità di promuovere la replica o di creare un clone dell'istanza principale.

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 di replica facendo clic sul suo 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 al prompt della riga di comando, acquisisci 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 API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza di 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 al prompt della riga di comando, acquisisci 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 API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza di 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 è stata replicata per molto tempo, impiegherà più tempo per raggiungere l'istanza principale. In questo caso, elimina la replica e creane una nuova.

Per abilitare la replica:

Console

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

    Vai a Istanze Cloud SQL

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

gcloud

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

REST v1

Per eseguire questo comando cURL al prompt della riga di comando, acquisisci 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 API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza di 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 al prompt della riga di comando, acquisisci 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 API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza di 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 istanza autonoma Cloud SQL principale con capacità di lettura e scrittura.

Quando vengono promosse, le repliche di lettura vengono configurate automaticamente con i backup, ma non vengono configurate automaticamente come istanze ad alta affidabilità (HA). Puoi abilitare l'alta affidabilità dopo aver promosso la replica, esattamente come faresti per qualsiasi istanza non di replica. La configurazione di una replica di lettura per l'alta affidabilità viene eseguita nello stesso modo di un'istanza principale. Scopri di più sulla configurazione dell'istanza per l'alta affidabilità.

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

  1. Interrompi tutte le operazioni di scrittura sull'istanza principale.
  2. Controlla lo stato della replica. Un'opzione per farlo è la dashboard del gruppo di disponibilità Always On in SQL Server Management Studio (SSMS).
  3. Verifica che la replica sia in esecuzione, quindi controlla il ritardo di replica, ad esempio come riportato dalla metrica seconds_behind_master.
  4. Utilizza la stored procedure sp_help_revlogin per esportare gli accessi creati nell'istanza principale dopo la creazione della replica e ricreali nella replica.

In caso contrario, in un'istanza appena promossa potrebbero mancare alcune transazioni di cui è stato eseguito il commit 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 di replica facendo clic sul suo 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 al prompt della riga di comando, acquisisci 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 API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza di 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 al prompt della riga di comando, acquisisci 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 API REST.

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

  • project-id: l'ID progetto
  • replica-name: il nome dell'istanza di 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, valuta la possibilità di configurare l'istanza per l'alta affidabilità, se necessario.

Controlla lo stato della replica

Al momento, devi utilizzare le 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 ha avviato la replica al momento della creazione. Probabilmente nei file di log è presente un errore più specifico. Ispeziona i log in Cloud Logging per trovare l'errore effettivo.
Impossibile creare la replica di lettura - Errore invalidFlagValue. Uno dei flag nella richiesta non è valido. Potrebbe essere un flag che hai fornito esplicitamente o uno impostato su un valore predefinito.

Innanzitutto, verifica che il valore del flag max_connections sia maggiore o uguale al valore sul nodo 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 nei file di log è presente un errore più specifico. Ispeziona 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, puoi creare manualmente il account di servizio necessario seguendo le istruzioni riportate in Crea e concedi ruoli agli agenti di servizio.

Lo spazio sul disco è esaurito. Le dimensioni del disco dell'istanza principale possono riempirsi durante la creazione della replica. Modifica l'istanza principale per eseguire l'upgrade a un disco di dimensioni maggiori.
L'istanza di replica utilizza troppa memoria. La replica utilizza la memoria temporanea per memorizzare nella cache le operazioni di lettura richieste di frequente, il che può comportare un utilizzo di memoria maggiore rispetto all'istanza principale.

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

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

Modifica l'istanza per abilitare automatic storage increase.

Il ritardo di replica è costantemente elevato. Il carico di scrittura è troppo elevato per essere gestito dalla replica. Il ritardo di replica si verifica quando il thread SQL su una replica non riesce a tenere il passo con il thread IO. Alcuni tipi di query o workload possono causare un ritardo di replica elevato temporaneo o permanente per un determinato schema. Alcune delle cause tipiche del ritardo di replica sono:
  • Query lente sulla replica. Trovali e correggili.
  • Query come DELETE ... WHERE field < 50000000 causano un ritardo della replica con la replica basata su righe, poiché nella replica si accumula un numero elevato di aggiornamenti.

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 con un timeout. Le transazioni non sottoposte a commit 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