In questa pagina viene descritto 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.
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. Disabilitazione o Se riattivi la replica, l'istanza di replica non viene riavviata.
La disabilitazione della replica non arresta l'istanza di replica. diventa un modello di accesso che non è più replicata dalla sua istanza principale. Continua addebiti per l'istanza. Sulla replica disabilitata, puoi riabilitarla. replicare, eliminare o promuovere la replica a livello autonomo in esecuzione in un'istanza Compute Engine.
Per disattivare la replica:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Seleziona un'istanza di replica facendo clic sul suo nome.
- Fai clic su Disabilita replica nella barra dei pulsanti.
- 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, devi acquisire di accesso al token utilizzando gcloud auth stampa-access-token. Puoi utilizzare anche lo Explorer API nella pagina Instances:patch per inviare la richiesta 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 utilizzare anche lo Explorer API nella pagina Instances:patch per inviare la richiesta API REST.
Prima di utilizzare i dati della richiesta, effettua 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 e creiamo una nuova replica.
Per attivare la replica:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Seleziona un'istanza replica facendo clic sul nome.
- Fai clic su Attiva la replica.
- 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, devi acquisire di accesso al token utilizzando gcloud auth stampa-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, effettua 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 al prompt della riga di comando, devi acquisire di accesso al token utilizzando gcloud auth stampa-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, effettua 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.
Se promosse, le repliche di lettura vengono configurate automaticamente con i backup, ma non vengono configurate automaticamente come istanze ad alta disponibilità (HA). Puoi abilitare l'alta disponibilità dopo aver promosso la replica, come faresti per qualsiasi di un'istanza non di 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:
- Arresta tutte le scritture sull'istanza principale.
- Controlla lo stato della replica della replica (segui le istruzioni riportate nella scheda Client mysql).
- Verifica che la replica sia in corso, quindi attendi che il ritardo nella replica registrato dalla metrica
Seconds_Behind_Master
sia pari a 0.
In caso contrario, un'istanza appena promossa potrebbe non avere alcune transazioni nell'istanza principale.
Per promuovere una replica a un'istanza autonoma:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Seleziona un'istanza replica facendo clic sul nome.
- Fai clic su Promuovi replica.
- 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 utilizzare anche lo Explorer API nella pagina Instances:promoteReplica per inviare la richiesta 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 utilizzare anche lo Explorer API nella pagina Instances:promoteReplica per inviare la richiesta API REST.
Prima di utilizzare i dati della richiesta, effettua 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à.
Configura replica parallela
Ridurre il tempo di replica è importante per gestire le prestazioni della replica. Il ritardo della replica si verifica quando gli aggiornamenti a una replica di lettura sono in ritardo rispetto e gli aggiornamenti all'istanza principale. Questa sezione descrive come gli utenti possono attivare la replica parallela, che può ridurre il ritardo della replica.
Nella replica MySQL, viene utilizzato un thread SQL di replica per eseguire transazioni raccolte nel log di inoltro sulla replica di lettura. Parallelo riduce il tempo di replica aumentando il numero di thread SQL che lavorano per eseguire queste transazioni. Repliche di lettura con mentre la replica parallela abilitata sono a volte chiamate repliche multithread.
La replica parallela è disponibile in questi tre scenari in Cloud SQL per MySQL:
Per semplicità, questa pagina utilizza i termini "istanza principale" e "replica di lettura".
Passaggi di base per modificare i flag di replica parallela
I passaggi per attivare la replica parallela sono i seguenti:
- In una replica di lettura, disabilita la replica.
- Nella replica di lettura,
imposta i flag per la
replica parallela. Utilizza il comando
gcloud
per impostare e i flag facoltativi. L'opzione della console Google Cloud è disattivata quando la replica è disattivata. - Nella replica di lettura, abilita la replica.
- Se vuoi, nell'istanza principale imposta i flag per ottimizzare le prestazioni per la replica parallela.
Repliche di lettura: flag per la replica parallela
Cloud SQL per MySQL supporta diversi flag per la replica parallela sulle repliche di lettura. Per informazioni sui flag, fai clic su questi link alla documentazione di MySQL 8.0:
- replica_parallel_workers
- replica_parallel_type
- replica_preserve_commit_order
- replica_pending_jobs_size_max
La modifica di questi flag non riavvia la replica di lettura.
La tabella seguente contiene gli intervalli consentiti e i valori predefiniti per questi flag:
Flag replica di lettura | Valori consentiti | Valore predefinito MySQL 5.7 | Valore predefinito MySQL 8.0 e versioni successive |
---|---|---|---|
replica_parallel_workers |
0-1024 | 0 | 0 (MySQL 8.0.26 e versioni precedenti) 4 (MySQL 8.0.27 e versioni successive) |
replica_parallel_type |
DATABASE, LOGICAL_CLOCK |
DATABASE |
DATABASE (MySQL 8.0.26 e versioni precedenti)LOGICAL_CLOCK (MySQL 8.0.27 e versioni successive) |
replica_preserve_commit_order |
ON, OFF |
OFF |
OFF (MySQL 8.0.26 e versioni precedenti)ON (MySQL 8.0.27 e versioni successive) |
replica_pending_jobs_size_max |
1024-1GB | 16 MB | 128 MB |
Il flag replica_preserve_commit_order
evita interruzioni nella sequenza di
le transazioni eseguite dal
log di inoltro della replica.
La
replica_preserve_commit_order=1
richiede quanto segue:
- Abilitazione dei log binari sulla replica (solo per MySQL 5.7, MySQL 8.0.18 e versioni precedenti)
- L'impostazione del parametro
replica_parallel_type
aLOGICAL_CLOCK
Il flag replica_pending_jobs_size_max
imposta la memoria massima, in byte,
disponibile per le code degli applicatori che contengono eventi non ancora applicati.
Istanza principale: flag per la replica parallela
Cloud SQL per MySQL supporta diversi flag da utilizzare su un'istanza principale. Puoi utilizzare questi flag per ottimizzare le prestazioni della replica per le repliche di lettura associate con la replica parallela abilitata. Per informazioni sui flag, fai clic su questi link alla documentazione di MySQL 8.0:
- binlog_transaction_dependency_history_size
- binlog_transaction_dependency_tracking
- transaction_write_set_extraction
La modifica di questi flag non riavvia l'istanza principale.
La tabella seguente contiene gli intervalli consentiti e i valori predefiniti per questi indicatori:
Flag istanza principale | Valori consentiti | Valore predefinito MySQL 5.7 | Valore predefinito MySQL 8.0 | Valore predefinito MySQL 8.4 |
---|---|---|---|---|
binlog_transaction_dependency_history_size |
1-1000000 | 25000 | 25000 | 25000 |
binlog_transaction_dependency_tracking |
COMMIT_ORDER, WRITESET, WRITESET_SESSION |
COMMIT_ORDER |
WRITESET |
n/a (non più supportato in MySQL 8.4) |
transaction_write_set_extraction |
OFF, MURMUR32, XXHASH64 |
OFF |
XXHASH64 |
n/a (non più supportato in MySQL 8.4) |
In MySQL 5.7, se binlog_transaction_dependency_tracking
è impostato su WRITESET
o WRITESET_SESSION
, transaction_write_set_extraction
deve essere impostato su un valore diverso da OFF
(XXHASH64
o MURMUR32
).
Controllare lo stato della replica
Quando visualizzi un'istanza replica utilizzando la console Google Cloud o accedi all'istanza utilizzando un client di amministrazione, ottieni i dettagli sulla replica, inclusi stato e metriche. Quando utilizzi gcloud CLI, un breve riepilogo della configurazione della replica.
Prima di controllare lo stato della replica per un'istanza di replica Cloud SQL,
utilizza il comando gcloud sql instances describe
per visualizzare
lo stato dell'istanza. Di conseguenza, puoi vedere se la replica è abilitata
per l'istanza di replica.
Per le istanze di replica sono disponibili le seguenti metriche. Scopri di più sulle metriche aggiuntive disponibili per tutte le istanze, incluse le metriche non di replica instances.)
Metrica | Descrizione |
---|---|
Stato di replica ( cloudsql.googleapis.com ) |
Indica se la replica sta trasmettendo attivamente i log dalla tabella principale alla replica. I valori possibili sono:
Questa metrica indica |
Ritardo della replica ( cloudsql.googleapis.com ) |
Il periodo di tempo in cui lo stato della replica è in ritardo rispetto alla replica dell'istanza principale. Questa è la differenza tra (1) il l'ora corrente e (2) il timestamp originale in cui ha impegnato la transazione attualmente applicata replica. In particolare, le scritture possono essere considerate in ritardo anche se ricevuti dalla replica, se quest'ultima non è ancora stata applicata la scrittura sul database. Per le repliche a cascata, ogni coppia di replica principale viene monitorata separatamente e non esiste una singola metrica che fornisca il ritardo end-to-end (dall'origine alla replica). Questa metrica riporta il valore di |
Ritardo di rete ( cloudsql.googleapis.com ) |
La quantità di tempo, in secondi, necessaria per scrivere il binlog in dal database principale per raggiungere il thread di I/O nella replica. Se network_lag è zero o trascurabile, ma "replica_lag" è alta, significa che il thread SQL non è in grado di applicare la replica cambia abbastanza rapidamente. |
Stato di esecuzione del thread I/O slave ( cloudsql.googleapis.com ) |
Indica se il thread I/O per la lettura del log binario dell'istanza principale è in esecuzione sulla replica. I valori possibili sono:
Questa metrica registra il valore |
Stato di esecuzione del thread SQL slave ( cloudsql.googleapis.com ) |
Indica se il thread SQL per l'esecuzione di eventi nel log di inoltro sia in esecuzione sulla replica. I valori possibili sono:
Questa metrica registra il valore |
Per controllare lo stato della replica:
Console
Cloud SQL segnala Replication State
e Replication Lag
metriche sulla
predefinita
Dashboard di monitoraggio di Cloud SQL.
Per visualizzare altre metriche per le repliche all'interno e tra regioni e per le repliche di server esterni, crea una dashboard personalizzata e aggiungi le metriche che vuoi monitorare:
-
Nella console Google Cloud, vai alla pagina Monitoring.
- Seleziona la scheda Dashboard.
- Fai clic su Crea dashboard.
- Assegna un nome alla dashboard e fai clic su OK.
- Fai clic su Aggiungi grafico.
- Per Tipo di risorsa, seleziona Database Cloud SQL.
- Esegui una delle seguenti operazioni:
- Per monitorare la metrica dello stato di replica: nel campo Seleziona
una metrica, digita
Replication state
. Poi aggiungi un filtro perstate = "Running"
. Il grafico mostra 1 se la replica è in esecuzione e 0 in caso contrario. - Per monitorare la metrica del tempo di replica: nella sezione Seleziona un
Metrica, digita
replica_lag
. Il grafico mostra il tempo che intercorre tra lo stato della replica e quello della tabella principale. - Per monitorare lo stato del thread I/O della replica: nel
campo Seleziona una metrica, digita
Slave I/O thread running state
. Poi aggiungi un filtro sustate = "Yes"
. Il grafico mostra 1 se il thread è in esecuzione e 0 in caso contrario. - Per monitorare lo stato del thread SQL della replica: nel
Nel campo Seleziona una metrica, digita
Slave SQL thread running state
. Quindi aggiungi un filtro perstate = "Yes"
. Il grafico mostra 1 se il thread è in esecuzione e 0 in caso contrario.
gcloud
Per un'istanza replica, controlla lo stato della replica con:
gcloud sql instances describe REPLICA_NAME
Nell'output, cerca le proprietà databaseReplicationEnabled
.
e masterInstanceName
.
Per un'istanza principale, controlla se sono presenti repliche con:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Nell'output, cerca la proprietà replicaNames
.
Client mysql
- Connettiti alla replica con un client MySQL.
Per informazioni, consulta Opzioni di connessione per applicazioni esterne.
- Controlla lo stato della replica:
SHOW REPLICA STATUS \G
Cerca le seguenti metriche nell'output del comando:
Master_Host
: il nome dell'istanza principale.Slave_IO_Running
eSlave_SQL_Running
: Indica se sono in esecuzione i thread I/O e SQL, rispettivamente. Questi i thread sono responsabili del trasferimento degli eventi dall'istanza principale log del relè della replica ed eseguendo questi eventi dal relè log. Il valore della metrica èYes
se il thread è in esecuzione. Affinché la replica sia in esecuzione, entrambi i thread devono attivo.Seconds_Behind_Master
: il tempo, in secondi, di ritardo della replica nell'elaborazione delle transazioni dell'istanza principale, ovvero la differenza tra (1) l'ora corrente e (2) il timestamp originale in cui l'istanza principale ha eseguito il commit della transazione attualmente applicata alla replica. Il valore èNULL
se la replica è interrotta.-
Master_Log_file
,Read_Master_Log_Pos
,Relay_Master_Log_File
Exec_Master_Log_Pos
: Queste metriche mostrano le coordinate (nome file e offset) il thread ha eventi di lettura fino a (Master_Log_file
eRead_Master_Log_Pos
) e che il thread SQL ha eventi eseguiti fino a (Relay_Master_Log_File
eExec_Master_Log_Pos
). Se sono uguali (ad es.Master_Log_file
è uguale aRelay_Master_Log_File
eRead_Master_Log_Pos
è uguale aExec_Master_Log_Pos
), la replica ha elaborato tutti degli eventi ricevuti dalle principali.
Per ulteriori dettagli sull'output di questo comando, consulta documentazione MySQL su Verifica in corso Stato di replica.
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 dei flag 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 Se il flag |
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 è: |
Il disco è pieno. | 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 di replica per recuperare lo spazio di memoria temporaneo. |
La replica è stata interrotta. | È stato raggiunto il limite massimo di spazio di archiviazione e l'archiviazione automatica
L'aumento non è abilitato.
Modifica l'istanza per abilitare |
Il ritardo nella replica è costantemente elevato. | Il carico di scrittura è troppo elevato per la replica. Ritardo della replica
si verifica quando il thread SQL su una replica non riesce a stare al passo
Thread IO. Alcuni tipi di query o carichi di lavoro possono causare problemi
un ritardo di replica elevato permanente per un determinato schema. Alcune delle cause comuni del ritardo nella replica sono:
Ecco alcune possibili soluzioni:
|
Il ritardo della replica aumenta improvvisamente. | Ciò è causato da transazioni a lunga esecuzione. Quando una transazione
(istruzione singola o più istruzioni) esegue il commit sull'istanza di origine,
l'ora di inizio della transazione viene registrata nel log binario. Quando
la replica riceve questo evento binlog, confronta il timestamp con
per calcolare il tempo di replica. Pertanto, una transazione a lunga esecuzione
sulla sorgente causerebbe un ritardo di replica elevato immediato sulla
replica. Se il numero di modifiche delle righe nella transazione è elevato, anche la replica impiegherà molto tempo per eseguirla. Nel frattempo,
il ritardo della replica aumenta. Una volta completata la transazione, il periodo di aggiornamento dipenderà dal carico di lavoro di scrittura sull'origine e dalla velocità di elaborazione della replica.
Per evitare una transazione lunga, alcune possibili soluzioni sono:
|
La modifica dei flag di replica parallela genera un errore. | È impostato un valore errato per uno o più di questi flag.
Nell'istanza principale in cui viene visualizzato il messaggio di errore, imposta il valore flag di replica parallela:
|
La creazione della replica non riesce a causa di un timeout. | Le transazioni non committate di lunga durata nell'istanza principale possono causare
il fallimento della creazione della replica di lettura.
Ricrea la replica dopo aver interrotto tutte le query in esecuzione. |
Passaggi successivi
- Scopri come creare una replica di lettura.
- Scopri di più sulle stored procedure di Cloud SQL per gli indici di replica di lettura.
- Scopri come configurare la configurazione di una replica esterna.
- Scopri come configurare una configurazione principale esterna.
- Scopri di più sui requisiti e le best practice per la replica.