Questa pagina descrive come creare una replica di lettura per un'istanza Cloud SQL.
Una replica di lettura è una copia dell'istanza principale che riflette le modifiche apportate primarie quasi in tempo reale, in circostanze normali. Puoi utilizzare una replica di lettura per scaricare 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 è replica tra regioni, puoi eseguire un failover a un'altra regione In particolare, puoi promuovere una replica (in questo caso, le repliche esistenti non considereranno quella istanza come principale).
Per ulteriori informazioni su come funziona la replica, consulta Replica in Cloud SQL.
Prima di iniziare
Se stai creando la prima replica per questa istanza, assicurati che soddisfa i requisiti per le istanze principali. Scopri di più.
Crea una replica di lettura
Di seguito sono riportati i passaggi per creare una replica di lettura.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Trova l'istanza per cui vuoi creare una replica, quindi apri
Menu
more actions
accanto alla scheda. - Seleziona Crea replica di lettura.
Se non vedi questa opzione, significa che l'istanza è una replica; non puoi creare di una replica.
- Se per l'istanza sono abilitati i backup e il logging binario, continua con
al passaggio successivo. Altrimenti, seleziona Automatizza
backup e Abilita il logging binario, fai clic su Continua.
quindi fai clic su Salva e riavvia per riavviare l'istanza.
L'abilitazione del logging binario provoca il riavvio dell'istanza.
Nella sezione Personalizza la tua istanza della pagina, aggiorna le impostazioni della replica. Inizia facendo clic su Mostra opzioni di configurazione. per visualizzare i gruppi di impostazioni. Quindi, espandi i gruppi da esaminare e personalizzare le impostazioni. Un riepilogo di tutte le opzioni selezionate. viene visualizzato sulla destra. La personalizzazione di queste impostazioni è facoltativa. I valori predefiniti vengono assegnati in tutti i casi in cui non vengono apportate personalizzazioni.
Per ulteriori dettagli su ciascuna impostazione, consulta la pagina Informazioni sulle impostazioni delle istanze.
Ad esempio, per consentire ad altri servizi Google Cloud, come BigQuery, di accedere ai dati in Cloud SQL ed eseguire query su questi dati tramite una connessione interna, espandi il gruppo Connessioni e poi deseleziona la casella di controllo IP pubblico.
- Fai clic su Crea replica.
Cloud SQL crea un backup, se necessario, e la replica. Tornerai alla pagina dell'istanza principale.
gcloud
- Controlla lo stato dell'istanza principale:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Se la proprietà
databaseReplicationEnabled
ètrue
, l'istanza è una replica; non puoi creare una replica di una replica. - Se la proprietà
enabled
inbackupConfiguration
èfalse
, abilita subito i backup per l'istanza principale: Il parametrogcloud sql instances patch PRIMARY_INSTANCE_NAME \ --backup-start-time=>HH:MM
backup-start-time
viene specificato in formato 24 ore, nel fuso orario UTC±00 e specifica l'inizio di una Finestra di backup di 4 ore. I backup possono essere avviati in qualsiasi momento durante la finestra di backup. - Se la proprietà
binaryLogEnabled
èfalse
, attiva i log binari nell'istanza principale: L'abilitazione dei log binari comporta il riavvio dell'istanza.gcloud sql instances patch PRIMARY_INSTANCE_NAME \ --enable-bin-log
- Crea la replica:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME
Puoi specificare una dimensione del livello diversa utilizzando
--tier
, se necessario. Se stai creando una replica da un'istanza principale per MySQL 8.4 e versioni successive e la versione 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 scoprire di più, consulta gcloud sql instances create.
Se l'istanza principale ha solo un indirizzo IP interno e vuoi consentire ad altri servizi Google Cloud, come BigQuery, di accedere ai dati in Cloud SQL ed eseguire query su questi dati una connessione interna, quindi aggiungi il parametro
--enable-google-private-path
al comando.Devi creare la replica nella stessa rete VPC dell'istanza principale. Tu puoi anche specificare un
allocated-ip-range-name
in rete VPC. Se non viene specificato alcun intervallo, la replica viene creata in un intervallo casuale.
-
Il logging binario è supportato solo nelle istanze di replica di lettura (MySQL 5.7 e versioni successive). Non supportata sulle repliche di failover ad alta disponibilità legacy). Attiva il logging binario su una replica con lo stesso comando
gcloud CLI
, utilizzando il nome dell'istanza della replica anziché quello dell'istanza principale.gcloud sql instances patch REPLICA_INSTANCE_NAME \ --enable-bin-log
Durabilità del logging binario sulla replica (ma non nell'istanza principale) puoi impostare l'istanza
sync_binlog
che controlla la frequenza con cui il server MySQL sincronizza il file binario. su disco.I backup non possono essere abilitati sulle istanze di replica, ma il logging binario possono essere abilitati su una replica anche quando i backup sono disabilitati, a differenza principale.
Il periodo di conservazione dei log binari nelle istanze di replica è impostato automaticamente su un giorno, diversamente dai sette giorni nelle istanze principali.
Terraform
Per creare una replica di lettura, utilizza risorsa Terraform.
Applica le modifiche
Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome del file deve contenere
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice di esempio nel file
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
Elimina le modifiche
Per eliminare le modifiche, procedi nel seguente modo:
- Per disabilitare la protezione dall'eliminazione, imposta il file di configurazione Terraform
Argomento
deletion_protection
perfalse
.deletion_protection = "false"
- Applica la configurazione Terraform aggiornata eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
-
Rimuovi le risorse applicate in precedenza con la tua configurazione Terraform eseguendo questo comando e inserendo
yes
al prompt:terraform destroy
REST v1
- Ottenere la configurazione di backup corrente
Utilizza il metodo
get
della risorsa instances per restituire la versione del database e la configurazione di backup corrente per l'istanza principale.Prima di utilizzare i dati della richiesta, effettua 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:
- Verificare che i campi di replica siano impostati
Se
enabled
opointInTimeEnabled
sonofalse
, utilizza il metodopatch
della risorsa istanze per attivarli entrambi. Nella richiesta, specifica le proprietà della configurazione di backup che vuoi modificare.Per attivare i backup, imposta
enabled
sutrue
e ilstartTime
su un'ora del giorno in formatoHH:MM
. Il parametrostartTime
viene specificato in formato 24 ore, in UTC±00 e specifica l'inizio di un backup di quattro ore finestra. I backup possono essere avviati in qualsiasi momento durante la finestra di backup.Per attivare il recupero point-in-time, imposta
pointInTimeEnabled
sutrue
.Prima di utilizzare i dati della richiesta, effettua 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 principale o della 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:
- Crea la replica di lettura
Utilizza il metodo
insert
della risorsa instances per creare la replica di lettura. La proprietàdatabaseVersion
deve essere uguale a quella principale. Se l'istanza principale utilizza un indirizzo IP interno, puoi specificare unallocatedIpRange
nello stesso modo in cui crea un'istanza principale. 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 della versione dell'enum (ad es. MYSQL_8_0)
- primary-instance-name: il nome dell'istanza principale
- primary-instance-region: la regione dell'istanza principale
- 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
- Recuperare la configurazione attuale del backup
Utilizza la
get
della risorsa instances per restituire la versione del database configurazione del backup attuale 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:
- Verificare che i campi di replica siano impostati
Se
enabled
obinaryLogEnabled
sonofalse
nell'istanza principale, utilizza il metodopatch
della risorsa istanze per attivarli entrambi. Nella richiesta, specificare le proprietà della configurazione di backup che vuoi modificare.Per attivare i backup, imposta
enabled
sutrue
e ilstartTime
su un'ora del giorno in formatoHH:MM
. Il parametrostartTime
viene specificato in formato 24 ore, in UTC±00 e specifica l'inizio di un backup di quattro ore finestra. I backup possono essere avviati in qualsiasi momento durante la finestra di backup.Per attivare il recupero point-in-time, imposta
binaryLogEnabled
sutrue
nell'istanza principale.Il logging binario è supportato nelle istanze di replica di lettura (solo MySQL 5.7 e versioni successive). Attiva il logging binario su una replica con la stessa API, utilizzando l'ID istanza della replica anziché l'ID istanza della principale.
Durabilità del logging binario sulla replica (ma non nell'istanza principale) puoi impostare l'istanza
sync_binlog
che controlla la frequenza con cui il server MySQL sincronizza il file binario. su disco.I backup non possono essere abilitati sulle istanze di replica, ma il logging binario possono essere abilitati su una replica anche quando i backup sono disabilitati, a differenza principale.
Prima di utilizzare i dati della richiesta, effettua 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 principale 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:
- Crea la replica di lettura
Utilizza la
insert
della risorsa instances per creare il di lettura. La proprietàdatabaseVersion
deve essere la stessa come principale. Se l'istanza principale utilizza un indirizzo IP interno, puoi specificare unallocatedIpRange
nello stesso modo in cui crei un'istanza principale. 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 della versione dell'enum (ad es. MYSQL_8_0)
- primary-instance-name: il nome dell'istanza principale
- primary-instance-region: la regione dell'istanza principale
- 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 in cui è abilitato Private Service Connect
Per creare una replica di lettura di un'istanza con Private Service Connect abilitato, utilizza gcloud CLI o l'API. Puoi creare questa replica nella stessa regione o in una regione diversa da quella dell'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ò replicare solo da un'altra istanza Private Service Connect. Inoltre, non può essere replicato da un'istanza che supporta le connessioni IP esterni o da un'istanza configurata con 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 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 replica.
ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è contenuto in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect per l'istanza.
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: abilita 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. Viene eseguito il failover dell'istanza in un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per saperne di più sull'impostazione e sulla rimozione dell'alta disponibilità per le istanze, vedi 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, effettua 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 replica.
- MACHINE_TYPE: il tipo di macchina per l'istanza.
- AVAILABILITY_TYPE: abilita 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. Viene eseguito il failover dell'istanza in un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per saperne di più sull'impostazione e sulla rimozione dell'alta disponibilità per le istanze, vedi 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 è contenuto in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect per l'istanza.
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, effettua 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 replica.
- MACHINE_TYPE: il tipo di macchina per l'istanza.
- AVAILABILITY_TYPE: abilita 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. Viene eseguito il failover dell'istanza in un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per ulteriori informazioni 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
Il flagcloudsql_iam_authentication
non è abilitato automaticamente nelle repliche di lettura se è abilitato nell'istanza principale.
Per configurare una replica di lettura per l'autenticazione del database IAM:
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Nel riquadro Configurazione, cerca il flag
cloudsql_iam_authentication
. Se il flag non è nell'elenco, non è necessario abilitare il flag nella replica di lettura. Se il flag si trova devi abilitare il flag sulla replica di lettura. Se devi abilitare sulla replica di lettura, continua con il passaggio successivo. - Seleziona Repliche dal menu di navigazione SQL.
- Fai clic sul nome della replica da modificare.
- Fai clic su Modifica.
- Nella sezione Opzioni di configurazione, espandi Flag.
- Seleziona + Aggiungi elemento.
- Inserisci
cloudsql_iam_authentication
come nome della segnalazione. Assicurati che per il flag sia selezionata l'opzione On. - Fai clic su Salva.
Crea repliche a cascata
Questa sezione descrive come creare e gestire le repliche a cascata.
Per informazioni sul funzionamento delle repliche a cascata, consulta Repliche a cascata.
Passaggi per creare una replica a cascata
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Per MySQL 5.7 o versioni successive, abilita la replica.
- Fai clic sulla scheda Repliche per la replica che agirà come padre per la replica che vuoi creare.
- Fai clic su Crea replica.
- Nella pagina Crea replica di lettura, aggiorna l'ID istanza e qualsiasi altra opzione di configurazione, inclusi il nome, la regione e la zona.
- Fai clic su Crea.
Cloud SQL crea una replica. Tornerai alla pagina dell'istanza e la replica principale.
- Segui i passaggi 4-6 per ogni nuova replica con struttura a cascata da creare.
gcloud
- Se utilizzi MySQL 5.7 o versioni successive, abilita i binlog per l'istanza principale della nuova replica:
Sostituisci PARENT_REPLICA_NAME con il nome della replica padre.gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
- Crea la nuova replica specificando la replica principale come istanza principale mediante il flag
--master-instance-name
: - REPLICA_NAME: l'ID univoco della replica che stai creando
- PARENT_REPLICA_NAME: il nome della replica principale
- Dopo aver creato la replica a cascata, puoi vedere che le modifiche apportate all'istanza principale vengono replicate in tutte le repliche della catena di repliche a cascata.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- Se utilizzi MySQL versione 5.7 o successive, abilita il logging binario:
Per abilitare il logging binario, salva il seguente JSON in un file denominato request.JSON, quindi invoca il comando curl per abilitare il logging binario.
{ "settings": { "backupConfiguration": { "enabled": false, "binaryLogEnabled": true } } }
- Per creare una replica sotto la 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", } }
- 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 è stata avviata al momento della creazione. | Probabilmente è presente 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 degli indicatori nella richiesta non è valido. Potrebbe essere una segnalazione
fornito esplicitamente o uno impostato su un valore predefinito.
Innanzitutto, controlla 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 è: |
Lo spazio sul disco è esaurito. | 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. |
L'istanza di replica utilizza troppa memoria. | La replica utilizza memoria temporanea per memorizzare nella cache le operazioni di lettura spesso richieste, il che può portare a utilizzare più memoria dell'istanza principale.
Riavvia l'istanza replica per recuperare lo spazio di memoria temporaneo. |
La replica è stata interrotta. | È stato raggiunto il limite di spazio di archiviazione massimo e l'aumento automatico dello spazio di archiviazione non è abilitato.
Modifica l'istanza per attivare |
Il ritardo nella replica è costantemente elevato. | Il carico di scrittura è troppo elevato per la replica. Il ritardo nella replica si verifica quando il thread SQL su una replica non è in grado di stare al passo con il thread I/O. Alcuni tipi di query o carichi di lavoro possono causare un ritardo elevato della replica temporaneo o permanente per un determinato schema. Alcuni dei tipici
Le cause del ritardo di replica sono:
Ecco alcune possibili soluzioni:
|
Il ritardo della replica aumenta improvvisamente. | Ciò è causato da transazioni a lunga esecuzione. Quando una transazione
(istruzione singola o più istruzioni) esegue il commit sull'istanza di origine,
l'ora di inizio della transazione viene registrata nel log binario. Quando la replica riceve questo evento del log bin, confronta il timestamp con quello corrente per calcolare il ritardo nella replica. Di conseguenza, una transazione a lunga esecuzione
nell'origine comporterebbe un immediato ampio ritardo di replica
replica. Se il numero di modifiche delle righe nella transazione è elevato,
della replica impiegherebbe molto tempo per eseguirla. Nel frattempo,
il ritardo della replica aumenta. Al termine della replica
transazione, il periodo di recupero dipende dal carico di lavoro di scrittura
dell'origine e la velocità di elaborazione della replica.
Per evitare una transazione lunga, alcune possibili soluzioni sono:
|
La modifica dei flag di replica parallela genera un errore. | È 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:
|
La creazione della replica non riesce con il timeout. | Le transazioni non committate di lunga durata nell'istanza principale possono causare
il fallimento della creazione della replica di lettura.
Ricrea la replica dopo aver interrotto tutte le query in esecuzione. |
Passaggi successivi
- Scopri come gestire le repliche.
- Scopri di più sulle repliche tra regioni.