Informazioni sulla replica in Cloud SQL

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 utilizzare la replica è la scalabilità dell'utilizzo dei dati in un database senza compromettere 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, potrebbe essere promossa 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 risiedono in Cloud SQL.

Quando fai riferimento a un database on-premise, lo scenario di replica è chiamato replica da un server esterno. In questo scenario, il database replicato è il server del database di origine. Le copie che risiedono in Cloud SQL sono chiamate repliche Cloud SQL. Esiste anche un'istanza che rappresenta il server di 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 utilizzarla al posto di un'istanza che si trova in un'area geografica 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 le 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 puoi scriverle. La replica di lettura elabora le query, le richieste di lettura e il traffico di analisi, riducendo così il carico sull'istanza principale.

Ti connetti a una replica direttamente utilizzando il nome e l'indirizzo IP della connessione. Se ti connetti a una replica utilizzando un indirizzo IP privato, non è necessario creare una connessione privata VPC aggiuntiva per la replica perché la connessione viene ereditata dall'istanza principale.

Per informazioni su come creare una replica di lettura, consulta Creazione delle 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 rispetto all'istanza principale quando utilizzi l'alta disponibilità nell'istanza principale. Questa prassi garantisce che le repliche di lettura continuino a funzionare quando la zona che contiene l'istanza principale ha un'interruzione. Per ulteriori informazioni, 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 dell'istanza principale. Devi monitorare le metriche dell'istanza, come l'utilizzo di CPU e memoria, per garantire che le dimensioni dell'istanza di replica siano adeguate in base al suo carico di lavoro, soprattutto se le dimensioni sono inferiori a quelle dell'istanza principale. Un'istanza di replica di dimensioni ridotte è più soggetta a prestazioni scadenti, come i frequenti eventi 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 a tua scelta, Cloud SQL lo imposta automaticamente in base alla quantità di memoria nell'istanza. Per ulteriori informazioni, consulta la sezione sui flag supportati. In una replica di lettura, PostgreSQL richiede sempre che il valore di max_connections sia sempre uguale o superiore a quello della replica principale. Di conseguenza, se una replica di lettura ha meno memoria di quella principale e non hai impostato il flag max_connections, potrebbe ereditare un valore max_connections maggiore in base alle dimensioni dell'istanza principale. In questo caso, se utilizzi l'impostazione max_connections per limitare il numero di connessioni all'istanza di replica, il sovraccarico potrebbe sovraccaricare perché il valore è troppo elevato rispetto al tipo di macchina dell'istanza. Per evitare che ciò accada, puoi:

  1. Ridimensiona l'istanza di replica a un tipo di macchina più grande.
  2. Configura la tua applicazione client per limitarla a un numero di connessioni inferiore al valore di max_connections.
  3. Imposta il flag max_connections sul principale e sulla replica su un valore appropriato.

Eseguire l'hashing delle operazioni di indice utilizzando repliche di lettura

Le operazioni di indice hash non utilizzano write-ahead-logging per PostgreSQL 9.6. Cloud SQL ha una sola versione disponibile in PostgreSQL 10. Ciò è documentato nella casella di attenzione gialla nella pagina di rilascio di PostgreSQL. Questo vale anche per le repliche di lettura di Cloud SQL.

Poiché gli aggiornamenti dell'indice 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.
  • Fornire ulteriori funzionalità di ripristino di emergenza per prevenire un errore a livello di regione.
  • Consenti di eseguire la migrazione dei dati da una regione a un'altra.

Per ulteriori informazioni sulle repliche tra regioni, consulta Promozione di repliche per la migrazione a livello di regione o il ripristino di emergenza.

Cascading delle repliche di lettura

La replica a cascata consente di creare una replica di lettura in un'altra replica di lettura nella stessa regione o in un'altra regione. Di seguito sono riportati alcuni casi per l'utilizzo di repliche a cascata:

  • Ripristino di emergenza: puoi utilizzare una gerarchia a cascata di repliche di lettura 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, mentre le repliche sotto la nuova replica 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.
  • Scalabilità di lettura: 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 una 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 saranno allo stesso livello.
  • Istanze di pari livello: più repliche che replicano dalla stessa istanza principale. Gli elementi di pari livello sono allo stesso livello nella gerarchia di replica. Una replica può avere fino a otto fratelli e sorelle.
  • Replica foglia: una replica di lettura che non ha repliche proprie. In una gerarchia di replica su più livelli, la replica foglia è l'ultimo livello.
  • Promuovi: un'azione che converte una replica, a qualsiasi livello della gerarchia, in un'istanza principale. Una volta promossa, viene mantenuta la gerarchia delle repliche a cascata.

Configura repliche a cascata

Le repliche a cascata 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 a cascata, questa diventa un'istanza principale e le relative repliche a cascata continuano a essere replicate.

Per pianificare la configurazione, devi avere un obiettivo per le azioni che intendono eseguire le repliche di lettura. Le due sezioni successive descrivono le configurazioni per il ripristino di emergenza e la replica su più regioni.

Ripristino di emergenza

Per capire in che modo le repliche a cascata ti aiutano a eseguire un ripristino rapido durante un'interruzione, considera il seguente scenario di replica:

Configurazione

Diagramma di una configurazione di replica a cascata con la replica a cascata in una regione separata

Interruzione

Diagramma della promozione durante un'interruzione

Promozione

Diagramma della nuova istanza con repliche

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 (Replica 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. Al suo interno sono già presenti delle repliche di lettura, riducendo l'RTO (Recovery Time Objective).

Nella scheda Promuovi, vedrai che quando viene promossa una replica a cascata, vengono promosse anche le relative repliche, che continueranno a essere replicate.

Replica su più regioni

Un altro caso d'uso per le repliche a cascata è la distribuzione della capacità di lettura in una seconda regione in modo conveniente. È possibile creare a cascata le repliche C e D che replicano dalla replica B. I client possono distribuire 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 sostenuto una sola volta, dall'istanza principale alla replica B. La replica da B a C e D utilizza il trasferimento di rete all'interno della regione, che è gratuito.

Puoi creare una gerarchia di massimo quattro istanze utilizzando le repliche a cascata per la replica su più regioni:

principale A → Replica B → Replica C e Replica D

Limitazioni

  • Non puoi eliminare una replica contenente delle repliche al di sotto. Per eliminare la replica, devi iniziare con le repliche foglia e proseguire gradualmente nella gerarchia.
  • La dipendenza della regione circolare non è supportata. Per avere la replica di una replica a cascata nella stessa regione dell'istanza principale, anche questa deve trovarsi nella stessa regione.

Replica logica

Cloud SQL ti 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 determinate tabelle o righe
  • Replica nelle versioni principali di PostgreSQL
  • Replica su database non PostgreSQL
  • Flussi di lavoro di Change Data Capture (CDC) in cui tutte le modifiche del database vengono trasmesse in streaming a un consumer

Per maggiori informazioni, consulta la pagina Configurare la replica logica. Questa pagina include informazioni su:

  • Replica logica nativa
  • L'estensione pglogica

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
  • Capacità di lettura aggiuntiva
  • Target di Analytics
Replica di lettura tra regioni Istanza Cloud SQL Istanza Cloud SQL
  • Capacità di lettura aggiuntiva
  • Target di Analytics
  • Funzionalità aggiuntive di ripristino di emergenza
  • Migliora prestazioni di lettura
  • Eseguire la migrazione dei dati tra regioni
Replica logica Qualsiasi istanza PostgreSQL Qualsiasi istanza PostgreSQL o consumer esterno
  • Replica dall'esterno di Cloud SQL
  • Replica nelle versioni PostgreSQL
  • Replica solo un sottoinsieme di dati in alcune tabelle, utilizzando i filtri di righe e colonne. Consulta anche pglogical 2.1 e la replica logica in PostgreSQL 10.
  • Replica verso destinazioni non PostgreSQL (Change Data Capture)

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 per una replica di lettura tra regioni sono gli stessi della creazione di una nuova istanza Cloud SQL nella regione. Consulta la pagina relativa ai 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 dei 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 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 relative repliche di lettura in istanze autonome o eliminarle.
Eliminazione della replica in corso... L'eliminazione di una replica non influisce sullo stato dell'istanza principale.
Disabilitazione del logging write-ahead Prima di poter disabilitare i log write-ahead su 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 quest'ultima è una replica di RE. Le repliche di lettura non possono eseguire il failover in nessun modo durante un'interruzione.
Alta disponibilità Le repliche di lettura consentono di abilitare l'alta disponibilità sulle repliche.
Bilanciamento del carico Cloud SQL non fornisce il bilanciamento del carico tra le repliche. Puoi scegliere di implementare il bilanciamento del carico per la tua istanza Cloud SQL. Per migliorare le prestazioni, puoi anche utilizzare il pooling di connessioni per distribuire le query tra le repliche, utilizzando la configurazione del bilanciamento del carico per migliorare le prestazioni.
Periodi di manutenzione Non puoi configurare i periodi di manutenzione su una replica di lettura. Tuttavia, le repliche di lettura condividono i periodi di manutenzione con l'istanza principale. 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 fino a quattro livelli, incluso quello principale.
IP privato Se ti connetti a una replica utilizzando un indirizzo IP privato, non è necessario 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 questa esiste. Prima di ripristinare un'istanza da un backup o di eseguire un recupero point-in-time, devi promuovere o eliminare tutte le relative repliche.
Impostazioni Le impostazioni dell'istanza principale vengono propagate alla replica, tra cui la password per l'utente Postgres e le modifiche alla tabella utenti.
Arresto di una replica Non puoi stop una replica. Puoi restart, delete o disable replication, ma non puoi arrestarlo perché puoi usare un'istanza principale.
Upgrade di una replica Le repliche di lettura possono subire un upgrade interrotto in qualsiasi momento.
Tabelle utente Non puoi apportare modifiche alla replica. Tutte le modifiche utente devono essere apportate sull'istanza principale.

Passaggi successivi