Creazione di repliche di lettura

Questa pagina descrive come creare una replica di lettura per un'istanza Cloud SQL.

Una replica di lettura è una copia dell'istanza primaria che riflette le modifiche apportate all'istanza primaria quasi in tempo reale, in circostanze normali. Puoi utilizzare una replica di lettura per trasferire le richieste di lettura o il traffico di analisi dall'istanza principale.

Inoltre, per il ripristino di emergenza, puoi eseguire una migrazione a livello di regione. Se una replica è una replica tra regioni, puoi eseguire il failover in un'altra regione; in particolare, puoi promuovere una replica a istanza autonoma (nel qual caso, le repliche esistenti non considererebbero l'istanza come principale).

Per saperne di più su come funziona la replica, consulta Replica in Cloud SQL.

Prima di iniziare

Se stai creando la prima replica per questa istanza, assicurati che l'istanza soddisfi i requisiti per le istanze primarie. Scopri di più.

Crea una replica di lettura

Di seguito sono riportati i passaggi per creare una replica di lettura.

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Trova l'istanza per cui vuoi creare una replica, quindi apri il menu more actions accanto alla scheda.
  3. Seleziona Crea replica di lettura.

    Se non vedi questa scelta, l'istanza è una replica e non puoi creare una replica di una replica.

  4. Se l'istanza aveva backup e logging binario abilitati, continua con il passaggio successivo. Altrimenti, seleziona Backup automatici e Abilita logging binario, fai clic su Continua e poi su Salva e riavvia per riavviare l'istanza.

    L'abilitazione del logging binario comporta il riavvio dell'istanza.

  5. Nella sezione Personalizza la tua istanza della pagina, aggiorna le impostazioni per la replica. Inizia facendo clic su Mostra opzioni di configurazione per visualizzare i gruppi di impostazioni. Poi espandi i gruppi che ti interessano per esaminare e personalizzare le impostazioni. A destra viene visualizzato un Riepilogo di tutte le opzioni selezionate. La personalizzazione di queste impostazioni è facoltativa. I valori predefiniti vengono assegnati in tutti i casi in cui non vengono apportate personalizzazioni.

    Per maggiori dettagli su ciascuna impostazione, consulta la pagina Informazioni sulle impostazioni per le istanze.

    Ad esempio, per consentire ad altri servizi, come BigQuery, di accedere ai dati in Cloud SQL ed eseguire query su questi dati tramite una connessione interna, espandi il gruppo Connessioni e deseleziona la casella di controllo IP pubblico. Google Cloud

  6. Fai clic su Crea replica.

    Cloud SQL crea un backup, se necessario, e crea la replica. Tornerai alla pagina dell'istanza primaria.

gcloud

  1. Controlla lo stato dell'istanza primaria:
    gcloud sql instances describe PRIMARY_INSTANCE_NAME
          

    Se la proprietà databaseReplicationEnabled è true, l'istanza è una replica; non puoi creare una replica di una replica.

  2. Se la proprietà enabled in backupConfiguration è false, abilita ora i backup per l'istanza principale:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time=>HH:MM
          
    Il parametro backup-start-time è specificato nel formato orario 24 ore, nel fuso orario UTC±00 e specifica l'inizio di un periodo di backup di 4 ore. I backup possono iniziare in qualsiasi momento durante la finestra di backup.
  3. Se la proprietà binaryLogEnabled è false, abilita i log binari sull'istanza primaria:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    L'abilitazione dei log binari causa il riavvio dell'istanza.
  4. Crea la replica:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    Se necessario, puoi specificare una dimensione del livello diversa utilizzando il parametro --tier. Se crei una replica da un'istanza primaria per MySQL 8.4 e versioni successive e la versione di Cloud SQL per l'istanza è Enterprise o Enterprise Plus, non devi specificare un valore per questo parametro. La replica eredita il tipo di macchina dall'istanza principale.

    Puoi specificare una regione diversa utilizzando il parametro --region.

    Puoi aggiungere altri parametri per altre impostazioni dell'istanza. Per saperne di più, consulta gcloud sql instances create.

    Se l'istanza primaria ha solo un indirizzo IP interno e vuoi consentire ad altri servizi, come BigQuery, di accedere ai dati in Cloud SQL ed eseguire query su questi dati tramite una connessione interna, aggiungi il parametro --enable-google-private-path al comando. Google Cloud

    Devi creare la replica nella stessa rete VPC dell'istanza principale. Puoi anche specificare un allocated-ip-range-name in quella rete VPC. Se non viene specificato alcun intervallo, la replica viene creata in un intervallo casuale.

  • Il logging binario è supportato sulle istanze di replica di lettura (solo MySQL 5.7 e versioni successive). Non supportato sulle repliche di failover HA legacy. Attiva la registrazione binaria su una replica con lo stesso comando gcloud CLI, utilizzando il nome dell'istanza della replica anziché quello dell'istanza primaria.
    gcloud sql instances patch REPLICA_INSTANCE_NAME \
    --enable-bin-log
        

    La durabilità del logging binario sulla replica (ma non sull'istanza primaria) può essere impostata con il flag sync_binlog, che controlla la frequenza con cui il server MySQL sincronizza il log binario sul disco.

    I backup non possono essere abilitati sulle istanze di replica, ma il logging binario può essere abilitato su una replica anche quando i backup sono disattivati, a differenza della replica primaria.

    Il periodo di conservazione dei log binari sulle istanze di replica è impostato automaticamente su un giorno, a differenza dei sette giorni delle istanze principali.

Terraform

Per creare una replica di lettura, utilizza la risorsa Terraform.

resource "google_sql_database_instance" "read_replica" {
  name                 = "mysql-replica-instance-name"
  master_instance_name = google_sql_database_instance.primary.name
  region               = "europe-west4"
  database_version     = "MYSQL_8_0"

  replica_configuration {
    failover_target = false
  }

  settings {
    tier              = "db-n1-standard-2"
    availability_type = "ZONAL"
    disk_size         = "100"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Applica le modifiche

Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.

Prepara la directory

Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file viene denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel file main.tf appena creato.

    (Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
    terraform init

    (Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione -upgrade:

    terraform init -upgrade

Applica le modifiche

  1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione di Terraform eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply

    Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).

  3. Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.

Elimina le modifiche

Per eliminare le modifiche:

  1. Per disattivare la protezione dall'eliminazione, imposta l'argomento deletion_protection su false nel file di configurazione Terraform.
    deletion_protection =  "false"
  2. Applica la configurazione Terraform aggiornata eseguendo il comando seguente e inserendo yes al prompt:
    terraform apply
  1. Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo yes al prompt:

    terraform destroy

REST v1

  1. Ottenere la configurazione di backup attuale

    Utilizza il metodo get della risorsa delle istanze per restituire la versione del database e la configurazione di backup corrente per il database primario.

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

    • project-id: l'ID progetto
    • primary-instance-name: il nome dell'istanza principale

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/primary-instance-name

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  2. Verificare che i campi di replica siano impostati

    Se enabled o pointInTimeEnabled sono false, utilizza il metodo patch della risorsa delle istanze per abilitarli entrambi. Nella richiesta, specifica le proprietà della configurazione di backup che vuoi modificare.

    Per abilitare i backup, imposta enabled su true e startTime su un orario del giorno nel formato HH:MM. Il parametro startTime è specificato in formato 24 ore, nel fuso orario UTC±00 e specifica l'inizio di un periodo di backup di 4 ore. I backup possono iniziare in qualsiasi momento durante la finestra di backup.

    Per abilitare il recupero point-in-time, imposta pointInTimeEnabled su true.

    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 primaria o di replica di lettura che stai configurando per l'alta disponibilità
    • START_TIME: l'ora (in ore e minuti)

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  3. Crea la replica di lettura

    Utilizza il metodo insert della risorsa delle istanze per creare la replica di lettura. La proprietà databaseVersion deve essere uguale a quella principale. Se l'istanza primaria utilizza un indirizzo IP interno, puoi specificare un allocatedIpRange nello stesso modo in cui crei un'istanza primaria. Se non viene specificato alcun intervallo, la replica viene creata in un intervallo casuale. Per una replica di lettura tra regioni, specifica una regione diversa da quella dell'istanza principale.

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

    • project-id: l'ID progetto
    • database-version: stringa di versione dell'enumerazione (ad esempio, MYSQL_8_0)
    • primary-instance-name: il nome dell'istanza principale
    • primary-instance-region: la regione dell'istanza primaria
    • replica-region: La regione dell'istanza di replica
    • replica-name: il nome dell'istanza di replica
    • machine-type: stringa enum del tipo di macchina. Ad esempio: "db-custom-1-3840"
    • private-network: la rete autorizzata che stai aggiungendo o selezionando per creare una connessione privata.

    Metodo HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

    Corpo JSON della richiesta:

    {
      "masterInstanceName": "primary-instance-name",
      "project": "project-id",
      "databaseVersion": "database-version",
      "name": "replica-name",
      "region": "replica-region",
      "settings":
      {
        "tier": "machine-type",
        "settingsVersion": 0,
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

  1. Ottenere la configurazione di backup attuale

    Utilizza il metodo get della risorsa delle istanze per restituire la versione del database e la configurazione di backup corrente per il master.

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

    • project-id: l'ID progetto
    • primary-instance-name: il nome dell'istanza principale

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/primary-instance-name

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  2. Verificare che i campi di replica siano impostati

    Se enabled o binaryLogEnabled sono false nell'istanza principale, utilizza il metodo patch della risorsa delle istanze per attivarli entrambi. Nella richiesta, specifica le proprietà della configurazione di backup che vuoi modificare.

    Per abilitare i backup, imposta enabled su true e startTime su un orario del giorno nel formato HH:MM. Il parametro startTime è specificato in formato 24 ore, nel fuso orario UTC±00 e specifica l'inizio di un periodo di backup di 4 ore. I backup possono iniziare in qualsiasi momento durante la finestra di backup.

    Per abilitare il recupero point-in-time, imposta binaryLogEnabled su true nell'istanza primaria.

    Il logging binario è supportato sulle istanze di replica di lettura (solo MySQL 5.7 e versioni successive). Attiva la registrazione binaria su una replica con la stessa API, utilizzando l'ID istanza della replica anziché quello del database primario.

    La durabilità del logging binario sulla replica (ma non sull'istanza primaria) può essere impostata con il flag sync_binlog, che controlla la frequenza con cui il server MySQL sincronizza il log binario sul disco.

    I backup non possono essere abilitati sulle istanze di replica, ma il logging binario può essere abilitato su una replica anche quando i backup sono disattivati, a differenza della replica primaria.

    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 primaria o di replica di lettura che stai configurando per l'alta disponibilità
    • START_TIME: l'ora (in ore e minuti)

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  3. Crea la replica di lettura

    Utilizza il metodo insert della risorsa delle istanze per creare la replica di lettura. La proprietà databaseVersion deve essere uguale a quella principale. Se l'istanza primaria utilizza un indirizzo IP interno, puoi specificare un allocatedIpRange nello stesso modo in cui crei un'istanza primaria. Per una replica di lettura tra regioni, specifica una regione diversa da quella dell'istanza principale.

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

    • project-id: l'ID progetto
    • database-version: stringa di versione dell'enumerazione (ad esempio, MYSQL_8_0)
    • primary-instance-name: il nome dell'istanza principale
    • primary-instance-region: la regione dell'istanza primaria
    • replica-region: La regione dell'istanza di replica
    • replica-name: il nome dell'istanza di replica
    • machine-type: stringa enum del tipo di macchina. Ad esempio: "db-custom-1-3840"
    • private-network: la rete autorizzata che stai aggiungendo o selezionando per creare una connessione privata.

    Metodo HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

    Corpo JSON della richiesta:

    {
      "masterInstanceName": "primary-instance-name",
      "project": "project-id",
      "databaseVersion": "database-version",
      "name": "replica-name",
      "region": "replica-region",
      "settings":
      {
        "tier": "machine-type",
        "settingsVersion": 0,
        
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
        
      }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

Crea una replica di lettura di un'istanza con Private Service Connect abilitato

Per creare una replica di lettura di un'istanza con Private Service Connect abilitato, utilizza l'interfaccia a riga di comando gcloud o l'API. Puoi creare questa replica nella stessa regione o in una regione diversa dall'istanza principale (replica di lettura tra regioni).

La replica di lettura non può essere replicata da un'istanza con un tipo di connettività diverso. Ad esempio, un'istanza con Private Service Connect abilitato può essere replicata solo da un'altra istanza Private Service Connect. Inoltre, non può eseguire la replica da un'istanza che supporta connessioni IP esterne o da un'istanza configurata con l'accesso privato ai servizi.

gcloud

Per creare una replica di lettura di un'istanza, utilizza il comando gcloud sql instances create:

gcloud sql instances create REPLICA_INSTANCE_NAME \
--master-instance-name=PRIMARY_INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip

Effettua le seguenti sostituzioni:

  • REPLICA_INSTANCE_NAME: il nome dell'istanza di replica.
  • PRIMARY_INSTANCE_NAME: il nome dell'istanza principale.
  • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
  • REGION_NAME: il nome della regione per l'istanza di replica.
  • ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è incluso in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect.

    Cloud SQL non copia i progetti consentiti per l'istanza principale nella replica. Per ogni replica, devi creare un endpoint Private Service Connect. Se utilizzi il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL, crea una zona DNS e un record DNS per le repliche.

  • AVAILABILITY_TYPE: attiva l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
    • REGIONAL: abilita l'alta disponibilità ed è consigliato per le istanze di produzione. L'istanza esegue il failover a un'altra zona all'interno della regione selezionata.
    • ZONAL: non forniscono funzionalità di failover. Questo è il valore predefinito.

    Per saperne di più su come impostare e rimuovere l'alta disponibilità per le istanze, consulta Configurare un'istanza esistente per l'alta disponibilità e Disattivare l'alta disponibilità per un'istanza.

REST v1

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

  • PRIMARY_INSTANCE_NAME: il nome dell'istanza principale.
  • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
  • REPLICA_INSTANCE_NAME: il nome dell'istanza di replica.
  • REGION_NAME: il nome della regione per l'istanza di replica.
  • MACHINE_TYPE: il tipo di macchina per l'istanza
  • AVAILABILITY_TYPE: attiva l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
    • REGIONAL: abilita l'alta disponibilità ed è consigliato per le istanze di produzione. L'istanza esegue il failover a un'altra zona all'interno della regione selezionata.
    • ZONAL: non forniscono funzionalità di failover. Questo è il valore predefinito.

    Per saperne di più su come impostare e rimuovere l'alta disponibilità per le istanze, consulta Configurare un'istanza esistente per l'alta disponibilità e Disattivare l'alta disponibilità per un'istanza.

  • ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è incluso in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect.

    Cloud SQL non copia i progetti consentiti per l'istanza principale nella replica. Per ogni replica, devi creare un endpoint Private Service Connect. Se utilizzi il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL, devi creare una zona DNS e un record DNS per le repliche.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Corpo JSON della richiesta:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PRIMARY_INSTANCE_NAME: il nome dell'istanza principale.
  • PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
  • REPLICA_INSTANCE_NAME: il nome dell'istanza di replica.
  • REGION_NAME: il nome della regione per l'istanza di replica.
  • MACHINE_TYPE: il tipo di macchina per l'istanza
  • AVAILABILITY_TYPE: attiva l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
    • REGIONAL: abilita l'alta disponibilità ed è consigliato per le istanze di produzione. L'istanza esegue il failover a un'altra zona all'interno della regione selezionata.
    • ZONAL: non forniscono funzionalità di failover. Questo è il valore predefinito.

    Per saperne di più su come impostare e rimuovere l'alta disponibilità per le istanze, consulta Configurare un'istanza esistente per l'alta disponibilità e Disattivare l'alta disponibilità per un'istanza.

  • ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è incluso in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect.

    Cloud SQL non copia i progetti consentiti per l'istanza principale nella replica. Per ogni replica, devi creare un endpoint Private Service Connect. Se utilizzi il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL, devi creare una zona DNS e un record DNS per le repliche.

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

Corpo JSON della richiesta:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],  
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Configura le repliche di lettura per l'autenticazione IAM dei database

Le repliche di lettura non hanno il flag cloudsql_iam_authentication abilitato automaticamente quando è abilitato sull'istanza principale.

Per configurare una replica di lettura per l'autenticazione IAM dei database:

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Nel riquadro Configurazione, cerca il flag cloudsql_iam_authentication. Se il flag non è presente nell'elenco, l'attivazione del flag nella replica di lettura non è necessaria. Se il flag è presente nell'elenco, devi abilitarlo nella replica di lettura. Se devi attivare il flag nella replica di lettura, continua con il passaggio successivo.
  4. Seleziona Replica dal menu di navigazione SQL.
  5. Fai clic sul nome della replica da modificare.
  6. Fai clic su Modifica.
  7. Nella sezione Opzioni di configurazione, espandi Flag.
  8. Seleziona + Aggiungi elemento.
  9. Inserisci cloudsql_iam_authentication per il nome del flag. Assicurati che per questo flag sia selezionata l'opzione On.
  10. Fai clic su Salva.

Creare repliche a cascata

Questa sezione descrive come creare e gestire le repliche a cascata.

Per informazioni sul funzionamento delle repliche a cascata, vedi Repliche a cascata.

Passaggi per creare una replica a cascata

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per MySQL 5.7 o versioni successive, attiva la replica.
  3. Fai clic sulla scheda Repliche per la replica che fungerà da elemento principale per la replica che vuoi creare.
  4. Fai clic su Crea replica.
  5. Nella pagina Crea replica di lettura, aggiorna l'ID istanza e qualsiasi altra opzione di configurazione, inclusi nome, regione e zona.
  6. Fai clic su Crea.

    Cloud SQL crea una replica. Tornerai alla pagina dell'istanza della replica principale.

  7. Segui i passaggi 4-6 per ogni nuova replica in cascata che vuoi creare.

gcloud

  1. Se utilizzi MySQL versione 5.7 o successive, abilita i binlog per il primario della nuova replica:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Sostituisci PARENT_REPLICA_NAME con il nome della replica principale.
  2. Crea la nuova replica specificando la replica primaria come istanza primaria utilizzando il flag --master-instance-name:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Sostituisci quanto segue:
    • REPLICA_NAME: l'ID univoco della replica che stai creando
    • PARENT_REPLICA_NAME: il nome della replica principale
  4. Dopo aver creato la replica a cascata, puoi notare che le modifiche apportate all'istanza principale vengono replicate in tutte le repliche della catena di repliche a cascata.

curl

  1. Se utilizzi MySQL versione 5.7 o successive, abilita la registrazione binaria:

    Per abilitare la registrazione binaria, salva il seguente JSON in un file denominato request.JSON, poi richiama il comando curl per abilitare la registrazione binaria.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. Per creare una replica nella replica principale, modifica il seguente esempio di codice JSON e salvalo in un file denominato request.json:
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Esegui questo comando:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

Risoluzione dei problemi

Problema Risoluzione dei problemi
La replica di lettura non ha iniziato la replica al momento della creazione. Probabilmente nei file di log è presente un errore più specifico. Ispeziona 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 che hai fornito esplicitamente o di uno impostato su un valore predefinito.

Innanzitutto, verifica che il valore del flag max_connections sia maggiore o uguale al valore dell'istanza principale.

Se il flag max_connections è impostato correttamente, esamina i log in Cloud Logging per trovare l'errore effettivo.

Impossibile creare la replica di lettura. Errore sconosciuto. Probabilmente nei file di log è presente un errore più specifico. Ispeziona i log in Cloud Logging per trovare l'errore effettivo.

Se l'errore è: set Service Networking service account as servicenetworking.serviceAgent role on consumer project, disattiva e riattiva Service Networking API. Questa azione crea il account di servizio necessario per continuare la procedura.

Lo spazio sul disco è esaurito. La dimensione del disco dell'istanza principale può esaurirsi durante la creazione della replica. Modifica l'istanza principale per eseguire l'upgrade a una dimensione del disco maggiore.
L'istanza di replica utilizza troppa memoria. La replica utilizza la memoria temporanea per memorizzare nella cache le operazioni di lettura richieste di frequente, il che può portare a un utilizzo di memoria superiore rispetto all'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'aumento automatico dello spazio di archiviazione non è abilitato.

Modifica l'istanza per abilitare automatic storage increase.

Il ritardo di replica è costantemente elevato. Il carico di scrittura è troppo elevato per la replica. Il ritardo di replica si verifica quando il thread SQL su una replica non riesce a tenere il passo con il thread I/O. Alcuni tipi di query o carichi di lavoro possono causare un ritardo di replica elevato temporaneo o permanente per un determinato schema. Alcune delle cause tipiche del ritardo della replica sono:
  • Query lente sulla replica. Trova e correggi gli errori.
  • Tutte le tabelle devono avere una chiave univoca/primaria. Ogni aggiornamento di una tabella senza una chiave univoca/primaria causa scansioni complete della tabella sulla replica.
  • Query come DELETE ... WHERE field < 50000000 causano un ritardo della replica con la replica basata su righe, poiché un numero elevato di aggiornamenti si accumula nella replica.

Alcune possibili soluzioni includono:

Il ritardo della replica aumenta improvvisamente. Ciò è dovuto a una o più transazioni a lunga esecuzione. Quando una transazione (singola istruzione o più istruzioni) viene eseguita nell'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 il timestamp corrente per calcolare il ritardo di replica. Pertanto, una transazione a lunga esecuzione sull'origine comporterebbe un ritardo di replica immediato e di grandi dimensioni sulla replica. Se la quantità di modifiche alle righe nella transazione è elevata, anche la replica impiegherà molto tempo per eseguirla. Durante il periodo di tempo, il ritardo della replica aumenta. Una volta completata questa transazione, il periodo di recupero dipenderà dal carico di lavoro di scrittura sull'origine e dalla velocità di elaborazione della replica.

Per evitare una transazione lunga, alcune possibili soluzioni includono:

  • Suddividi la transazione in più transazioni di piccole dimensioni
  • Dividi una singola query di scrittura di grandi dimensioni in batch più piccoli
  • Prova a separare le query SELECT lunghe da una transazione mista con DML
La modifica dei flag di replica parallela genera un errore. È stato impostato un valore errato per uno o più di questi flag.

Nell'istanza principale che mostra il messaggio di errore, imposta i flag di replica parallela:

  1. Modifica i flag binlog_transaction_dependency_tracking e transaction_write_set_extraction:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Aggiungi il flag slave_pending_jobs_size_max:

    slave_pending_jobs_size_max=33554432

  3. Modifica il flag transaction_write_set_extraction:

    transaction_write_set_extraction=XXHASH64

  4. Modifica il flag binlog_transaction_dependency_tracking:

    binlog_transaction_dependency_tracking=WRITESET

La creazione della replica non riesce a causa del timeout. Le transazioni non sottoposte a commit a esecuzione prolungata sull'istanza principale possono causare la mancata creazione della replica di lettura.

Ricrea la replica dopo aver interrotto tutte le query in esecuzione.

Passaggi successivi