In questa pagina viene descritto come gestire le repliche di lettura. Queste operazioni includono Disabilitazione e abilitazione della replica, promozione di una replica, configurazione della replica e controllare lo stato della replica.
Per ulteriori informazioni su come funziona la replica, consulta Replica in Cloud SQL.
Disabilita replica
Per impostazione predefinita, una replica viene avviata con la replica abilitata. Tuttavia, puoi disattivare di replica, ad esempio, per eseguire il debug o analizzare lo stato in esecuzione in un'istanza Compute Engine. Quando è tutto pronto, riabilita la replica esplicitamente. 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 disabilitare 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, effettua le seguenti sostituzioni:
- 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 delle seguenti 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 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 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 delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Abilita replica
Se una replica non viene replicata da molto tempo, la replica richiederà più tempo per poter raggiungere l'istanza principale. In questo caso, elimina e creiamo una nuova replica.
Per abilitare 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 Abilita 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 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 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 delle seguenti 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 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 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 delle seguenti 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 una istanza Cloud SQL principale 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. per un'istanza principale. Scopri di più sulla configurazione dell'alta disponibilità dell'istanza.
Prima di promuovere una replica di lettura, se l'istanza principale è ancora disponibile e pubblica devi procedere nel seguente modo:
- Arresta tutte le scritture sull'istanza principale.
- Controlla lo stato di replica del (segui le istruzioni in la scheda psql Client).
- Verifica che la replica sia in fase di replica, quindi attendi che
ritardo della replica riportato da
la metrica
replay_lag
è 0.
In caso contrario, un'istanza appena promossa potrebbe non contenere alcune transazioni nell'istanza principale.
Per promuovere una replica a istanza autonoma:
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Seleziona un'istanza di replica facendo clic sul suo 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 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: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 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 delle seguenti 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 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 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 delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Verifica che l'istanza promossa sia configurata correttamente. In particolare, considera configurazione dell'istanza per l'alta disponibilità, se necessario.
Controlla lo stato della replica
Quando visualizzi un'istanza di replica utilizzando la console Google Cloud o accedi alla 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 di replica di 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.
Le seguenti metriche sono disponibili per le istanze di replica. 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 eseguendo attivamente il flusso di log dal come server principale alla replica. I valori possibili sono:
Questa metrica indica
Per ulteriori informazioni, vedi La raccoglitore delle statistiche e Sistema Funzioni di amministrazione nel manuale di riferimento PostgreSQL. |
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, viene monitorata ogni coppia di replica principale separatamente e non esiste una sola metrica che genera il rendimento end-to-end (da principale alla replica). Per ulteriori informazioni, vedi Ritardo della replica. |
Byte di ritardo ( cloudsql.googleapis.com ) |
Segnala il numero di byte di ritardo rispetto alla replica di lettura principale. Per ogni replica vengono prodotte quattro serie temporali che mostrano numero di byte nel log write-ahead dell'istanza principale che non sono ancora stato...
Queste metriche hanno scopi diversi, ad esempio
Queste metriche vengono calcolate confrontando
|
Byte di ritardo max ( cloudsql.googleapis.com ) |
Per una replica di un'istanza principale esterna, indica il numero massimo di ritardo di replica (in byte) su tutti i database che vengono replicati a questa istanza. Per ogni database, questo valore è definito come il numero byte nel log write-ahead dell'istanza principale che non sono stati confermati che la replica riceverà. Questa metrica viene calcolata inviando una query all'istanza principale per
|
Per controllare lo stato della replica:
Console
Cloud SQL registra
Replication State
metrica in
predefinita
dashboard di monitoraggio di Cloud SQL.
Per visualizzare altre metriche per le repliche nella regione e tra regioni e di repliche di server esterni, puoi creare una dashboard personalizzata e aggiungere le metriche che desideri 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.
- In Tipo di risorsa, seleziona Database Cloud SQL.
- Esegui una delle seguenti operazioni:
- Per monitorare la metrica dello stato di replica: nella sezione Seleziona un
Metrica, digita
Replication state
. Quindi aggiungi un filtro perstate = "Running"
. Il grafico mostra 1 se la replica è in esecuzione e 0 in caso contrario. - Per monitorare il ritardo della replica, in byte, per una replica di lettura: in
Nel campo Seleziona una metrica, digita
Lag Bytes
. Poi aggiungi un filtro sureplica_lag_type = "replay_location"
. Il grafico indica il numero di byte associati alle transazioni impegnati nelle principali ma che non sono ancora state riprodotte replica. - Per monitorare il ritardo della replica, in byte, per una replica di un
esterno principale: nel campo Seleziona una metrica, digita
Max Lag Bytes
. Il grafico mostra il numero di byte associate a transazioni che sono state impegnate nell'istanza principale, che non sono stati ancora confermati dalla replica.
gcloud
Per un'istanza di 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 esistono repliche con:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Nell'output, cerca la proprietà replicaNames
.
Client psql
Alcune metriche dello stato di replica vengono prodotte dall'istanza principale vengono prodotte dalla replica. Per i passaggi seguenti, collegati al un'istanza principale o una replica (come indicato di seguito) con un database di alto profilo.
Per informazioni, vedi Connessione per applicazioni esterne.
- Per controllare lo stato della replica dall'istanza principale:
select * from pg_stat_replication;
Cerca le seguenti metriche nell'output del comando:client_addr
: l'indirizzo IP della replica in esecuzione in un'istanza Compute Engine.state
: indica se il thread SQL per l'esecuzione eventi nel log di inoltro sono in esecuzione. Il valore èstreaming
all'avvio della replica.replay_lag
: il numero di byte dell'SQL di replica il thread si trova dietro l'istanza principale. Il valore èO
o un numero ridotto di byte.
- Per controllare lo stato della replica dall'istanza di replica:
select * from pg_stat_wal_receiver;
Cerca le seguenti metriche nell'output del comando:
sender_host
: l'indirizzo IP dell'istanza principale in esecuzione in un'istanza Compute Engine.status
: indica se il thread SQL per l'esecuzione eventi nel log di inoltro sono in esecuzione. Il valore èstreaming
all'avvio della replica.last_msg_send_time
elast_msg_receipt_time
: la differenza tra i due "timestamp" indica il tempo di attesa.
Per verificare se la replica è stata messa in pausa:
select pg_is_wal_replay_paused();
Il valore è
t
se la replica è in pausa ef
negli altri casi.Per verificare se sono state ricevute transazioni principale ma non ancora applicata:
# for PostgreSQL 9.6 select pg_catalog.pg_last_xlog_receive_location(), pg_catalog.pg_last_xlog_replay_location(); # for PostgreSQL 10 and above select pg_catalog.pg_last_wal_receive_lsn(), pg_catalog.pg_last_wal_replay_lsn();
Se i due valori sono uguali, la replica ha elaborato tutte le transazioni che ha ricevuto dall'istanza principale.
Risoluzione dei problemi
Problema | Risoluzione dei problemi |
---|---|
La replica di lettura non è stata avviata al momento della creazione. | Probabilmente contiene 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 essere una segnalazione
fornito esplicitamente o uno impostato su un valore predefinito.
Innanzitutto, verifica che il valore del flag Se il flag |
Impossibile creare la replica di lettura: errore sconosciuto. | Probabilmente contiene 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. | La dimensione del disco dell'istanza principale può diventare piena durante la creazione della replica. Modifica l'istanza principale per eseguirne l'upgrade a una dimensione del disco maggiore. |
Lo spazio su disco aumenta in modo significativo. | Uno slot non utilizzato attivamente per monitorare i dati fa sì che PostgreSQL
mantenere i segmenti WAL a tempo indeterminato, causando l'aumento indefinita dello spazio su disco. Se utilizzi
le funzionalità di decodifica e replica logica in Cloud SQL, gli slot di replica
creati e eliminati automaticamente. Gli slot di replica non utilizzati possono essere rilevati eseguendo una query sul
pg_replication_slots
visualizzazione di sistema e filtro nella colonna active . Non utilizzato
possono essere rimossi per rimuovere i segmenti WAL utilizzando
Comando pg_drop_replication_slot .
|
L'istanza di replica utilizza troppa memoria. | La replica utilizza la memoria temporanea per memorizzare nella cache la lettura richiesta più spesso
operazioni, il che può portarlo a utilizzare più memoria 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'archiviazione automatica
L'aumento non è abilitato.
Modifica l'istanza per abilitare |
Il ritardo della replica è costantemente elevato. | Il carico di scrittura è troppo elevato per essere gestito dalla 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. Alcuni dei tipici
Le cause del ritardo di replica sono:
Ecco alcune possibili soluzioni:
|
Errori durante la ricreazione degli indici in PostgreSQL 9.6. | PostgreSQL ti informa che devi ricreare
specifico indice. Questa operazione può essere eseguita solo sull'istanza principale. Se
una nuova istanza di replica, presto verrà visualizzato di nuovo lo stesso errore.
Indici hash
non vengono propagate alle repliche nelle versioni PostgreSQL precedenti alla 10.
Se devi utilizzare indici hash, esegui l'upgrade a PostgreSQL 10 o versioni successive. Altrimenti, Se vuoi usare anche le repliche, non usare indici hash in PostgreSQL 9.6. |
La query sull'istanza principale è sempre in esecuzione. | Dopo aver creato una replica, è previsto che la query SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' venga eseguita continuativamente sull'istanza principale.
|
La creazione della replica non riesce con il timeout. | Le transazioni non impegnate a lunga esecuzione sull'istanza principale possono causare
in caso di errore durante la creazione della replica di lettura.
Ricrea la replica dopo aver interrotto tutte le query in esecuzione. |
Se l'istanza principale e la replica hanno dimensioni vCPU diverse, potrebbero verificarsi problemi di prestazioni delle query, poiché lo strumento di ottimizzazione delle query prende in considerazione le dimensioni delle vCPU. |
Per risolvere il problema, completa i seguenti passaggi:
Se si tratta di una query specifica, modificala. Ad esempio, puoi modificare l'ordine dei join per vedere se il rendimento migliora. |
Passaggi successivi
- Scopri come creare una replica di lettura.
- Scopri di più sui requisiti e sulle best practice per la replica.