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 dell'origine su Cloud SQL e replicare i dati in Cloud SQL. Prima di procedere con i passaggi di replica, devi completare tutti i passaggi di questa pagina.

Un'alternativa ai passaggi descritti in questa pagina è Database Migration Service, che offre la replica continua o la migrazione una tantum del database 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. Viene anche chiamato 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 dell'origine. Una simulazione di un'istanza Cloud SQL che rappresenta il server esterno per la replica Cloud SQL. È visibile nella console Google Cloud e viene visualizzata come una normale istanza Cloud SQL, ma non contiene dati, non richiede configurazione o manutenzione e non influisce sulla fatturazione.

  • Replica Cloud SQL. L'istanza Cloud SQL che esegue la replica dal server esterno. Nota anche come replica di lettura primaria 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. Il processo di importazione dei dati direttamente dal server esterno alla replica Cloud SQL. In questa situazione, Cloud SQL si connette al server esterno utilizzando l'account utente di replica ed esegue il dump dei dati direttamente sul server esterno per importare i dati nella replica Cloud SQL.

Configurare un progetto Google Cloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

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

    Vai alla pagina IAM

  9. Installa l' Google Cloud SDK

    Per configurare la replica, installa Google Cloud SDK per il server esterno. Ti consigliamo di 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:

    • PostgreSQL autogestito (on-premise o su qualsiasi VM cloud di cui hai il controllo totale) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16 e 17
    • Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16 e 17
    • Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14.6+, 15.2+, 16 e 17
    • Database di Microsoft Azure per il server flessibile PostgreSQL 11 e versioni successive
    • Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16 e 17

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

    Elenco di controllo del 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 in modo da consentire l'intervallo IP interno allocato per l'accesso privato ai servizi della rete VPC utilizzata dalla replica Cloud SQL come rete privata.

    Il firewall del server di database di origine deve essere configurato per consentire l'intero intervallo IP interno allocato per la connessione di servizio privato della rete VPC che l'istanza di destinazione Cloud SQL utilizza come campo privateNetwork delle impostazioni di 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 Private service connection (Connessione privata ai servizi).

    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, se necessario.

      1. 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 che includa 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 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. Utilizza il seguente comando, dopo aver sostituito MAX_REPLICATION_SLOTS con il numero:

          ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;

          Cloud SQL richiede uno slot per ogni database migrato. Specifica almeno il numero di abbonamenti che prevedi di connettere, con alcune riserve per la sincronizzazione delle tabelle.

          Ad esempio, se l'istanza di origine ha 5 database e vengono creati 2 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à utilizzati.

        • Imposta max_wal_senders a un valore almeno pari a max_replication_slots, oltre al numero di mittenti già utilizzati nell'istanza. Utilizza il seguente comando, sostituendo MAX_WAL_SENDERS con il numero totale di processi di invio WAL in esecuzione contemporaneamente:

          ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;

          Ad esempio, se il parametro max_replication_slots è impostato su 10 e stai già utilizzando due mittenti, il numero di processi mittente WAL in esecuzione contemporaneamente sarà 10 + 2 = 12.

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

          ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
      2. Se l'istanza PostgreSQL di origine è Microsoft Azure Database per PostgreSQL Flexible Server, esegui le seguenti azioni per supportare la migrazione dei dati da un server esterno a un'istanza Cloud SQL:
        • Imposta shared_preload_libraries in modo che includa pglogical utilizzando il seguente comando:

          ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
                
        • Imposta wal_level su logical. Per saperne di più, consulta Replica logica e decodifica logica in Azure Database for PostgreSQL - Flexible Server.
        • Imposta max_replication_slots sul numero massimo di slot di replica che l'istanza di origine può supportare. Utilizza il seguente comando, dopo aver sostituito MAX_REPLICATION_SLOTS con il numero:

          ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;

          Cloud SQL richiede uno slot per ogni database migrato. Specifica almeno il numero di abbonamenti che prevedi di connettere, con alcune riserve per la sincronizzazione delle tabelle.

          Ad esempio, se l'istanza di origine ha 5 database e vengono creati 2 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à utilizzati.

        • Imposta max_wal_senders a un valore almeno pari a max_replication_slots, oltre al numero di mittenti già utilizzati nell'istanza. Utilizza il seguente comando, sostituendo MAX_WAL_SENDERS con il numero totale di processi di invio WAL in esecuzione contemporaneamente:

          ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;

          Ad esempio, se il parametro max_replication_slots è impostato su 10 e stai già utilizzando due mittenti, il numero di processi mittente WAL in esecuzione contemporaneamente sarà 10 + 2 = 12.

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

          ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
        • Imposta azure.extensions in modo da includere pglogical. Per saperne di più, vedi Parametri del server in Azure Database per PostgreSQL - Server flessibile.
    4. I parametri che stai impostando 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 che consenta l'intervallo IP interno allocato per l'accesso ai servizi privati 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 di PostgreSQL precedenti alla 9.6

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

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

      1. Definisci la seguente funzione per consentire al server esterno di eseguire query per il 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 l'autorizzazione EXECUTE all'utente eseguendo i seguenti 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 connettersi all'istanza di origine. In questo modo il server esterno può 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 API.

    Configura i database di origine

    Il server esterno Cloud SQL esegue la migrazione di tutti i database nell'istanza di origine, con esclusione dei 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 indicate di seguito su ogni database nell'istanza di origine non incluso nell'elenco precedente:

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

      CREATE EXTENSION IF NOT EXISTS pglogical

      Per le tabelle senza chiavi primarie, Cloud SQL supporta la migrazione dello snapshot iniziale 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 seguenti comandi per impostare i privilegi per l'utente su ogni database di cui è stata eseguita la migrazione, nonché 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.

      • 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_, esegui il comando seguente:

        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 le informazioni di replica dai database di origine, esegui il seguente comando su tutti i database:

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

        GRANT rds_replication to username;

        Se l'origine è Microsoft Azure Database for PostgreSQL versione precedente alla 14, esegui il seguente comando:

        GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;

        Puoi ignorare un errore visualizzato nell'interfaccia pglogical.node.

        Se l'origine è Microsoft Azure Database for PostgreSQL versione 14 e successive, esegui il seguente comando:

        GRANT pg_read_all_data to username;

        In caso contrario, esegui questo comando:

        ALTER USER username with REPLICATION;

    Configurare un'istanza di rappresentazione dell'origine

    L'istanza di rappresentazione dell'origine fa riferimento al server esterno. Contiene solo i dati della richiesta provenienti dal server esterno. Crea i dati della richiesta e utilizzali in un comando curl che crea l'istanza di rappresentazione dell'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.

    Se vuoi eseguire la migrazione di un sottoinsieme di database dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione, utilizza il parametro selectedObjects per specificare i nomi dei database. Se non utilizzi questo parametro o fornisci un elenco vuoto come valore del parametro, tutti i database vengono migrati dall'origine alla destinazione.

    source.json

        {
          "name": "SOURCE_NAME",
          "region": "REGION",
          "databaseVersion": "DATABASE_VERSION",
          "onPremisesConfiguration": {
            "selectedObjects": "SELECTED_OBJECTS",
            "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/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "POSTGRES_9_6",
      "onPremisesConfiguration": {
        "selectedObjects":[{"database":"db1"}, {"database":"db2"}],
        "hostPort": "192.0.2.0:3306",
        "username": "replicationUser",
        "password": "486#@%*@"
      }
    }
    
    Proprietà Descrizione
    SOURCE_NAME Il nome dell'istanza di rappresentazione dell'origine da creare.
    REGION La regione in cui vuoi che risieda l'istanza di rappresentazione dell'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, POSTGRES_15, POSTGRES_16 o POSTGRES_17.
    SELECTED_OBJECTS Un elenco separato da virgole dei database di cui stai eseguendo la migrazione dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione.
    SOURCE HOST L'indirizzo IPv4 e la porta del server esterno o l'indirizzo DNS del 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 dell'account utente di replica.
    BUCKET Il nome del bucket che contiene il file di dump. Includi solo se stai configurando la replica con un file di dump esistente 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 SSL/TLS è utilizzato sul server esterno.
    CLIENT_CERT Il certificato client sul server esterno. Richiesto solo per l'autenticazione server-client. Includi solo se SSL/TLS viene utilizzato sul server esterno.
    CLIENT_KEY Il file della chiave privata per il certificato client sul server esterno. Obbligatorio solo per l'autenticazione server-client. Includi solo se SSL/TLS viene utilizzato sul server esterno.
    SSL_OPTION

    Indica se la crittografia SSL/TLS viene utilizzata per stabilire una connessione tra il database Microsoft Azure di origine e il database Cloud SQL di destinazione. Puoi specificare i seguenti valori per questo parametro:

    • SSL_OPTION_UNSPECIFIED: il database di destinazione si connette al database di origine senza crittografia.
    • DISABLED: SSL viene disattivato quando la replica si connette al database di origine.
    • REQUIRE: SSL è necessario per la connessione della replica al database di origine.
    • VERIFY_CA: utilizza questo parametro per specificare se l'autenticazione solo server o l'autenticazione server-client viene utilizzata come parte della crittografia SSL/TLS per la connessione tra i database di origine e di destinazione.

      Per utilizzare l'autenticazione solo server, per la variabile SOURCE_CERT devi fornire il certificato x509 con codifica PEM dell'autorità di certificazione (CA) che ha firmato il certificato del server esterno.

      Per utilizzare l'autenticazione server-client, esegui le seguenti sostituzioni:

      • SOURCE_CERT: fornisci il certificato della CA che ha firmato il certificato del server di database di origine
      • CLIENT_CERT: fornisci il certificato che il database di destinazione utilizza per l'autenticazione nel server di database di origine
      • CLIENT_KEY: fornisci la chiave privata associata al certificato client

    Il valore predefinito di questo parametro è SSL_OPTION_UNSPECIFIED.

    Crea un'istanza di rappresentazione dell'origine

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

    Poi, per creare l'istanza di rappresentazione dell'origine in Cloud SQL, apri un terminale ed esegui i seguenti comandi:

    curl

        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

    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 dell'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.

    Modificare 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.

    Per aggiornare i database che vuoi migrare dall'istanza di rappresentazione dell'origine, aggiorna l'elenco dei nomi dei database associati al parametro selectedObjects. Se non utilizzi questo parametro o fornisci un elenco vuoto come valore del parametro, tutti i database vengono migrati dall'origine alla destinazione.

    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": {
            "selectedObjects": "SELECTED_OBJECTS",
            "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/TLS
    
    {
      "name": "cloudsql-source-instance",
      "region": "us-central1",
      "databaseVersion": "POSTGRES_9_6",
      "onPremisesConfiguration": {
        "selectedObjects":[{"database":"db1"}, {"database":"db3"}],
        "username": "newReplicationUser",
        "password": "525#@%*@"
      }
    }
    
    Proprietà Descrizione
    SOURCE_NAME Il nome dell'istanza della rappresentazione dell'origine.
    REGION La regione in cui risiede l'istanza di rappresentazione di origine.
    DATABASE_VERSION La versione del database in esecuzione sul tuo server esterno. Le opzioni sono POSTGRES_9_6, POSTGRES_10, POSTGRES_11, POSTGRES_12, POSTGRES_13, POSTGRES_14, POSTGRES_15, POSTGRES_16 o POSTGRES_17.
    SELECTED_OBJECTS Un elenco aggiornato separato da virgole dei database di cui esegui la migrazione dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione.
    NEW_USERNAME Il nuovo account utente di replica sul server esterno.
    NEW_PASSWORD La password del nuovo account.

    Modificare un'istanza di rappresentazione della fonte

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

    Poi, per modificare l'istanza di rappresentazione dell'origine in Cloud SQL, apri un terminale ed esegui i seguenti comandi:

    curl

        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

    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 della rappresentazione dell'origine.

    Configura una replica Cloud SQL

    La replica Cloud SQL alla fine contiene i dati del server esterno. In questo passaggio, crei i dati della richiesta e li utilizzi 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 tuo server esterno e sulla replica 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"
        }

    esempio

        {
            "settings": {
                "tier": "db-custom-4-15360",
                "dataDiskSizeGb": "100"
            },
            "masterInstanceName": "source-instance",
            "region": "us-central1",
            "databaseVersion": "POSTGRES_16",
            "name": "replica-instance"
        }
    Proprietà Descrizione
    TIER Il tipo di macchina per ospitare l'istanza replica. Se non sai quale tipo di macchina utilizzare, inizia con db-custom-2-7680. Se necessario, puoi modificarne le dimensioni e altri valori supportati in un secondo momento.
    DISK_SIZE Le dimensioni dello spazio di archiviazione per la replica Cloud SQL, in GB.
    PUBLIC_IP_STATUS Determina se all'istanza viene 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 il tuo progetto ha attivato il vincolo della policy dell'organizzazione, per creare la replica Cloud SQL devi impostare il valore della proprietà ipv4Enabled su false.constraints/sql.restrictPublicIp Per saperne di più sulla disattivazione dell'assegnazione di indirizzi IP pubblici, consulta Disattivare l'IP pubblico.
    PROJECT_ID Se la replica 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 rendere la replica HA, imposta il valore su REGIONAL. Per scoprire i valori consentiti, consulta SqlAvailabilityType.
    Dopo aver creato una replica HA del server esterno, non puoi modificarla in una replica non HA. Questo vale anche al contrario. Non puoi modificare una replica non HA di un server esterno in una replica HA.
    Il failover manuale potrebbe comportare una migrazione irrecuperabile se tentato quando l'istanza sta ancora caricando i dati iniziali o un tempo di inattività temporaneo se l'istanza sta già replicando dalla sorgente. Controlla lo stato della replica.
    SOURCE_REPRESENTATION_INSTANCE_NAME Il nome dell'istanza della rappresentazione dell'origine.
    SOURCE_REGION La regione assegnata all'istanza di rappresentazione dell'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, POSTGRES_15, POSTGRES_16 o POSTGRES_17. Corrisponda alla versione del database in esecuzione sul server esterno o imposta il valore su una versione successiva al massimo.
    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. Poi, per creare una replica Cloud SQL, apri un terminale Cloud Shell ed esegui questi comandi:

    curl

        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

    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 tuo progetto in Google Cloud, che deve essere uguale a quello dell'istanza di origine.
    JSON_PATH Il percorso del file JSON contenente i dati della richiesta per la replica 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 dell'origine e la replica Cloud SQL in un elenco simile al seguente:

    ID istanza Tipo IP pubblico
    (-) source-representation-instance Database esterno principale 10.68.48.3:5432
         replica-instance 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.

    Aggiungere utenti alla replica Cloud SQL

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

    Ottenere 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 il puntatore sul suggerimento Più informazioni e recupera l'indirizzo IP in uscita.

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

    gcloud

    Per ottenere l'indirizzo IP in uscita per la 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 le connessioni in entrata sul server esterno

    Per la riuscita della replica, la replica Cloud SQL deve connettersi al server esterno. Devi configurare il firewall di rete per il server esterno in modo che accetti connessioni dall'indirizzo IP in uscita della replica Cloud SQL se si verificano le seguenti condizioni:

    • Il server esterno si trova dietro un firewall o un'altra restrizione 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 di rappresentazione dell'origine per consentire la replica nella replica Cloud SQL

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

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

    Inizializza la 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 ulteriori informazioni, vedi Utilizzo di un'importazione gestita per configurare la replica da database esterni.

    Monitora replica

    Quando la replica Cloud SQL termina il caricamento iniziale dei dati, si connette al server esterno e applica tutti gli aggiornamenti apportati 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 la procedura di replica non viene completata correttamente, una replica promossa non contiene tutte le modifiche del server esterno.

    Se il ritardo di replica non tende a 0, intervieni per risolvere il problema. Ti consigliamo di controllare queste metriche: /postgresql/external_sync/initial_sync_complete, postgresql/external_sync/max_replica_byte_lag e database/replication/state. Visualizza l'elenco delle metriche Cloud SQL.

    Se vuoi eseguire la migrazione di un sottoinsieme di database dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione, controlla le seguenti metriche per database:

    Metrica Descrizione
    per_database/postgresql/external_sync/initial_sync_complete Comprendere la fase di migrazione di un database. Se il valore di questa metrica è 0, il database fa ancora parte del dump iniziale dei dati. Se il valore è 1, il database ha completato il dump iniziale dei dati e si trova nella fase Change Data Capture (CDC).
    per_database/postgresql/external_sync/replication_byte_lag Conoscere il ritardo di replica per un database (in byte).

    Dopo che la replica Cloud SQL ha recuperato il server esterno e non si verifica alcun ritardo di replica sulla replica Cloud SQL, connettiti al 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.

    Configurare una replica a cascata

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

    Per creare una replica in 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 elemento principale per la replica che vuoi creare.
    3. Fai clic su Crea replica.
    4. Nella pagina Crea replica di lettura, aggiorna l'ID istanza e qualsiasi altra opzione di configurazione, inclusi nome, regione e zona.
    5. Fai clic su Crea.

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

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

    gcloud

    1. Crea la nuova replica specificando la replica Cloud SQL come istanza principale utilizzando il flag --master-instance-name:
    2. 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
    3. Una volta creata la replica, puoi notare che le modifiche apportate all'istanza principale vengono replicate in tutte le repliche della catena di repliche a cascata.

    curl

    1. Per creare una replica nella replica principale, 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

    Promuovi la tua replica seguendo questi passaggi:

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

    Limitazioni

    • Se installi estensioni sui database di origine esterni non supportati da Cloud SQL, quando esegui la migrazione dei database a un'istanza di destinazione, Cloud SQL non esegue la migrazione di queste estensioni. Per garantire una migrazione senza problemi, verifica che nessun oggetto o applicazione faccia riferimento alle estensioni. Prima di procedere con la migrazione, ti consigliamo di rimuovere le estensioni insieme a tutti i riferimenti dai database di origine.

      Per saperne di più sulle estensioni supportate da Cloud SQL, consulta Configurare le estensioni PostgreSQL.

    • Se installi l'estensione pg_cron sui database di origine esterni, quando esegui la migrazione dei database a un'istanza di destinazione, Cloud SQL non esegue la migrazione dell'estensione o di qualsiasi impostazione cron associata all'estensione. Dopo aver eseguito la migrazione dei database e promosso la replica, Google consiglia di riattivare l'estensione pg_cron su ogni database di cui è stata eseguita la migrazione.

    • Non puoi eseguire la migrazione dei dati dalla versione 11 di un server Microsoft Azure di origine alla versione 11 di un'istanza Cloud SQL per PostgreSQL di destinazione. Per risolvere il problema, migra i dati a un'istanza Cloud SQL con una versione 12 o successiva.

    Passaggi successivi