Informazioni sulla replica in Cloud SQL

La replica è la possibilità di creare copie di un'istanza Cloud SQL o di un database on-premise e di scaricare il lavoro sulle copie.

Introduzione

Il motivo principale per cui utilizzare la replica è scalare l'utilizzo dei dati in un database senza degradare 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, una replica potrebbe essere promossa se l'istanza originale viene danneggiata.

Quando si fa riferimento a un'istanza Cloud SQL, l'istanza che viene replicata è chiamata 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 si trovano in Cloud SQL sono chiamate repliche Cloud SQL. Esiste anche un'istanza che rappresenta il server del database di origine in Cloud SQL, chiamata istanza di rappresentazione dell'origine.

In uno scenario di ripristino di emergenza, puoi promuovere una replica per convertirla in un'istanza principale. In questo modo, puoi utilizzarlo al posto di un'istanza in una regione in cui si è verificata un'interruzione del servizio. Puoi anche promuovere una replica per sostituire un'istanza danneggiata.

Cloud SQL supporta i seguenti tipi di repliche:

Utilizzando l'applicazione dei connettori, puoi imporre l'utilizzo solo del proxy di autenticazione Cloud SQL o dei connettori dei linguaggi di Cloud SQL per connetterti alle istanze Cloud SQL. Con l'applicazione del connettore, Cloud SQL rifiuta le connessioni dirette al database. Non puoi creare repliche di lettura per un'istanza in cui è attiva l'applicazione dei connettori. Analogamente, se un'istanza ha repliche di lettura, non puoi attivare l'applicazione dei connettori per l'istanza.

Puoi anche utilizzare Database Migration Service per la replica continua da un server database di origine a Cloud SQL.

Cloud SQL non supporta la replica tra due server esterni. Tuttavia, Cloud SQL supporta la replica basata sull'ID transazione globale (GTID). Gli GTID identificano in modo univoco ogni transazione sul server e all'interno di una configurazione di replica. Poiché ogni transazione ha un identificatore univoco, il server MySQL può tenere traccia delle transazioni che ha eseguito. Un GTID utilizza coordinate absolute, pertanto la replica di un'istanza Cloud SQL può puntare alla sua istanza principale e non devi specificare un nome file per il log binario o una posizione nell'istruzione CHANGE MASTER. Sono presenti meno errori con le repliche e con il recupero in un determinato momento. A causa di questi vantaggi, non puoi disattivare la replica basata su GTID in Cloud SQL.

Repliche di lettura

Utilizza una replica di lettura per scaricare 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; non puoi scrivere al loro interno. La replica di lettura elabora query, richieste di lettura e traffico di analisi, riducendo così il carico sull'istanza principale.

Puoi connetterti a una replica direttamente utilizzando il nome della connessione e l'indirizzo IP. Se ti connetti a una replica utilizzando un indirizzo IP privato, non devi creare un'altra connessione privata VPC per la replica perché 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, posiziona le repliche di lettura in una zona diversa dall'istanza principale quando utilizzi l'HA sull'istanza principale. Questa pratica garantisce che le repliche di lettura continuino a funzionare quando si verifica un'interruzione nella zona contenente l'istanza principale. Per ulteriori informazioni, consulta la Panoramica dell'alta disponibilità.

Selezione di un tipo di macchina appropriato

Le repliche di lettura possono avere un tipo di macchina diverso da quello della principale. Devi monitorare le metriche della tua istanza, ad esempio l'utilizzo di CPU e memoria, per assicurarti che le dimensioni dell'istanza replica siano corrette per il relativo workload, soprattutto se è più piccola dell'istanza principale. Un'istanza replica di dimensioni ridotte è più soggetta a scarse prestazioni, ad esempio a frequenti eventi di esaurimento della memoria.

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 della regione.

Repliche tra regioni:

  • Migliora le prestazioni di lettura rendendo disponibili le repliche più vicine alla regione della tua applicazione.
  • Fornisci funzionalità di ripristino di emergenza aggiuntive per proteggerti da un guasto regionale.
  • Consente di eseguire la migrazione dei dati da una regione all'altra.

Per saperne di più sulle repliche tra regioni, consulta Promuovere le repliche per la migrazione a livello di area geografica o il ripristino di emergenza.

Repliche di lettura con struttura a cascata

La replica a cascata consente di creare una replica di lettura sotto un'altra replica di lettura nella stessa regione o in un'altra. I seguenti scenari sono casi d'uso per l'utilizzo delle repliche con struttura a cascata:

  • Disaster recovery: 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 del servizio, la replica di lettura selezionata viene promossa a principale e le repliche di lettura sotto la nuova 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 a più repliche di lettura.
  • Scala le letture: puoi avere più repliche per condividere il carico di lettura.
  • Riduzione dei costi: puoi ridurre i costi di rete utilizzando una singola replica a cascata con la replica tra regioni in altre regioni.

Terminologia

  • Replica con struttura 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 quattro repliche sono allo stesso livello.
  • Istanze sorelle: più repliche che si replicano dalla stessa istanza principale. I gruppi di replica fratelli si trovano allo stesso livello nella gerarchia delle repliche. Una replica può avere ufficialmente fino a otto elementi correlati.
  • Replica finale: 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. Quando viene promossa, la gerarchia delle repliche a cascata della replica viene conservata.

Configura le repliche con struttura 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 nella parte superiore di una gerarchia di repliche a cascata, diventa un'istanza principale e le relative repliche a cascata continuano a essere replicate.

Per pianificare la configurazione, devi avere un obiettivo per le operazioni previste dalle repliche di lettura. Le due sezioni seguenti descrivono le configurazioni per il ripristino di emergenza e la replica multiregione.

Ripristino di emergenza

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

Configurazione

Raffigura la configurazione della replica a cascata con la replica a cascata in una regione separata

Interruzione

Raffigura la promozione o la replica durante un'interruzione

Promozione

Raffigura la nuova istanza con le 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 a quella principale.

Puoi creare repliche di lettura sotto la replica a cascata nella regione B.

Nella scheda Interruzione, se si verifica un'interruzione nella regione A, la replica a cascata viene promossa a istanza principale. Ha già repliche di lettura al suo interno, riducendo il Recovery Time Objective (RTO).

Nella scheda Esegui promozione, noterai che quando viene promossa una replica a cascata, vengono promosse anche le sue repliche, che continuano a essere replicate al di sotto.

Replica su più regioni

Un altro caso d'uso delle repliche in cascata è distribuire la capacità di lettura a una seconda regione in modo economicamente conveniente. È possibile creare repliche a cascata C e D 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 della regione, che è gratuito.

Puoi creare una gerarchia di massimo quattro istanze utilizzando le repliche a cascata per la replica multiregione:

Principale A → Replica B → Replica C e Replica D

Limitazioni

  • Non puoi eliminare una replica che ha repliche al suo interno. Per eliminare la replica, devi iniziare dalle repliche a foglia e procedere verso l'alto nella gerarchia.
  • La dipendenza circolare delle regioni non è supportata. Per avere la replica di una replica a cascata nella stessa regione dell'istanza principale, anche la replica a cascata deve trovarsi nella stessa regione.

Repliche di lettura esterne

Le repliche di lettura esterne sono istanze MySQL esterne che vengono replicate da un'istanza principale Cloud SQL. Ad esempio, un'istanza MySQL in esecuzione su Compute Engine è considerata un'istanza esterna.

Le repliche di lettura esterne presentano le seguenti limitazioni:

  • La replica a un'istanza MySQL ospitata da un'altra piattaforma cloud potrebbe non essere possibile. Consulta la documentazione dell'altro provider. Ad esempio, l'impostazione del campo di configurazione replicate-ignore-db è obbligatoria e i fornitori di servizi cloud in cui non è consentito non sono supportati. Per altri campi di configurazione richiesti, consulta Configurazione delle repliche esterne.
  • Se la replica viene interrotta per alcune ore, ad esempio a causa di un'interruzione della rete o del server, la replica rimane indietro rispetto al database principale. La replica si aggiorna quando si riconnette all'istanza principale e inizia di nuovo a eseguire la replica. Tuttavia, se la replica viene interrotta per più tempo rispetto al periodo di conservazione dei log di replica di Cloud SQL (sette backup), devi eliminare la replica e crearne una nuova.
  • I dati che passano dalla replica principale a quella esterna vengono addebitati come trasferimento di dati in uscita. Consulta la pagina Prezzi per i prezzi del trasferimento di dati per il tipo di istanza Cloud SQL.
  • Se crei una replica di lettura esterna per un'istanza e imposti l'utilizzo solo del proxy di autenticazione Cloud SQL o dei connettori dei linguaggi Cloud SQL per connetterti a un'istanza per cui è configurato l'accesso privato ai servizi, devi aggiungere gli intervalli di subnet della replica alle reti autorizzate dell'istanza principale. Devi configurare tutti gli intervalli come reti autorizzate dell'istanza Cloud SQL.

    gcloud

    Per impostare l'autorizzazione IP per un'istanza in modo da consentire il traffico dagli intervalli di indirizzi IP di una replica di lettura esterna, utilizza il comando gcloud sql instances patch:

    gcloud sql instances patch \
    --authorized-networks=IP_ADDRESS_RANGE_1/24,IP_ADDRESS_RANGE_2/24

    Sostituisci IP_ADDRESS_RANGE_1 e IP_ADDRESS_RANGE_2 con gli intervalli di indirizzi IP della replica di lettura esterna.

    REST

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

    • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
    • INSTANCE_NAME: il nome dell'istanza Cloud SQL
    • IP_ADDRESS_RANGE_1: il primo intervallo di indirizzi IP della replica di lettura esterna
    • IP_ADDRESS_RANGE_2: il secondo intervallo di indirizzi IP della replica di lettura esterna

    Metodo HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Corpo JSON della richiesta:

    {
      "kind": "sql#instance",
      "name": INSTANCE_NAME,
      "project": PROJECT_ID,
      "settings": {
        "ipConfiguration": {
          "authorizedNetworks": [{"kind": "sql#aclEntry", "value": "IP_ADDRESS_RANGE_1/24"}, {"kind": "sql#aclEntry", "value": "IP_ADDRESS_RANGE_2/24"}]},
      "kind": "sql#settings"
      }
    }

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

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
  • Ulteriore funzionalità di ripristino di emergenza
  • Migliora prestazioni di lettura
  • Eseguire la migrazione dei dati tra regioni
Replica di lettura esterna Istanza Cloud SQL Istanze MySQL esterne a Cloud SQL
  • Latenza ridotta per le connessioni esterne
  • Target di Analytics
  • Percorso di migrazione ad altre piattaforme
Replica da un server esterno Istanze MySQL esterne a Cloud SQL Instanza Cloud SQL per MySQL
  • Percorso di migrazione a Cloud SQL
  • Replica dei dati in Google Cloud
  • Target di Analytics

Prerequisiti per la creazione di una replica di lettura

Prima di poter creare una replica di lettura di un'istanza Cloud SQL primaria, l'istanza deve soddisfare i seguenti requisiti:

  • I backup automatici devono essere abilitati.
  • Il logging binario deve essere abilitato, il che richiede l'abilitazione del recupero point-in-time. Scopri di più sull'impatto di questi log.
  • È necessario aver creato almeno un backup dopo aver attivato il logging binario.

Requisiti aggiuntivi per la replica esterna:

  • La versione MySQL della replica deve essere uguale o successiva alla versione MySQL dell'istanza principale. Scopri di più.
  • Per motivi di sicurezza, devi configurare SSL/TLS nell'istanza principale. Scopri di più.

Impatto dell'abilitazione del logging binario

Per abilitare il logging binario sull'istanza principale in modo da supportare le repliche di lettura, devi attivare il recupero point-in-time. Ciò ha i seguenti effetti:

  • Overhead delle prestazioni

    Cloud SQL utilizza la replica basata su riga con i flag MySQL sync_binlog=1 e innodb_support_xa=true. Pertanto, per ogni operazione di scrittura è necessario un fsync aggiuntivo sul disco, il che riduce le prestazioni.

  • Overhead dello spazio di archiviazione

    L'archiviazione dei log binari viene addebitata alla stessa tariffa dei dati regolari. I log binari vengono troncati automaticamente in base alla data del backup automatico più vecchio. Cloud SQL conserva i sette backup automatici più recenti e tutti i backup on demand. Le dimensioni dei log binari e, di conseguenza, l'importo addebitato dipendono dal carico di lavoro. Ad esempio, un carico di lavoro con molte scritture consuma più spazio per i log binari rispetto a un carico di lavoro con molte letture.

    Puoi visualizzare le dimensioni dei log binari utilizzando il comando MySQL SHOW BINARY LOGS.

    Quando vengono eseguiti i backup, i log vengono archiviati nel backup insieme ai dati.

Logging binario sulle repliche di lettura

  • Il logging binario è supportato nelle istanze di replica di lettura (solo MySQL 5.7 e 8.0). Attiva il logging binario su una replica con gli stessi comandi API utilizzati sull'istanza principale, utilizzando il nome dell'istanza della replica anziché il nome dell'istanza principale. Tieni presente che i termini enable binary logging e enable point-in-time recovery sono intercambiabili.

    La durabilità dei log binari nell'istanza di replica (ma non in quella principale) può essere impostata con il flag sync_binlog, che controlla la frequenza con cui il server MySQL sincronizza il log binario sul disco.

    Il logging binario può essere attivato su una replica anche se il backup è disabilitato sulla principale.

    Se una replica con questo valore impostato viene promossa a un server autonomo, l'impostazione viene reimpostata sul valore sicuro 1 sul server autonomo.

Fatturazione

  • Una replica di lettura viene addebitata alla stessa tariffa di un'istanza Cloud SQL standard. La replica dei dati non comporta alcun costo.
  • Per le repliche esterne, i dati che passano dalla replica principale a quella esterna vengono addebitati come trasferimento di dati. Consulta la pagina Prezzi per i prezzi del trasferimento di dati per il tipo di istanza Cloud SQL.
  • I prezzi di una replica di lettura tra regioni sono gli stessi di quelli per la creazione di una nuova istanza Cloud SQL nella regione. Consulta la pagina Prezzi delle istanze Cloud SQL e seleziona la regione appropriata. Oltre al costo normale 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 per il traffico in uscita dalla rete.

Riferimento rapido per le repliche di lettura Cloud SQL

Argomento Discussione
Backup Non puoi configurare i backup sulla replica.
Core e memoria Le repliche di lettura possono utilizzare un numero di core e una quantità di memoria diversi rispetto a 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 eliminarle.
Eliminazione della replica L'eliminazione di una replica non influisce sullo stato dell'istanza principale.
Disattivare il logging binario Prima di poter disattivare i log binari su un'istanza principale, devi promuovere o eliminare tutte le relative repliche di lettura.
Failover Un'istanza principale può eseguire il failover su una replica solo se si tratta di una replica di RE. Le repliche di lettura non sono in grado di eseguire il failover in alcun modo durante un'interruzione.
Alta disponibilità Le repliche di lettura ti consentono di attivare 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. Puoi anche utilizzare il pooling delle connessioni per distribuire le query tra le repliche con la configurazione del bilanciamento del carico per migliorare il rendimento.
Periodi di manutenzione Le repliche di lettura condividono i periodi di manutenzione con l'istanza principale. Le repliche seguono le impostazioni di manutenzione dell'istanza principale, tra cui la finestra di manutenzione, la riprogrammazione e il periodo di manutenzione negato. Durante la manutenzione, Cloud SQL aggiorna prima 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 creare repliche di queste repliche, fino a quattro livelli, inclusa l'istanza principale.
Replicazione parallela Per informazioni sull'utilizzo della replica parallela per migliorare le prestazioni, consulta Configurare la replica parallela.
IP privato Se ti connetti a una replica utilizzando un indirizzo IP privato, non devi creare un'ulteriore connessione privata VPC 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, devi promuovere o eliminare tutte le relative repliche.
Impostazioni Le impostazioni MySQL dell'istanza principale vengono propagate alla replica, incluse la password root e le modifiche alla tabella utente. Le modifiche alla CPU e alla memoria non vengono propagate alla replica.
Interrompere una replica Non puoi stop una replica. Puoi restart, delete o disable replication, ma non puoi interromperla come faresti con un'istanza principale.
Eseguire l'upgrade di una replica Le repliche di lettura possono subire un upgrade con interruzione in qualsiasi momento.
Tabelle utente Non puoi apportare modifiche alla replica. Tutte le modifiche degli utenti devono essere apportate nell'istanza principale.

Passaggi successivi