Questa pagina descrive come creare una replica di lettura per un'istanza Cloud SQL.
Per configurare un'istanza Cloud SQL in modo che funga da publisher per un subscriber esterno, consulta Configura repliche esterne.
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
Quando crei una replica di lettura, tieni presente quanto segue:- Puoi creare un massimo di 8 repliche di lettura per istanza principale.
- Se non viene specificata una versione, la versione Cloud SQL Enterprise è quella predefinita.
- Se, durante la creazione di una replica di lettura o di una replica a cascata, la primaria è un'istanza Cloud SQL Enterprise Plus, devi indicare la versione e il livello che vuoi utilizzare.
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 il menu
more actions
accanto alla scheda. - Seleziona Crea replica di lettura.
Se non vedi questa scelta, l'istanza è una replica e non puoi creare una replica di una replica.
Nella sezione Personalizza la tua istanza, 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.
- Fai clic su Crea replica.
Cloud SQL crea un backup, se necessario, e crea la replica. Tornerai alla pagina dell'istanza primaria.
gcloud
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
.
Puoi specificare una regione diversa utilizzando il parametro --region
.
Se l'istanza principale ha solo un indirizzo IP interno, aggiungi il
parametro --no-assign-ip
al comando.
Puoi aggiungere altri parametri per altre impostazioni dell'istanza. Per saperne di più, consulta gcloud sql instances create.
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.
Terraform
Per creare una replica di lettura, utilizza una risorsa Terraform.
REST v1beta4
Utilizza il metodo
insert
della risorsa instances per creare la replica di lettura. Le proprietà region
e databaseVersion devono essere uguali a quelle del master.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- database-version: stringa della versione dell'enum (ad esempio, SQLSERVER_2017_ENTERPRISE)
- 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"
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, } }
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": "SQLSERVER_2019_STANDARD", "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": "SQLSERVER_2019_STANDARD", "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" }
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.
Prima di iniziare
L'istanza principale deve avere una replica in cascata. La sezione seguente fornisce i passaggi per creare una replica a cascata.
Passaggi per creare una replica a cascata
Quando crei una replica a cascata, devi creare la
replica in una regione diversa da quella dell'istanza primaria.
Configura una replica a cascata impostando il flag
cascadable-replica
.
gcloud
Crea la nuova replica specificando l'istanza primaria utilizzando il flag --master-instance-name
e il flag --cascadable-replica
:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --cascadable-replica \ --region=REGION
Sostituisci quanto segue:
- REPLICA_NAME: l'ID univoco della replica che stai creando.
- PRIMARY_INSTANCE_NAME: il nome dell'istanza principale.
- REGION: la regione in cui vuoi creare la nuova replica. Questa regione deve essere diversa da quella dell'istanza primaria.
Devi creare la replica nella stessa rete VPC dell'istanza principale. Puoi anche specificare il nome di un intervallo IP allocato in quella rete VPC. Se non viene specificato alcun intervallo, la replica viene creata in un intervallo casuale.
Puoi aggiungere altri parametri per altre impostazioni dell'istanza. Ad esempio,
- Puoi specificare una dimensione del livello della macchina diversa utilizzando il parametro
--tier
. - Se l'istanza primaria ha solo un indirizzo IP privato, aggiungi il parametro
--no-assign-ip
al comando.
Per saperne di più sull'aggiunta di parametri per le impostazioni dell'istanza, consulta gcloud sql instances create.
Dopo aver creato la replica a cascata, puoi creare una replica a cascata.
curl
- Per creare una replica in cascata nell'istanza primaria,
modifica il seguente esempio di codice JSON e salvalo in un file denominato
request.json
.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- DATABASE_VERSION: stringa enum della versione del database. Ad esempio,
SQLSERVER_2017_ENTERPRISE.
- 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-2-3840
.
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "DATABASE_VERSION" "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", "settingsVersion": 0, } "replicaConfiguration": { "cascadableReplica": true } }
- Nella sezione
replicaConfiguration
, assicurati che il campocascadadableReplica
sia impostato sutrue
. - 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"
Dopo aver creato la replica a cascata, puoi creare una replica a cascata.
Passaggi per creare una replica a cascata
Quando crei una replica a cascata, devi crearla nella stessa regione della replica a cascata. Configura una replica a cascata fornendo il nome della replica a cascata nel parametro–master-instance-name
.
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Fai clic sulla scheda Repliche per la replica che fungerà da elemento principale 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 nome, regione e zona.
- Fai clic su Crea.
Cloud SQL crea una replica. Tornerai alla pagina dell'istanza della replica principale.
- Segui i passaggi 4-6 per ogni nuova replica in cascata che vuoi creare.
gcloud
- Crea la nuova replica specificando l'istanza di replica a cascata nel flag
--master-instance-name
: - REPLICA_NAME: l'ID univoco della replica che stai creando
- CASCADABLE_REPLICA_NAME: il nome della replica in cascata
- 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.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=CASCADABLE_REPLICA_NAME \
curl
- Per creare una replica in cascata nella replica a cascata, modifica il seguente esempio di codice JSON
e salvalo in un file denominato
request.json
:{ "masterInstanceName": "CASCADABLE_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 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 Se il flag |
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 è: |
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 |
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:
Alcune possibili soluzioni includono:
|
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
- Scopri come gestire le repliche.
- Scopri di più sulle repliche tra regioni.