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 principale che riflette le modifiche all'istanza principale quasi in tempo reale, in circostanze normali. Puoi utilizzare una replica di lettura per ridurre il carico delle richieste di lettura o del 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 un failover in un'altra regione; in particolare, puoi promuovere una replica a un'istanza autonoma (in questo caso, le repliche esistenti non considereranno l'istanza 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 quest'ultima soddisfi i requisiti per le istanze principali. Ulteriori informazioni

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 all'estrema destra dell'elenco.
  3. Seleziona Crea replica di lettura.

    Se non vedi questa opzione, significa che l'istanza è una replica; non puoi creare una replica di una replica.

  4. Nella sezione Personalizza l'istanza della pagina, aggiorna le impostazioni per la replica. Inizia facendo clic su Mostra opzioni di configurazione per visualizzare i gruppi di impostazioni. Quindi, espandi i gruppi che ti interessano da esaminare e personalizza le impostazioni. A destra viene visualizzato un riepilogo di tutte le opzioni selezionate. La personalizzazione di queste impostazioni è facoltativa. I valori predefiniti vengono assegnati ogni volta che non vengono effettuate personalizzazioni.

    Per saperne di più su ciascuna impostazione, consulta la pagina Informazioni sulle impostazioni dell'istanza.

    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.

  5. Fai clic su Crea replica.

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

gcloud

Crea la replica:

gcloud sql instances create REPLICA_NAME \
--master-instance-name=MASTER_INSTANCE_NAME

Se necessario, puoi specificare una dimensione del livello diversa utilizzando il parametro --tier. Inoltre, se stai creando una replica da un'istanza principale e la versione Cloud SQL per l'istanza è Enterprise o Enterprise Plus, versione 16 e successive, non è necessario 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.

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 tramite una connessione interna, aggiungi il parametro --enable-google-private-path al comando.

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.

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

  settings {
    tier              = "db-custom-2-7680"
    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
}

REST v1

Utilizza il metodo insert della risorsa instances per creare la replica di lettura. Le proprietà regione e databaseVersion devono essere le stesse dell'istanza master.

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

  • project-id: l'ID progetto
  • database-version: stringa di versione enum (ad esempio POSTGRES_12)
  • 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 delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

REST v1beta4

Utilizza il metodo insert della risorsa instances per creare la replica di lettura. Le proprietà regione e databaseVersion devono essere le stesse dell'istanza master.

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

  • project-id: l'ID progetto
  • database-version: stringa di versione enum (ad esempio POSTGRES_12)
  • 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 delle seguenti 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 rispetto all'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 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 è 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 del linguaggio 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. Il failover dell'istanza viene eseguito su 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 di 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. Il failover dell'istanza viene eseguito su 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": "POSTGRES_13",
  "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 delle seguenti 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 di 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. Il failover dell'istanza viene eseguito su 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:

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

Corpo JSON della richiesta:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "POSTGRES_13",
  "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 delle seguenti 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

Se abiliti il flag cloudsql.iam_authentication sull'istanza principale, Cloud SQL per PostgreSQL lo abilita automaticamente sulle repliche di lettura. Tuttavia, se non abiliti questo flag sull'istanza principale, Cloud SQL per PostgreSQL non lo abilita nelle repliche di lettura. Non puoi utilizzare le repliche per l'autenticazione del database IAM.

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

  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 è nell'elenco, non è necessario abilitarlo nella replica di lettura. Se il flag è presente nell'elenco, devi abilitare il flag sulla replica di lettura. Se devi abilitare il flag nella replica di lettura, continua con il passaggio successivo.
  4. Seleziona Repliche dal menu di navigazione SQL.
  5. Fai clic sul nome della replica che vuoi modificare.
  6. Fai clic su Modifica.
  7. Nella sezione Opzioni di configurazione, espandi Flag.
  8. Seleziona + Aggiungi elemento.
  9. Inserisci cloudsql.iam_authentication come nome della segnalazione. Assicurati che per questo flag sia selezionata l'opzione On.
  10. 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 la sezione Replica a cascata.

Prima di iniziare

L'istanza principale deve avere una replica di lettura. Per saperne di più sulla creazione di istanze principali, consulta Creare una replica di lettura.

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. Fai clic sulla scheda Repliche per la replica che agirà da padre per la replica che vuoi creare.
  3. Fai clic su Crea replica.
  4. Nella pagina Crea replica di lettura, aggiorna l'ID istanza ed eventuali altre opzioni di configurazione, inclusi il nome, la regione e la zona.
  5. Fai clic su Crea.

    Cloud SQL crea una replica. Tornerai alla pagina dell'istanza per la replica padre.

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

gcloud

  1. Crea la nuova replica specificando la replica principale come istanza principale mediante il flag --master-instance-name:

    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
  2. Dopo aver creato la replica, puoi vedere che le modifiche apportate all'istanza principale vengono replicate in tutte le repliche nella catena di repliche a cascata.

curl

  1. Per creare una replica nella replica padre, 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",
        }
    }
    
  2. 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"
    

Risolvere i problemi

Problema Risoluzione dei problemi
La replica di lettura non è stata avviata al momento della creazione. Probabilmente contiene 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 dei flag nella richiesta non è valido. Potrebbe essere un flag da te fornito esplicitamente o impostato su un valore predefinito.

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

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

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 è: set Service Networking service account as servicenetworking.serviceAgent role on consumer project, disattiva e riattiva Service Networking API. Questa azione crea l'account di servizio necessario per continuare la procedura.

Il disco è pieno. 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.
Lo spazio su disco aumenta in modo significativo. Uno slot non utilizzato attivamente per monitorare i dati fa sì che PostgreSQL trattenga i segmenti WAL per un tempo indeterminato, con conseguente aumento dell'infinito dello spazio su disco. Se utilizzi le funzionalità di replica logica e decodifica in Cloud SQL, gli slot di replica vengono creati e eliminati automaticamente. Gli slot di replica inutilizzati possono essere rilevati eseguendo una query nella vista di sistema pg_replication_slots e filtrando la colonna active. Gli slot inutilizzati possono essere eliminati per rimuovere i segmenti WAL utilizzando il comando pg_drop_replication_slot.
L'istanza di replica utilizza troppa memoria. La replica utilizza la memoria temporanea per memorizzare nella cache le operazioni di lettura richieste più spesso, il che può comportare l'utilizzo di più memoria rispetto all'istanza principale.

Riavvia l'istanza di replica per recuperare lo spazio di memoria temporaneo.

Replica 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 della replica è costantemente elevato. Il carico di scrittura è troppo elevato per essere gestito dalla replica. Il ritardo della replica si verifica quando il thread SQL su una replica non è in grado di stare al passo con il thread di IO. Alcuni tipi di query o carichi di lavoro possono causare un ritardo di replica temporaneo o permanente elevato per uno schema specifico. Alcune delle cause tipiche del ritardo della replica sono:
  • Query lente sulla replica. Trovale e correggile.
  • Tutte le tabelle devono avere una chiave univoca/primaria. Ogni aggiornamento di una tabella di questo tipo senza una chiave univoca/primaria provoca scansioni complete della tabella nella replica.
  • Query come DELETE ... WHERE field < 50000000 causano un ritardo della replica con la replica basata su riga perché un numero enorme di aggiornamenti si accumula nella replica.

Ecco alcune possibili soluzioni:

  • Modifica l'istanza per aumentare le dimensioni della replica.
  • Riduci il carico sul database.
  • Invia traffico di lettura alla replica di lettura.
  • Indicizza le tabelle.
  • Identifica e correggi le query di scrittura lente.
  • Ricrea la replica.
Errori durante la ricreazione degli indici in PostgreSQL 9.6. PostgreSQL ti informa che devi ricreare un determinato indice. Questa operazione può essere eseguita solo sull'istanza principale. Se crei una nuova istanza di replica, a breve riceverai di nuovo lo stesso errore. Gli indici hash non vengono propagati alle repliche nelle versioni PostgreSQL precedenti alla 10.

Se devi utilizzare indici hash, esegui l'upgrade a PostgreSQL 10 o versioni successive. In caso contrario, se vuoi utilizzare anche le repliche, non utilizzare gli indici hash in PostgreSQL 9.6.

La query sull'istanza principale è sempre in esecuzione. Dopo aver creato una replica, è previsto che la query SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' venga eseguita continuativamente sull'istanza principale.
La creazione della replica non riesce con il timeout. Le transazioni non impegnate a lunga esecuzione sull'istanza principale possono causare un errore nella creazione della replica di lettura.

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

Se l'istanza principale e la replica hanno dimensioni vCPU diverse, potrebbero verificarsi problemi di prestazioni delle query, poiché lo strumento di ottimizzazione delle query prende in considerazione le dimensioni delle vCPU.

Per risolvere il problema, completa i seguenti passaggi:

  1. Attiva il flag log_duration e imposta il parametro log_statement su ddl. In questo modo ottieni sia le query sia il tempo di esecuzione sul database. Tuttavia, a seconda del carico di lavoro, potrebbero verificarsi problemi di prestazioni.
  2. Sia nell'istanza principale che nella replica di lettura, esegui explain analyze per le query.
  3. Confronta il piano di query e verifica la presenza di differenze.

Se si tratta di una query specifica, modificala. Ad esempio, puoi modificare l'ordine dei join per vedere se il rendimento migliora.

Passaggi successivi