La replica è la capacità di creare copie di un'istanza Cloud SQL o di un database on-premise e di trasferire il lavoro alle copie.
Introduzione
Il motivo principale per l'utilizzo della replica è scalare l'utilizzo dei dati in un database senza ridurre le prestazioni.
Altri motivi sono:
- Migrazione dei dati tra regioni
- Migrazione dei dati tra piattaforme
- Migrazione dei dati da un database on-premise a Cloud SQL
Inoltre, è possibile promuovere una replica se l'istanza originale si danneggia.
Quando si fa riferimento a un'istanza Cloud SQL, l'istanza replicata è denominata istanza principale e le copie sono chiamate repliche di lettura. L'istanza principale e le repliche di lettura si trovano in Cloud SQL.
Quando si fa riferimento a un database on-premise, lo scenario di replica è chiamato replica da un server esterno. In questo scenario, il database che viene replicato è il server del database di origine. Le copie che risiedono in Cloud SQL sono chiamate repliche Cloud SQL. C'è anche un'istanza che rappresenta il server del database di origine in Cloud SQL denominata istanza di rappresentazione dell'origine.
In uno scenario di ripristino di emergenza, puoi promuovere una replica per convertirla in istanza principale. In questo modo, puoi utilizzarlo al posto di un'istanza che si trova in una regione in cui è in corso un'interruzione. Puoi anche promuovere una replica per sostituire un'istanza danneggiata.
Cloud SQL supporta i seguenti tipi di repliche:
Puoi anche utilizzare Database Migration Service per la replica continua da un server di database di origine a Cloud SQL. Nota: Cloud SQL consente agli utenti di gestire la propria replica utilizzando le funzionalità di replica logica di PostgreSQL.Cloud SQL non supporta la replica tra due server esterni.
Repliche di lettura
Puoi utilizzare una replica di lettura per trasferire il lavoro da un'istanza Cloud SQL. La replica di lettura è una copia esatta dell'istanza principale. I dati e altre modifiche nell'istanza principale vengono aggiornati quasi in tempo reale nella replica di lettura.
Le repliche di lettura sono di sola lettura e non è possibile scriverle. La replica di lettura elabora query, richieste di lettura e analisi del traffico, riducendo così il carico sull'istanza principale.
Per connetterti a una replica puoi utilizzare il nome e l'indirizzo IP della connessione. Se ti connetti a una replica utilizzando un indirizzo IP privato, non devi creare una connessione privata VPC aggiuntiva per la replica, poiché la connessione viene ereditata dall'istanza principale.
Per informazioni su come creare una replica di lettura, consulta Creazione di repliche di lettura. Per informazioni sulla gestione di una replica di lettura, consulta Gestione delle repliche di lettura.
Come best practice, inserisci le repliche di lettura in una zona diversa da quella dell'istanza principale quando utilizzi l'alta disponibilità sull'istanza principale. In questo modo, le repliche di lettura continuano a funzionare quando la zona che contiene l'istanza principale viene interrotta. Per saperne di più, consulta la Panoramica dell'alta disponibilità.
Selezionare un tipo di macchina appropriato
Le repliche di lettura possono avere un tipo di macchina diverso da quello della macchina principale. Devi monitorare le metriche sull'istanza, come l'utilizzo di CPU e memoria, per assicurarti che l'istanza di replica sia dimensionata correttamente per il carico di lavoro, soprattutto se è più piccola dell'istanza principale. Un'istanza di replica sottodimensionata è più soggetta a prestazioni scadenti, come eventi frequenti di esaurimento della memoria (OOM).
Impatto sul flag max_connections
quando la replica di lettura ha un tipo di macchina con meno memoria rispetto a quella principale
In un'istanza PostgreSQL, se non imposti il flag max_connections
su un valore di tua scelta, Cloud SQL lo imposta automaticamente in base alla quantità di memoria dell'istanza. Per ulteriori informazioni, consulta i flag supportati. PostgreSQL richiede che il valore di max_connections
sia sempre grande almeno quanto in una replica di lettura rispetto a quello principale. Di conseguenza, se una replica di lettura ha meno memoria dell'istanza principale e non hai impostato il flag max_connections
, potrebbe ereditare un valore maggiore di max_connections
in base alle dimensioni dell'istanza principale. In questa situazione, se utilizzi l'impostazione max_connections
per limitare il numero di connessioni all'istanza di replica, l'istanza potrebbe sovraccaricarsi perché il valore è troppo alto per il tipo di macchina dell'istanza. Per evitarlo, puoi procedere in uno dei seguenti modi:
- Ridimensiona l'istanza di replica in un tipo di macchina più grande.
- Configura l'applicazione client in modo da limitarla a un numero di connessioni inferiore al valore di
max_connections
. - Imposta il flag
max_connections
nell'istanza principale e nella replica su un valore appropriato.
Operazioni di indice di hash con le repliche di lettura
Le operazioni di indice di hash non utilizzano write-ahead-logging per PostgreSQL 9.6. Cloud SQL dispone di una sola versione in PostgreSQL 10. Ciò è documentato nella casella di attenzione gialla sulla pagina di rilascio di PostgreSQL. Questo vale anche per le repliche di lettura di Cloud SQL.
Poiché gli aggiornamenti dell'indice di hash non si propagano alla replica di lettura in PostgreSQL 9.6, non possono essere utilizzati dalla replica. Come soluzione alternativa, puoi evitare di avere repliche di lettura o eseguire l'upgrade a una versione principale di PostgreSQL (10 o versioni successive).
Repliche di lettura tra regioni
La replica tra regioni consente di creare una replica di lettura in una regione diversa dall'istanza principale. Puoi creare una replica di lettura tra regioni nello stesso modo in cui crei una replica all'interno delle regioni.
Repliche tra regioni:
- Migliora le prestazioni di lettura rendendo disponibili le repliche più vicino alla regione della tua applicazione.
- Fornisci ulteriori funzionalità di ripristino di emergenza per evitare errori a livello di regione.
- Consente di eseguire la migrazione dei dati da una regione all'altra.
Consulta la pagina sulla promozione di repliche per la migrazione a livello di regione o il ripristino di emergenza per ulteriori informazioni sulle repliche tra regioni.
Propagazione delle repliche di lettura
La replica a cascata ti consente di creare una replica di lettura in un'altra replica di lettura nella stessa regione o in una diversa. Di seguito sono riportati alcuni casi di utilizzo delle repliche a cascata:
- Ripristino di emergenza: puoi utilizzare una gerarchia di repliche di lettura a cascata per simulare la topologia dell'istanza principale e delle relative repliche di lettura. Durante un'interruzione, la replica di lettura selezionata viene promossa a principale e le repliche di lettura all'interno della nuova istanza principale continuano a essere replicate e sono pronte per l'uso.
- Miglioramenti delle prestazioni: riduci il carico sull'istanza principale trasferendo il lavoro di replica su più repliche di lettura.
- Operazioni di lettura della scalabilità: puoi avere più repliche per condividere il carico di lettura.
- Riduzione dei costi: puoi ridurre i costi di networking utilizzando un'unica replica a cascata con replica tra regioni in altre regioni.
Terminologia
- Replica a cascata: una replica di lettura che può avere la propria replica.
- Livelli: puoi creare livelli di repliche in una gerarchia di repliche a cascata. Ad esempio, se aggiungi quattro repliche a un'istanza, queste quattro repliche sono allo stesso livello.
- Istanze di pari livello: più repliche che si replicano dalla stessa istanza principale. I fratelli o le sorelle si trovano allo stesso livello nella gerarchia delle repliche. Una replica può ufficialmente avere fino a otto fratelli o sorelle.
- Replica foglia: una replica di lettura che non ha repliche proprie. In una gerarchia di replica multilivello, la replica foglia è l'ultimo livello.
- Promuovi: un'azione che converte una replica, a qualsiasi livello della gerarchia, in un'istanza principale. Se promossa, la gerarchia delle repliche a cascata della replica viene mantenuta.
Configura repliche a cascata
Le repliche a cascata ti consentono di aggiungere repliche di lettura a qualsiasi replica esistente. Puoi aggiungere fino a quattro livelli di repliche, inclusa l'istanza principale. Quando promuovi la replica in cima a una gerarchia di repliche, questa diventa un'istanza principale e le sue repliche a cascata continuano a replicarsi.
Per pianificare la configurazione, devi avere un obiettivo specifico per le repliche di lettura. Le due sezioni successive descrivono le configurazioni per il ripristino di emergenza e la replica in più regioni.
Ripristino di emergenza
Per capire in che modo le repliche a cascata consentono di recuperare rapidamente durante un'interruzione, considera il seguente scenario di replica:
Configurazione
Interruzione
Promozione
Se vuoi utilizzare un'istanza nella regione B in una configurazione di ripristino di emergenza e hai:
- Repliche nella stessa regione collegate all'istanza principale (Replica A)
- Repliche in altre regioni (repliche a cascata) collegate all'istanza principale.
Puoi creare repliche di lettura nella replica a cascata nella regione B.
Nella scheda Interruzione, in caso di interruzione nella regione A, la replica a cascata viene promossa a istanza principale. Contiene già repliche di lettura, il che riduce l'RTO (Recovery Time Objective).
Nella scheda Promuovi puoi vedere che quando una replica a cascata viene promossa, anche le relative repliche vengono promosse e continuano a essere replicate al suo interno.
Replica su più regioni
Un altro caso d'uso delle repliche a cascata è distribuire la capacità di lettura a una seconda regione in modo conveniente. È possibile creare le repliche C e D a cascata che si replicano dalla replica B. I client possono distribuire le query di lettura tra le repliche B, C e D per ridurre il carico su ogni replica. Il costo del traffico di rete tra regioni viene addebitato una sola volta, dall'istanza principale alla replica B. La replica da B a C e D utilizza il trasferimento di rete all'interno dell'area geografica, che è gratuito.
Puoi creare una gerarchia di massimo quattro istanze utilizzando le repliche a cascata per la replica in più regioni:
Principale A → Replica B → Replica C e Replica D
Limitazioni
- Non puoi eliminare una replica contenente delle repliche al suo interno. Per eliminare la replica, devi iniziare con le repliche foglia e aumentare la gerarchia.
- La dipendenza della regione circolare non è supportata. Affinché la replica a cascata si trovi nella stessa regione dell'istanza principale, anche questa deve trovarsi nella stessa regione.
Replica logica
Cloud SQL consente di configurare le tue soluzioni di replica utilizzando le funzionalità di replica logica di PostgreSQL. La replica logica è una soluzione flessibile che consente:
- Replica standard da un'istanza principale a una replica
- Replica selettiva solo di alcune tabelle o righe
- Replica tra versioni principali di PostgreSQL
- Replica su database non PostgreSQL
- Flussi di lavoro Change Data Capture (CDC) in cui tutte le modifiche al database vengono trasmesse in modalità flusso
Per maggiori informazioni, consulta la sezione Configurare la replica logica. La pagina include informazioni su:
- Replica logica nativa
- L'estensione pglogical
Casi d'uso della replica
I seguenti casi d'uso si applicano a ogni tipo di replica.
Nome | Principale | Replica | Vantaggi e casi d'uso | Ulteriori informazioni |
---|---|---|---|---|
Replica in lettura | Istanza Cloud SQL | Istanza Cloud SQL |
|
|
Replica di lettura tra regioni | Istanza Cloud SQL | Istanza Cloud SQL |
|
|
Replica logica | Qualsiasi istanza PostgreSQL | Qualsiasi istanza PostgreSQL o consumer esterno |
|
Fatturazione
- Una replica di lettura viene addebitata alla stessa tariffa di un'istanza Cloud SQL standard. Non è previsto alcun costo per la replica dei dati.
- I prezzi di una replica di lettura tra regioni sono gli stessi che per la creazione di una nuova istanza Cloud SQL nella regione. Consulta i prezzi delle istanze Cloud SQL e seleziona la regione appropriata. Oltre al normale costo associato all'istanza, una replica tra regioni comporta addebiti per il trasferimento di dati tra regioni per i log di replica inviati dall'istanza principale all'istanza di replica, come descritto in Prezzi del traffico in uscita dalla rete.
Riferimento rapido per le repliche di lettura di Cloud SQL
Argomento | Discussione |
---|---|
Backup | Non puoi configurare backup nella replica. |
Core e memoria | Le repliche di lettura possono utilizzare un numero di core e una quantità di memoria diversi da quelli dell'istanza principale. |
Eliminazione dell'istanza principale | Prima di poter eliminare un'istanza principale, devi promuovere tutte le sue repliche di lettura a istanze autonome o eliminare le repliche di lettura. |
Eliminazione della replica in corso... | L'eliminazione di una replica non influisce sullo stato dell'istanza principale. |
Disabilitazione del logging write-ahead in corso... | Prima di poter disabilitare i log write-ahead in un'istanza principale, devi promuovere o eliminare tutte le relative repliche di lettura. |
Failover | Un'istanza principale può eseguire il failover a una replica solo se si tratta di una replica di RE. Durante un'interruzione non è possibile eseguire il failover delle repliche di lettura in nessun modo. |
Alta disponibilità | Le repliche di lettura consentono di abilitare l'alta disponibilità sulle repliche. |
Bilanciamento del carico | Cloud SQL non fornisce bilanciamento del carico tra le repliche. Puoi scegliere di implementare il bilanciamento del carico per la tua istanza Cloud SQL. Puoi anche utilizzare il pooling delle connessioni per distribuire le query tra le repliche con la configurazione del bilanciamento del carico per migliorare le prestazioni. |
Periodi di manutenzione | Le repliche di lettura condividono i periodi di manutenzione con l'istanza principale. Le repliche seguono le impostazioni di manutenzione per l'istanza principale, inclusi il periodo di manutenzione, la ripianificazione e il periodo in cui evitare la manutenzione. Durante la manutenzione, Cloud SQL aggiorna tutte le repliche di lettura prima di aggiornare l'istanza principale. |
Più repliche di lettura | Cloud SQL supporta le repliche a cascata. Di conseguenza, puoi creare fino a 10 repliche per una singola istanza principale e le repliche possono essere concatenate per un massimo di quattro livelli, incluso quello principale. |
IP privato | Se ti connetti a una replica utilizzando un indirizzo IP privato, non devi creare una connessione privata VPC aggiuntiva per la replica, poiché viene ereditata dall'istanza principale. |
Ripristino dell'istanza principale | Non puoi ripristinare l'istanza principale di una replica mentre la replica esiste. Prima di ripristinare un'istanza da un backup o di eseguire un recupero point-in-time sull'istanza, devi promuovere o eliminare tutte le sue repliche. |
Impostazioni | Le impostazioni dell'istanza principale vengono propagate alla replica, tra cui la password per l'utente postgres e le modifiche alla tabella utente. |
Arresto di una replica | Non puoi stop una replica. Puoi restart ,
delete o disable replication su questo cluster, ma
non puoi arrestarlo come puoi fare con un'istanza principale. |
Upgrade di una replica in corso | Le repliche di lettura possono subire un upgrade fastidioso in qualsiasi momento. |
Tabelle utente | Non puoi apportare modifiche alla replica. Tutte le modifiche dell'utente devono essere apportate sull'istanza principale. |
Passaggi successivi
- Scopri come creare una replica di lettura.
- Scopri come configurare un'istanza per l'alta disponibilità.