Configurazione di Cloud SQL e del server esterno per la replica

Questa pagina descrive come configurare il server esterno per la replica in Cloud SQL, creare un'istanza di rappresentazione di origine su Cloud SQL e replicare i dati a Cloud SQL. Prima di procedere con la replica, devi eseguire tutti i passaggi in questa pagina.

Un'alternativa ai passaggi descritti in questa pagina è Database Migration Service, che offre la replica continua o la migrazione dei database una tantum da un server esterno a Cloud SQL.

Prima di iniziare

Terminologia

  • Server esterno. Il server PostgreSQL esterno a Cloud SQL da cui vuoi replicare i dati. Chiamato anche database di origine o server di database esterno. Può essere un'altra istanza Cloud SQL o qualsiasi altro server di database, ad esempio on-premise, Amazon Relational Database Service (RDS) e così via.

  • Istanza di rappresentazione di origine. una simulazione di un'istanza Cloud SQL che rappresenta il server esterno nella replica di Cloud SQL. È visibile nella console Google Cloud e appare come una normale istanza di Cloud SQL, ma non contiene dati, non richiede configurazione o manutenzione né influisce sulla fatturazione.

  • Replica Cloud SQL. L'istanza Cloud SQL che replica dal server esterno. Chiamata anche replica di lettura principale esterna.

  • Account utente di replica. L'account utente PostgreSQL sul server esterno con autorizzazioni sufficienti per consentire la replica tra il server esterno e la replica Cloud SQL.

  • Importazione gestita. Processo di importazione dei dati direttamente dal server esterno alla replica di Cloud SQL. In questo caso, Cloud SQL si connette al server esterno utilizzando l'account utente della replica ed esegue il dump dei dati direttamente sul server esterno per importare i dati nella replica di Cloud SQL.

Configura un progetto Google Cloud

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API Cloud SQL Admin.

    Abilita l'API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API Cloud SQL Admin.

    Abilita l'API

  8. Assicurati di disporre dei ruoli Amministratore Cloud SQL, Amministratore Storage e Visualizzatore Compute per il tuo account utente.

    Vai alla pagina IAM

Installa Google Cloud SDK

Per configurare la replica, installa Google Cloud SDK per il tuo server esterno. Potresti voler installare l'SDK sul tuo server esterno, a meno che non sia già installato altrove.

Configura il server esterno per la replica

Cloud SQL supporta migrazioni continue dai database di origine ai database Cloud SQL di destinazione.

I database di origine supportati per PostgreSQL includono:

  • Autogestito (on-premise o su qualsiasi VM cloud sotto il tuo controllo completo) PostgreSQL 9.4, 9.5, 9.6, 10, 11, 12, 13, 14 e 15
  • Amazon RDS 9.6.10 e versioni successive, 10.5 e versioni successive, 11.1 e versioni successive, 12, 13 e 14
  • Amazon Aurora 10.11 e versioni successive, 11.6 e versioni successive, 12.4 e versioni successive e 13.3 e versioni successive
  • Cloud SQL 9.6, 10, 11, 12, 13, 14 e 15

Per configurare l'origine è necessario configurare sia l'istanza di origine sia i database di origine sottostanti.

Elenco di controllo per il server esterno

Se la replica Cloud SQL è abilitata con un indirizzo IP privato perché l'indirizzo IP privato in uscita non è statico, configura il firewall del server esterno per consentire l'intervallo IP interno allocato per l'accesso privato ai servizi della rete VPC che la replica Cloud SQL utilizza come rete privata.

Il firewall del server di database di origine deve essere configurato in modo da consentire l'intero intervallo IP interno allocato per la connessione privata ai servizi della rete VPC che l'istanza di destinazione Cloud SQL utilizza come campo privateNetwork delle relative impostazioni ipConfiguration.

Per trovare l'intervallo IP interno:

  1. Nella console Google Cloud, vai alla pagina Reti VPC.

    Vai alla pagina Reti VPC

  2. Seleziona la rete VPC che vuoi utilizzare.

  3. Fai clic sulla scheda Connessione ai servizi privati.

Configura l'istanza di origine

Per configurare l'istanza di origine:

  1. Se l'istanza di origine non include il database postgres, crealo.
  2. Installa il pacchetto pglogical sull'istanza di origine.
  3. Imposta i seguenti parametri in base alle tue esigenze.

    Se l'istanza PostgreSQL di origine è Amazon RDS, includi questi parametri in un nuovo gruppo di parametri e collega il gruppo di parametri all'istanza.

    • Se l'origine è Cloud SQL, imposta i flag cloudsql.logical_decoding e cloudsql.enable_pglogical su on.

      Per abilitare i flag in Cloud SQL, consulta Configurazione dei flag di database.

    • Imposta shared_preload_libraries in modo da includere pglogical utilizzando il seguente comando:

      ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
            
    • Imposta wal_level su logical utilizzando il seguente comando:

          ALTER SYSTEM SET wal_level = 'logical';
          

      Se l'istanza PostgreSQL di origine è Amazon RDS, per abilitare i log WAL a livello di logical, imposta il parametro rds.logical_replication su 1.

    • Imposta wal_sender_timeout su 0 utilizzando il seguente comando:

      ALTER SYSTEM SET wal_sender_timeout = 0;

      Il valore 0 disabilita il meccanismo di timeout utilizzato per terminare le connessioni di replica inattive.

    • Imposta max_replication_slots sul numero massimo di slot di replica che l'istanza di origine può supportare. Usa il seguente comando, dopo aver sostituito # con il numero:

      ALTER SYSTEM SET max_replication_slots = #;

      Cloud SQL richiede uno slot per ogni database di cui viene eseguita la migrazione. Specifica almeno il numero di sottoscrizioni che devono essere connesse, con alcune riserve per la sincronizzazione della tabella.

      Ad esempio, se l'istanza di origine ha 5 database e vengono creati due job di migrazione per l'origine, il numero di slot di replica deve essere almeno 5 * 2 = 10, oltre al numero di slot di replica già in uso.

    • Imposta max_wal_senders almeno allo stesso valore di max_replication_slots, oltre al numero di mittenti già utilizzati nell'istanza. Utilizza il seguente comando, sostituendo # con il numero totale di processi del mittente WAL eseguiti contemporaneamente:

      ALTER SYSTEM SET max_wal_senders = #;

      Ad esempio, se il parametro max_replication_slots è impostato su 10 e utilizzi già 2 mittenti, il numero di processi mittente WAL eseguiti contemporaneamente sarà 10 + 2 = 12.

    • Imposta max_worker_processes su almeno il numero di database nell'istanza di origine, oltre al numero di processi worker già utilizzati nell'istanza. Utilizza questo comando, dopo aver sostituito # con il numero totale:

      ALTER SYSTEM SET max_worker_processes = #;
  4. I parametri che imposti in questo passaggio si applicano a un server di database PostgreSQL in esecuzione. Puoi anche rendere permanenti queste modifiche includendole nel file postgresql.conf.

  5. Se la replica Cloud SQL utilizzerà un IP privato, configura il firewall del server esterno in modo da consentire l'intervallo IP interno allocato per l'accesso privato ai servizi della rete VPC della replica.
  6. Per applicare le modifiche alla configurazione, riavvia l'istanza di origine.

Abilita il monitoraggio del ritardo di replica per le versioni PostgreSQL precedenti alla 9.6

Se esegui la migrazione da una versione di PostgreSQL precedente alla 9.6, la metrica del ritardo di replica non è disponibile per impostazione predefinita. Quando promuovi il database, puoi utilizzare una delle tre alternative per monitorare questa metrica e garantire un tempo di inattività minimo:

  • Opzione 1: abilita il server esterno Cloud SQL per monitorare il ritardo di replica concedendo l'accesso a una query specifica. Utilizzando un utente con il privilegio SUPERUSER, esegui queste operazioni:

    1. Definisci la funzione seguente per consentire al server esterno di eseguire una query sul ritardo di replica.

      CREATE OR REPLACE FUNCTION pg_stat_replication_user()
      RETURNS TABLE (
      pid               integer                  ,
      usesysid          oid                      ,
      username          name                    ,
      application_name  text                     ,
      client_addr       inet                     ,
      client_hostname   text                     ,
      client_port       integer                  ,
      backend_start     timestamp with time zone ,
      backend_xmin      xid                      ,
      state             text                     ,
      sent_location     pg_lsn                   ,
      write_location    pg_lsn                   ,
      flush_location    pg_lsn                   ,
      replay_location   pg_lsn                   ,
      sync_priority     integer                  ,
      sync_state        text
      )
      LANGUAGE SQL
      SECURITY DEFINER
      AS $$
       SELECT *
       FROM pg_catalog.pg_stat_replication;
      $$;
      
    2. Concedi all'utente l'autorizzazione EXECUTE eseguendo questi comandi:

      1. REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
      2. GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
  • Opzione 2: concedi il privilegio SUPERUSER direttamente all'utente utilizzato per la connessione all'istanza di origine. Ciò consente al server esterno di leggere direttamente il ritardo di replica.

  • Opzione 3: monitora il ritardo di replica in modo indipendente utilizzando la query seguente:

        SELECT current_timestamp, application_name,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag,
        pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag
        FROM pg_stat_replication
        WHERE application_name like 'cloudsql%';
      

    In questa opzione, Cloud SQL non riflette la metrica del ritardo di replica nei grafici o nelle risposte dell'API.

Configura i database di origine

Il server esterno Cloud SQL esegue la migrazione di tutti i database all'interno dell'istanza di origine, tranne i seguenti:

  • Per le origini on-premise: database modello template0 e template1
  • Per le origini Amazon RDS: template0, template1 e rdsadmin
  • Per le origini Cloud SQL: database modello template0 e template1

Esegui le operazioni seguenti su ogni database nell'istanza di origine non incluso nell'elenco precedente:

  1. Per installare l'estensione pglogical, esegui questo comando su ogni database nell'istanza di origine:

    CREATE EXTENSION IF NOT EXISTS pglogical

    Per le tabelle che non hanno chiavi primarie, Cloud SQL supporta la migrazione degli snapshot iniziali e delle istruzioni INSERT durante la fase Change Data Capture (CDC). Esegui manualmente la migrazione delle istruzioni UPDATE e DELETE.

  2. Connettiti all'istanza ed esegui i comandi seguenti per impostare i privilegi per l'utente su ciascuno dei database di cui è stata eseguita la migrazione e sul database postgres predefinito.

    L'utente che utilizzi per connetterti all'istanza di origine è configurato come utente nella pagina Profili di connessione. Puoi creare un nuovo utente o riutilizzarne uno esistente.

    • Esegui questo comando su tutti gli schemi di ogni database di cui eseguire la migrazione, ad eccezione dello schema di informazioni e degli schemi che iniziano con pg_:

      GRANT USAGE on SCHEMA schema to username;
      GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username;
      GRANT SELECT on ALL TABLES in SCHEMA schema to username;
    • Su ogni database di cui eseguire la migrazione, esegui questo comando:

      GRANT USAGE on SCHEMA pglogical to PUBLIC;
    • Per ottenere informazioni sulla replica dai database di origine,su tutti i database, esegui questo comando:

      GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
    • Se l'origine è Amazon RDS, esegui questo comando:

      GRANT rds_replication to username;

      In caso contrario, esegui questo comando:

      ALTER USER username with REPLICATION;

Configura un'istanza di rappresentazione di origine

L'istanza della rappresentazione di origine fa riferimento al server esterno. Contiene solo i dati delle richieste provenienti dal server esterno. Crea i dati della richiesta e utilizzali in un comando curl che crea l'istanza della rappresentazione di origine in Cloud SQL.

Crea i dati della richiesta

I dati della richiesta contengono informazioni di base sul tuo server esterno in formato JSON. I dati della richiesta possono essere configurati per una replica Cloud SQL su una rete pubblica o privata e devono contenere queste informazioni:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "hostPort": "SOURCE_HOST",
        "username": "USERNAME",
        "password": "PASSWORD",
        "caCertificate": "SOURCE_CERT",
        "clientCertificate": "CLIENT_CERT",
        "clientKey": "CLIENT_KEY"
      }
    }

esempio di importazione gestita

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "POSTGRES_9_6",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}
Proprietà Descrizione
SOURCE_NAME Il nome dell'istanza di rappresentazione di origine da creare.
REGION La regione in cui deve risiedere l'istanza della rappresentazione di origine.
DATABASE_VERSION La versione del database in esecuzione sul server esterno. Le opzioni sono POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14 o POSTGRES_15.
SOURCE HOST L'indirizzo e la porta IPv4 per il server esterno o l'indirizzo DNS per il server esterno. Se il server esterno è ospitato su Cloud SQL, la porta è 5432.
USERNAME L'account utente di replica sul server esterno.
PASSWORD La password per l'account utente di replica.
BUCKET Il nome del bucket che contiene il file di dump. Includilo solo se stai configurando la replica con un file di dump presente in un bucket Cloud Storage.
DUMP_FILE Un file nel bucket che contiene i dati del server esterno.
CLIENT_CA_CERT Il certificato CA sul server esterno. Includi solo se sul server esterno viene utilizzato SSL/TLS.
CLIENT_CERT Il certificato client sul server esterno. Obbligatoria solo per autenticazione server-client. Includi solo se sul server esterno viene utilizzato SSL/TLS.
CLIENT_KEY Il file della chiave privata per il certificato client sul server esterno. Obbligatorio solo per l'autenticazione server-client. Includi solo se sul server esterno viene utilizzato SSL/TLS.

Crea un'istanza di rappresentazione di origine

Prima di iniziare questo passaggio, crea un file JSON contenente i dati della richiesta di origine.

Quindi, per creare l'istanza di rappresentazione di origine in Cloud SQL, apri un terminale ed esegui questi comandi:

arricciatura

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

un esempio.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X POST \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Proprietà Descrizione
PROJECT_ID L'ID del tuo progetto in Google Cloud.
JSON_PATH Il percorso del file JSON che contiene i dati della richiesta per il server esterno.

Aggiorna un'istanza di rappresentazione di origine

Se aggiorni i dati della richiesta dal server esterno, puoi aggiornare l'istanza di rappresentazione dell'origine esistente in modo che utilizzi i valori modificati.

Modifica i dati della richiesta

Aggiorna i dati della richiesta in modo da includere tutti i campi modificati. Sono inclusi i campi hostPort, username, password, caCertificate, clientCertificate e clientKey. Dopo aver aggiornato i dati della richiesta, utilizzali in un comando curl per aggiornare l'istanza in Cloud SQL.

L'esempio seguente mostra l'aggiornamento dei campi username e password con un nome utente e una password diversi:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "username": "NEW_USERNAME",
        "password": "NEW_PASSWORD"
      }
    }

esempio di importazione gestita

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "POSTGRES_9_6",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}
Proprietà Descrizione
SOURCE_NAME Il nome dell'istanza di rappresentazione di origine.
REGION La regione in cui si trova l'istanza della rappresentazione di origine.
DATABASE_VERSION La versione del database in esecuzione sul server esterno. Le opzioni sono POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14 o POSTGRES_15.
NEW_USERNAME Il nuovo account utente di replica sul server esterno.
NEW_PASSWORD La password del nuovo account.

Modifica un'istanza di rappresentazione di origine

Prima di iniziare questo passaggio, crea un file JSON contenente i dati della richiesta modificata.

Quindi, per modificare l'istanza di rappresentazione di origine in Cloud SQL, apri un terminale ed esegui questi comandi:

arricciatura

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X PATCH \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME

un esempio.

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X PATCH \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Proprietà Descrizione
PROJECT_ID L'ID del tuo progetto in Google Cloud.
JSON_PATH Il percorso del file JSON che contiene i dati della richiesta per il server esterno.
SOURCE_NAME Il nome dell'istanza di rappresentazione di origine.

configura una replica Cloud SQL

La replica Cloud SQL contiene infine i dati del server esterno. In questo passaggio, creerai i dati della richiesta e li utilizzerai in un comando curl che crea la replica Cloud SQL in Cloud SQL.

Crea i dati della richiesta

I dati della richiesta contengono informazioni di base sul server esterno e sulla replica di Cloud SQL in formato JSON. I dati della richiesta possono essere configurati per una replica Cloud SQL su una rete pubblica o privata e devono contenere queste informazioni:

replica.json

    {
        "settings": {
            "tier": "TIER",
            "dataDiskSizeGb": "DISK_SIZE",
            "ipConfiguration": {
                "ipv4Enabled": "PUBLIC_IP_STATUS",
                "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME"
             },
             "availabilityType": "AVAILABILITY_TYPE"
        },
        "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME",
        "region": "SOURCE_REGION",
        "databaseVersion": "DATABASE_VERSION",
        "name": "REPLICA_NAME"
    }

un esempio.

    {
        "settings": {
            "tier": "db-custom-4-15360",
            "dataDiskSizeGb": "100"
        },
        "masterInstanceName": "source-instance",
        "region": "us-central1",
        "databaseVersion": "POSTGRES_14",
        "name": "replica-instance"
    }
Proprietà Descrizione
TIER Il tipo di macchina su cui ospitare l'istanza di replica. Se non sai quale tipo di macchina utilizzare, inizia con db-custom-2-7680. Puoi modificare la dimensione e altri valori supportati in un secondo momento, se necessario.
DISK_SIZE La dimensione dello spazio di archiviazione per la replica Cloud SQL, in GB.
PUBLIC_IP_STATUS Determina se all'istanza è assegnato un indirizzo IP pubblico. Per impostazione predefinita, il valore di questa proprietà è true. Per disattivare l'assegnazione di un indirizzo IP pubblico per la replica, imposta il valore su false. Se nel progetto è abilitato il criterio dell'organizzazione constraints/sql.restrictPublicIp, per creare la replica Cloud SQL devi impostare il valore della proprietà ipv4Enabled su false. Per saperne di più sulla disattivazione dell'assegnazione degli indirizzi IP pubblici, consulta Disabilitare l'IP pubblico.
PROJECT_ID Se la replica di Cloud SQL si trova su una rete privata, includi la proprietà privateNetwork nel file replica.json. Per PROJECT_ID, specifica l'ID del tuo progetto in Google Cloud.
NETWORK_NAME Il nome della rete privata da utilizzare con la replica Cloud SQL.
AVAILABILITY_TYPE Il tipo di disponibilità della replica Cloud SQL. Per impostazione predefinita, il valore è ZONAL. Per impostare l'alta disponibilità della replica, imposta il valore su REGIONAL. Per scoprire di più sui valori consentiti, consulta SqlAvailabilityType.
Dopo aver creato una replica ad alta disponibilità del server esterno, non puoi convertirla in una replica non ad alta disponibilità. Questo vale anche al contrario. Non puoi cambiare una replica non ad alta disponibilità del server esterno in una replica ad alta disponibilità.
Il failover manuale potrebbe portare a una migrazione non recuperabile se si tenta quando l'istanza continua a caricare i dati iniziali o a un tempo di inattività temporaneo se l'istanza è già in fase di replica dall'origine. Controlla lo stato di replica.
SOURCE_REPRESENTATION_INSTANCE_NAME Il nome dell'istanza di rappresentazione di origine.
SOURCE_REGION La regione assegnata all'istanza di rappresentazione di origine.
DATABASE_VERSION La versione del database da utilizzare con la replica Cloud SQL. Le opzioni per questa versione sono POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14 o POSTGRES_15. Abbina la versione del database in esecuzione sul tuo server esterno oppure imposta il valore su non più di una versione successiva.
REPLICA_NAME Il nome della replica Cloud SQL da creare.

crea la replica Cloud SQL

Prima di iniziare questo passaggio, crea un file JSON contenente i dati della richiesta di replica. Quindi, per creare una replica Cloud SQL, apri un terminale Cloud Shell ed esegui questi comandi:

arricciatura

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

un esempio.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @./replica.json \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Proprietà Descrizione
PROJECT_ID L'ID del progetto in Google Cloud, che deve essere uguale a quello dell'istanza di origine.
JSON_PATH Il percorso del file JSON che contiene i dati della richiesta per la replica di Cloud SQL.

Verificare la configurazione

Per assicurarti che le istanze siano state configurate correttamente, vai alla pagina Istanze Cloud SQL.

Dovresti vedere l'istanza di rappresentazione di origine e la replica Cloud SQL, in un elenco simile al seguente:

ID istanza Tipo IP pubblico
(-): istanza-rappresentazione-sorgente Primaria esterna del database 10.68.48.3:5432
replica-istanza Replica di lettura del database 34.66.48.59

Assicurati inoltre di disporre dell'autorizzazione cloudsql.instances.migrate sulla replica Cloud SQL. Questa autorizzazione è inclusa nei ruoli IAM cloudsql.admin o cloudsql.editor.

Aggiungi utenti alla replica di Cloud SQL

Non puoi importare gli account utente del database dal server esterno, ma puoi crearli in una replica Cloud SQL. Esegui questa operazione prima di replicare dal server esterno.

Recupera l'indirizzo IP in uscita della replica Cloud SQL

Puoi utilizzare l'indirizzo IP in uscita della replica Cloud SQL per creare una connessione sicura tra il server esterno e la replica Cloud SQL. Non ti verrà addebitato alcun costo per questo indirizzo IP.

Console

Per ottenere l'indirizzo IP in uscita per la replica:

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

    Vai a Istanze Cloud SQL

  2. Accanto all'indirizzo IP pubblico della replica Cloud SQL, tieni premuto il puntatore sulla descrizione comando Ulteriori informazioni e recupera l'indirizzo IP in uscita.

    Tieni presente che l'indirizzo IP in uscita non è quello visualizzato nell'elenco principale della replica nella console Google Cloud.

gcloud

Per ottenere l'indirizzo IP in uscita della replica, esegui questo comando:

gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Proprietà Descrizione
REPLICA_NAME Il nome della replica Cloud SQL di cui vuoi recuperare l'indirizzo IP pubblico in uscita.

Consenti connessioni in arrivo sul server esterno

La replica Cloud SQL deve connettersi al server esterno affinché la replica abbia esito positivo. Devi configurare il firewall di rete per il tuo server esterno in modo che accetti connessioni dall'indirizzo IP in uscita della replica Cloud SQL, se si applicano le seguenti condizioni:

  • Il server esterno è protetto da un firewall o da altre restrizioni di rete.
  • La replica Cloud SQL utilizza un IP pubblico.

Per connetterti alla replica Cloud SQL, utilizza l'indirizzo IP principale della replica. Questo indirizzo IP viene visualizzato nella console Google Cloud.

Aggiorna l'istanza della rappresentazione di origine per consentire la replica nella replica Cloud SQL

Dopo aver configurato l'istanza di rappresentazione di origine per la replica Cloud SQL, potresti dover aggiornare l'istanza di rappresentazione di origine. Ad esempio, questi scenari richiedono un aggiornamento delle configurazioni:

  • L'host, la porta o l'IP del server esterno cambiano.
  • Vuoi utilizzare un utente di replica PostgreSQL diverso.
  • La password dell'utente di replica PostgreSQL viene modificata.
  • I certificati SSL utilizzati per connettersi in modo sicuro alla modifica del server esterno.

Esegui il deployment della replica Cloud SQL

Per il caricamento iniziale dei dati dal server esterno nella replica Cloud SQL, utilizza un'importazione gestita. Utilizza un servizio che estrae i dati dal server esterno e li importa direttamente nell'istanza Cloud SQL. Per maggiori informazioni, consulta Utilizzare un'importazione gestita per configurare la replica da database esterni.

Monitora replica

Al termine del caricamento iniziale dei dati, la replica Cloud SQL si connette al server esterno e applica tutti gli aggiornamenti eseguiti dopo l'operazione di esportazione. Conferma lo stato della replica.

È importante controllare lo stato della replica prima di promuovere la replica a un'istanza autonoma. Se il processo di replica non viene completato correttamente, una replica promossa non include tutte le modifiche dal tuo server esterno.

Se il ritardo di replica non è pari a 0, esegui una procedura per risolvere il problema. Ti consigliamo di controllare le seguenti metriche: /postgresql/external_sync/initial_sync_complete, postgresql/external_sync/max_replica_byte_lag e database/replication/state. Visualizza l'elenco delle metriche di Cloud SQL.

Quando la replica Cloud SQL ha raggiunto il server esterno e non si verifica alcun ritardo di replica sulla replica Cloud SQL, connettiti al tuo database. Esegui i comandi del database appropriati per assicurarti che i contenuti siano quelli previsti rispetto al server esterno. Conserva il server esterno fino al completamento delle convalide necessarie.

Configura una replica a cascata

Dopo la migrazione, puoi creare repliche di lettura a cascata nella replica Cloud SQL prima di promuovere la replica Cloud SQL.

Per creare una replica a cascata, esegui questi comandi:

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 fungerà 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, tra cui nome, regione e 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 da creare.

gcloud

  1. Crea la nuova replica specificando la replica Cloud SQL 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 Cloud SQL
  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.

arricciatura

  1. Per creare una replica nella replica padre, modifica il seguente esempio di codice JSON e salvalo in un file denominato request.json:

    {
      "masterInstanceName": "EXTERNAL_SERVER_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"
    

Promuovi la replica

Per promuovere la replica, segui questi passaggi:

  1. Promuovi la replica a istanza principale.
  2. Aggiungi repliche di lettura alla tua istanza.
  3. (Facoltativo) Configura l'alta disponibilità (HA) per l'istanza. Per evitare ulteriori tempi di inattività, puoi abilitare l'alta disponibilità durante la configurazione di una replica impostando AVAILABILITY_TYPE su REGIONAL.

Passaggi successivi