Configurazione di Cloud SQL e del server esterno per la replica

In questa pagina viene descritto come configurare il server esterno per la replica Cloud SQL, creare un'istanza di rappresentazione dell'origine su Cloud SQL e di replicare i dati in Cloud SQL. Devi seguire tutti i passaggi su questa pagina prima di procedere con i passaggi di replica.

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 MySQL esterno a Cloud SQL da cui vuoi replicare i dati. È noto anche come database di origine o server di database esterno. Può essere un altro Cloud SQL o qualsiasi altro server di database, come server on-premise, Amazon Relational Database Service (RDS) e così via.

  • Istanza di rappresentazione dell'origine. Un modello di un'istanza Cloud SQL che rappresenta il server esterno per la replica Cloud SQL. È visibile nella console Google Cloud e ha l'aspetto di una un'istanza Cloud SQL, ma non contiene dati, richiede configurazione o manutenzione, né influire sulla fatturazione.

  • Una replica Cloud SQL. L'istanza Cloud SQL che esegue la replica dall'istanza del server esterno. Chiamata anche replica di lettura primaria esterna.

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

  • Importazione gestita. La procedura di importazione dei dati direttamente dall'istanza il server web alla replica Cloud SQL. In questa situazione, Cloud SQL si connette al server esterno utilizzando l'account utente di replica esegue il dump direttamente sul server esterno per importare i dati replica Cloud SQL.

Configura 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 avere i ruoli Amministratore Cloud SQL, Amministratore Storage e con i ruoli di 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 server esterno. Ti consigliamo di installare l'SDK a meno che non sia già installato altrove.

Configura il server esterno per la replica

Elenco di controllo per il server esterno

  • Assicurati che MySQL 5.5, 5.6, 5.7, 8.0 o 8.4 sia installato sul server esterno. Sono supportati MySQL Community Edition, Cloud SQL per MySQL, Amazon Aurora e MySQL su Amazon RDS.

    • Devi utilizzare una versione principale di MySQL sulla tua replica Cloud SQL uguale o superiore alla versione di MySQL in esecuzione sul tuo a un server esterno.
    • Se MySQL 5.5 è installato sul server esterno, GTID non è supportato.
  • Assicurati che i log binari siano abilitati e che:

  • Nota se sul server esterno è attivato GTID. Ciò influisce sulla procedura da seguire per configurare la replica.

  • Prendi nota se il tuo server esterno dispone di autorizzazioni di blocco di lettura globale. Questa operazione influisce sui passaggi da seguire per configurare la replica dei dati.

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

    Il firewall del server di database di origine deve essere configurato in modo da consentire l'intera 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 sue 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 privata ai servizi.

  • Se il server esterno contiene clausole DEFINER (visualizzazioni, eventi, trigger o procedure memorizzate), a seconda dell'ordine di esecuzione di queste istruzioni, la replica potrebbe non riuscire. Scopri di più sull'DEFINER utilizzo e su potenziali soluzioni alternative in Cloud SQL.

  • InnoDB è l'unico motore di archiviazione supportato in Cloud SQL. Migrazione in corso con MyISAM potrebbe causare incoerenze nei dati e richiedere la convalida dei dati. Per maggiori informazioni, consulta Conversione delle tabelle da MyISAM a InnoDB nella documentazione di MySQL.

Configura la conservazione dei log binari

Devi configurare il server esterno in modo da conservare i log binari per almeno 24 ore.

Community MySQL

Se il tuo server esterno utilizza MySQL Community Edition, puoi utilizzare questi comandi MySQL per aggiornare le impostazioni di conservazione dei log binari.

Cloud SQL per MySQL

Se il tuo server esterno utilizza Cloud SQL per MySQL, per impostazione predefinita i log binari vengono conservati per sette giorni. Puoi modificare questa impostazione.

Amazon RDS e Aurora

Se il server esterno è un'istanza Amazon RDS, puoi utilizzare questo comando per aggiornare le impostazioni di conservazione dei log binari:

call mysql.rds_set_configuration('binlog retention ', HOURS);
Proprietà Descrizione
ORE Numero totale di ore di log binari per Amazon RDS dell'istanza da conservare.

Per ulteriori informazioni, consulta mysql.rds_set_configuration.

Creare un account utente di replica

Un account utente MySQL dedicato alla gestione della replica su Cloud SQL sul server esterno. Questo account utente deve per gestire la replica. A seconda dell'approccio alla migrazione che utilizzi, potrebbe dover concedere le autorizzazioni all'utente in un secondo momento.

Per aggiungere un account utente di replica, apri un sul server esterno e inserisci questi comandi MySQL:

MySQL

      CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';
      GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST';
      FLUSH PRIVILEGES;

esempio

CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Proprietà Descrizione
USERNAME L'account utente di replica sul server esterno.
PASSWORD La password per l'account utente di replica.
HOST Imposta questo valore su % per accettare tutte le connessioni da qualsiasi host. In un passaggio successivo, questa impostazione verrà modificata per accettare solo dalla replica Cloud SQL.

Configurare un'istanza di rappresentazione dell'origine

L'istanza della rappresentazione di origine fa riferimento al server esterno. it contiene solo i dati della richiesta 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 Replica Cloud SQL su una rete pubblica o privata e deve 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": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}

Esempio di file di dump

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:"3306",
    "username": "replicationUser",
    "password": "486#@%*@",
    "dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
    "caCertificate": "content of your certificate",
    "clientCertificate": "content of your certificate",
    "clientKey": "content of your client key"
  }
}

esempio di importazione personalizzata

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

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}
Proprietà Descrizione
SOURCE_NAME Il nome dell'istanza della rappresentazione dell'origine da creare.
REGION La regione in cui vuoi che vengano di origine di un'istanza di rappresentazione di origine.
DATABASE_VERSION La versione del database in esecuzione sul server esterno. Le opzioni sono MYSQL_5_6, MYSQL_5_7, MYSQL_8_0 o MYSQL_8_4. .
SOURCE HOST L'indirizzo e la porta IPv4 per server esterno o l'indirizzo DNS del server esterno. Se utilizzi un indirizzo DNS, può contenere fino a 60 caratteri. Se il server esterno è ospitato su Cloud SQL, la porta è 3306.
USERNAME L'account utente di replica sull'istanza server web.
PASSWORD La password per l'account utente di replica.
BUCKET Il nome del bucket che contiene il file di dump. Includi solo se stai configurando la replica con di un file di dump esistente in un bucket Cloud Storage.
DUMP_FILE Un file nel bucket contenente 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. Obbligatorio solo per l'autenticazione client-server. Includi solo se sul server esterno viene utilizzato SSL/TLS.
CLIENT_KEY Il file della chiave privata per il 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 dell'origine in Cloud SQL, apri una nel terminale 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 @./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 l'oggetto richiedere dati per il server esterno.

Aggiorna un'istanza di rappresentazione di origine

Se aggiorni i dati della richiesta dall'esterno puoi aggiornare l'istanza di rappresentazione dell'origine esistente in utilizzano i valori modificati.

Modifica i dati della richiesta

Aggiorna i dati della richiesta in modo da includere eventuali campi modificati. Sono inclusi i campi hostPort, username, password, caCertificate, clientCertificate e clientKey. Dopo aver aggiornato i dati della richiesta, utilizzali in una 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": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}

Esempio di file di dump

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}

esempio di importazione personalizzata

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

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}
Proprietà Descrizione
SOURCE_NAME Il nome dell'istanza di rappresentazione dell'origine.
REGION La regione in cui un'istanza di rappresentazione di origine.
DATABASE_VERSION La versione del database in esecuzione sul server esterno. Le opzioni sono MYSQL_5_6, MYSQL_5_7, MYSQL_8_0 o MYSQL_8_4.
NEW_USERNAME Il nuovo account utente di replica sul server esterno.
NEW_PASSWORD La password del nuovo account.

Modifica un'istanza di rappresentazione dell'origine

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

Quindi, per modificare l'istanza di rappresentazione dell'origine in Cloud SQL, apri una nel terminale 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 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 contenente i dati della richiesta per il server esterno.
SOURCE_NAME Il nome dell'istanza di rappresentazione dell'origine.

Configura una replica Cloud SQL

La replica Cloud SQL contiene infine 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 le seguenti 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": "MYSQL_5_7",
        "name": "replica-instance"
    }
Proprietà Descrizione
TIER Il tipo di macchina su cui ospitare la tua replica in esecuzione in un'istanza Compute Engine. Se non sai quale tipo di macchina utilizzare, iniziano con db-custom-2-7680. Puoi ne modificare le dimensioni e altri valori supportati in un secondo momento, se necessario.
DISK_SIZE La dimensione dello spazio di archiviazione della replica Cloud SQL, in GB.
PUBLIC_IP_STATUS Determina se l'istanza è a un indirizzo IP pubblico. Per impostazione predefinita, 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 l'organizzazione constraints/sql.restrictPublicIp norme per creare l'istanza Cloud SQL devi impostare il valore dell'attributo ipv4Enabled in false. Per ulteriori informazioni sulla disattivazione dell'assegnazione degli indirizzi IP pubblici, vedi Disabilita l'IP pubblico.
PROJECT_ID Se la replica Cloud SQL si trova su una rete privata, inclusa la proprietà privateNetwork nel replica.json file. Per PROJECT_ID, specifica l'ID del tuo progetto in Google Cloud.
NETWORK_NAME Il nome della rete privata da utilizzare con replica Cloud SQL.
AVAILABILITY_TYPE Il tipo di disponibilità della replica Cloud SQL. Per impostazione predefinita, il valore è ZONAL. Per rendere sull'alta disponibilità della replica, imposta il valore su REGIONAL. A sui valori consentiti, consulta SqlAvailabilityType.
Una volta creata una replica del server HA esterno, non puoi modificarla in una replica non HA. Lo stesso vale anche per il contrario. Non puoi modificare una replica non ad alta disponibilità del server esterno su una replica ad alta disponibilità.
Il failover manuale potrebbe comportare una migrazione non recuperabile se viene tentato quando l'istanza sta ancora caricando i dati iniziali o un tempo di riposo temporaneo se l'istanza sta già eseguendo la replica dall'origine. Controlla lo stato della replica.
SOURCE_REPRESENTATION_INSTANCE_NAME Il nome della fonte un'istanza di rappresentazione.
SOURCE_REGION La regione assegnata all'istanza della rappresentazione di origine.
DATABASE_VERSION La versione del database da utilizzare con replica Cloud SQL. Le opzioni per questa versione sono MYSQL_5_6, MYSQL_5_7, MYSQL_8_0 o MYSQL_8_4. Corrisponde alla versione del database in esecuzione sul server esterno o 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. 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, deve essere uguale a quello dell'istanza di origine.
JSON_PATH Il percorso del file JSON che contiene la richiesta per la replica Cloud SQL.

Verificare la configurazione

Per assicurarti che le istanze siano configurate correttamente, vai a 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
(-) source-representation-instance Primario esterno al database 10.68.48.3:3306
     replica-instance Replica di lettura del database 34.66.48.59

Assicurati inoltre di avere l'autorizzazione cloudsql.instances.migrate su la replica di Cloud SQL. Questa autorizzazione è inclusa in cloudsql.admin o cloudsql.editor ruoli IAM.

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

Ottieni 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, segui questi passaggi:

  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 sopra la descrizione comando Ulteriori 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 il seguente 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 entrata sul server esterno

La replica Cloud SQL deve connettersi al server esterno affinché la replica venga completata correttamente. Devi configurare il firewall di rete per per accettare connessioni dal server esterno Indirizzo IP in uscita della replica Cloud SQL se si applicano le seguenti condizioni:

  • Il server esterno è protetto da un firewall o da un'altra rete delle risorse.
  • La replica Cloud SQL utilizza un IP pubblico.

Per connetterti alla replica Cloud SQL, utilizza l'indirizzo IP primario 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 di origine per la replica Cloud SQL, potrebbe essere necessario 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 cambia.
  • Vuoi utilizzare un altro utente di replica MySQL.
  • La password dell'utente di replica MySQL cambia.
  • I certificati SSL utilizzati per connettersi in modo sicuro una modifica al server esterno.

Esegui il seeding della replica Cloud SQL

Esistono tre opzioni per eseguire il caricamento iniziale dei dati nella replica di Cloud SQL:

Qual è l'opzione giusta per te?

Diagramma del flusso utente di Cloud SQL

Monitora replica

Quando la replica Cloud SQL completa il caricamento iniziale dei dati, si connette al server esterno e applica tutti gli aggiornamenti apportati dopo l'operazione di esportazione. Verifica lo stato della replica.

È importante controllare lo stato della replica prima di promuovere su un'istanza autonoma. Se il processo di replica non va a buon fine completato, una replica promossa non ha tutte le modifiche a un server esterno.

Se il ritardo di replica non tende verso 0, adottare le misure necessarie 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 di Cloud SQL.

Una volta che la replica Cloud SQL ha raggiunto il server esterno e non c'è ritardo nella replica sulla replica Cloud SQL, connettiti al database. Esegui i comandi appropriati del database per assicurarti che i contenuti rispetto al server esterno. Mantieni il tuo server esterno fino al completamento delle convalide necessarie.

Configura una replica a cascata

Dopo la migrazione, puoi creare repliche di lettura a cascata sotto la replica Cloud SQL prima che promuove la replica Cloud SQL.

Puoi creare repliche a cascata per la tua istanza Cloud SQL solo se utilizzi Replica di GTID.

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. Per MySQL 5.7 o versioni successive, abilita la replica.
  3. Fai clic sulla scheda Repliche per la replica che fungerà da principale per la replica che vuoi creare.
  4. Fai clic su Crea replica.
  5. Nella pagina Crea replica di lettura, aggiorna l'ID istanza e qualsiasi altra opzione di configurazione, inclusi il nome, la regione e la zona.
  6. Fai clic su Crea.

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

  7. Segui i passaggi 4-6 per ogni nuova replica con struttura a cascata da creare.

gcloud

  1. Se utilizzi MySQL 5.7 o versioni successive, abilita i binlog per l'istanza principale della nuova replica:
    gcloud sql instances patch --enable-bin-log
          --project=cascade-replica PARENT_REPLICA_NAME
    Sostituisci PARENT_REPLICA_NAME con il nome della replica padre.
  2. Crea la nuova replica specificando la replica Cloud SQL come istanza principale tramite il flag --master-instance-name:
  3. 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
  4. Dopo aver creato la replica, puoi vedere che le modifiche apportate all'istanza principale vengono replicate in tutte le repliche della catena di repliche con gerarchia.

curl

  1. Se utilizzi MySQL versione 5.7 o successive, abilita il logging binario:

    Per abilitare il logging binario, salva il seguente JSON in un file denominato request.JSON, quindi invoca il comando curl per abilitare il logging binario.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }

  2. Per creare una replica sotto la 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",
        }
    }
  3. 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. Tieni presente che GTID e i log binari sono attivi e che i backup pianificati sono abilitati nella replica promossa.
  2. Aggiungi repliche di lettura all'istanza.
  3. (Facoltativo) Configura la tua istanza per l'alta disponibilità. Per evitare ulteriori tempi di riposo, puoi attivare l'HA durante la configurazione di una replica impostando AVAILABILITY_TYPE su REGIONAL.

Passaggi successivi