Questa pagina descrive la procedura per configurare la replica quando hai un file di dump creato dal tuo server esterno.
Devi completare tutti i passaggi di questa pagina. Al termine, puoi amministrare e monitorare l'istanza di rappresentazione di origine nello stesso modo in cui faresti con qualsiasi altra istanza Cloud SQL.
Prima di iniziare
Prima di iniziare, devi aver configurato il server esterno, creato l'istanza di rappresentazione dell'origine e configurato la replica di Cloud SQL.
Aggiorna le autorizzazioni per l'utente di replica
L'utente di replica sul server esterno è configurato per accettare connessioni da qualsiasi host (%). Devi aggiornare questo account utente in modo che possa essere utilizzato solo con la replica Cloud SQL.
Apri un terminale sul server esterno e inserisci questi comandi:
Client mysql
UPDATE mysql.user SET Host='NEW_HOST' WHERE Host='OLD_HOST' AND User='USERNAME'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'GCP_USERNAME'@'HOST'; FLUSH PRIVILEGES;
esempio
UPDATE mysql.user SET Host='192.0.2.0' WHERE Host='%' AND User='replicationUser'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'gcp_user'@'gmail.com'; FLUSH PRIVILEGES;
| Proprietà | Descrizione |
|---|---|
| NEW_HOST | Specifica l'IP in uscita della replica Cloud SQL. |
| OLD_HOST | Il valore attuale assegnato a Host che vuoi modificare. |
| USERNAME | L'account utente di replica sul server esterno. |
| GCP_USERNAME | Il nome utente dell'account utente Cloud de Confiance by S3NS . |
| HOST | Il nome host dell'account utente Cloud de Confiance by S3NS . |
Verifica le impostazioni di replica
Al termine della configurazione, assicurati che la replica Cloud SQL possa eseguire la replica dal server esterno.
Innanzitutto, assicurati che le impostazioni di sincronizzazione esterna siano corrette. Per farlo, utilizza i comandi riportati di seguito per verificare:
- Connettività tra la replica Cloud SQL e il server esterno
- Privilegi utente di replica
- Compatibilità delle versioni
- La replica Cloud SQL non è già in fase di replica
- I binlog sono abilitati sul server esterno
- È abilitato un identificatore di transazione globale (GTID)
Apri un terminale e inserisci questi comandi per verificare che le impostazioni di sincronizzazione esterna siano corrette:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "SYNC_MODE", "skipVerification": "SKIP_VERIFICATION" }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/verifyExternalSyncSettings
esempio
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "online" }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
| Proprietà | Descrizione |
|---|---|
| SYNC_MODE | verifyExternalSyncSettings verifica che tu possa mantenere sincronizzati la replica Cloud SQL e il server esterno dopo la configurazione della replica. Le modalità di sincronizzazione includono EXTERNAL_SYNC_MODE_UNSPECIFIED, ONLINE e OFFLINE. |
| SKIP_VERIFICATION | Se saltare o meno il passaggio di verifica integrato prima di sincronizzare i dati. Consigliato solo se hai già verificato le impostazioni di replica. |
| PROJECT_ID | L'ID del progetto in Cloud de Confiance. |
| REPLICA_INSTANCE | L'ID della replica Cloud SQL. |
Esporta il database in un bucket Cloud Storage
Puoi compilare una replica Cloud SQL con un file mysqldump che si trova in un bucket Cloud Storage. Si applicano le seguenti condizioni:
- Devi utilizzare l'utilità
mysqldumpin bundle con MySQL. - Mentre
mysqldumpè in esecuzione, non eseguire operazioni DDL sul server esterno. In caso contrario, potrebbero verificarsi incoerenze nel file di esportazione.
Per esportare il database in un bucket Cloud Storage, segui questi passaggi:
- In Cloud de Confiance, crea un bucket Cloud Storage.
- Apri un terminale utilizzando un client che si connette al server di database esterno ed esegui questo comando.
mysqldump
mysqldump \ --host=EXTERNAL_HOST \ --port=EXTERNAL_PORT \ --user=USERNAME \ --password=PASSWORD \ --databases=DATABASE_LIST \ --hex-blob \ SOURCE_DATA \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --set-gtid-purged=on \ ADD_DROP_TABLE \ ROUTINES \ COMPRESS \ GZIP \ | gcloud storage cp - gs://BUCKET/DUMP_FILENAME
esempio
mysqldump \ --host=192.0.2.1 \ --port=3306 \ --user=replicationUser \ --password \ --databases guestbook journal \ --hex-blob \ --master-data=1 \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --compress \ | gzip \ | gcloud storage cp - gs://replica-bucket/external-database.sql.gz
| Proprietà | Descrizione |
|---|---|
| EXTERNAL_HOST | L'indirizzo IPv4 o DNS del server esterno. |
| EXTERNAL_PORT | La porta del server esterno.
Se il server esterno è ospitato su Cloud SQL, questo valore è 3306. |
| USERNAME | Il nome dell'account utente di replica o dell'account utente sul server esterno che dispone delle autorizzazioni di lettura del database. |
| PASSWORD | Password dell'utente di replica. |
| DATABASE_LIST | Elenco separato da spazi di tutti i database sul server esterno, ad eccezione dei database di sistema (sys, mysql, performance_schema e information_schema). Utilizza il comando MySQL SHOW DATABASES per elencare i database. |
| SOURCE_DATA | Se utilizzi una versione di MySQL precedente alla 8.0.26, utilizza --master-data come valore per questo parametro.
Per le versioni di MySQL 8.0.26 o successive, imposta il valore di questo parametro su --source-data. |
| ADD_DROP_TABLE | Se vuoi aggiungere un'istruzione DROP TABLE prima di ogni istruzione CREATE TABLE, includi --add-drop-table. |
| ROUTINES | Se vuoi mostrare le routine archiviate, ad esempio procedure e funzioni, nell'output dei database di cui è stato eseguito il dump, includi --routines. |
| COMPRESS | Se vuoi comprimere tutte le informazioni inviate tra la replica Cloud SQL e il server esterno, utilizza --compress. |
| GZIP | Se vuoi comprimere ulteriormente il file di dump, utilizza | gzip. Se il database contiene dati che non si comprimono bene, ad esempio dati binari non comprimibili o immagini JPG, non utilizzare questa opzione. |
| BUCKET | Il nome del bucket creato nel passaggio 1 per contenere il file di dump. |
| DUMP_FILENAME | Nel tuo bucket viene creato un file con questo nome. Questo file contiene i contenuti del database sul tuo server esterno. |
Aggiorna l'istanza di rappresentazione di origine con il percorso file del bucket Cloud Storage
L'istanza di rappresentazione dell'origine è un'istanza Cloud SQL che rappresenta il server del database di origine per la replica Cloud SQL. È visibile nella console Cloud de Confiance by S3NS e appare come una normale istanza Cloud SQL, ma non contiene dati, non richiede configurazione o manutenzione e non influisce sulla fatturazione.
Il file source.json contiene informazioni sull'istanza di rappresentazione di origine.
REST
{ "name": "PRIMARY_INSTANCE_NAME", "region": "REGION_NAME", "databaseVersion": "DB_NAME_AND_VERSION", "onPremisesConfiguration": { "hostPort": "IP_ADDRESS_AND_PORT", "selectedObjects": "SELECTED_OBJECTS", "username": "USERNAME", "password": "PASSWORD" }, "dumpFilePath" :"DUMP_FILE_PATH" }
esempio
{ "name": "cloudsql-source-instance", "region": "us-central1", "databaseVersion": "MYSQL_5_7", "onPremisesConfiguration": { "hostPort": "192.0.2.0:3306", "selectedObjects":[{"database":"db1"}, {"database":"db3"}], "username": "replicationUser", "password": "486#@%*@" }, "dumpFilePath" :"gs://replica-bucket/source-database.sql.gz" }
| Proprietà | Descrizione |
|---|---|
| PRIMARY_INSTANCE_NAME | Il nome dell'istanza Cloud SQL associata all'istanza di rappresentazione di origine. |
| REGION_NAME | Il nome della regione assegnata all'istanza di rappresentazione di origine. |
| DB_NAME_AND_VERSION | Il nome e il numero di versione del database associato all'istanza di rappresentazione di origine. |
| IP_ADDRESS_AND_PORT | L'indirizzo IP e il numero di porta riservati per l'istanza di rappresentazione di origine. |
| SELECTED_OBJECTS | Un elenco aggiornato di oggetti separati da virgole, che specifica i database di cui esegui la migrazione dall'istanza di rappresentazione di origine all'istanza Cloud SQL di destinazione. |
| USERNAME | Il nome utente dell'istanza di rappresentazione di origine. |
| PASSWORD | La password dell'istanza di rappresentazione di origine. |
| DUMP_FILE_PATH | Il percorso del file di dump che contiene i contenuti del database sul tuo server esterno. |
Dopo aver configurato la replica di Cloud SQL, devi aggiornare l'istanza di rappresentazione dell'origine con il percorso file del bucket Cloud Storage.
REST
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_REPRESENTATION_INSTANCE
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 |
|---|---|
| JSON_PATH | Il percorso del file JSON archiviato nel bucket Cloud Storage.
Questo file contiene i dati relativi all'istanza di rappresentazione di origine. |
| PROJECT_ID | L'ID del progetto in Cloud de Confiance. |
| SOURCE_REPRESENTATION_INSTANCE | Il nome dell'istanza di rappresentazione di origine. |
Avvia la replica sul server esterno
Dopo aver verificato che puoi eseguire la replica dal server esterno, puoi procedere con la replica.
Durante il processo di importazione iniziale, non eseguire operazioni DDL sul server esterno. In caso contrario, potrebbero verificarsi incoerenze durante l'importazione. Al termine del processo di importazione, la replica utilizza i log binari sul server esterno per aggiornarsi allo stato attuale del server esterno.
Apri un terminale, accedi utilizzando gcloud, quindi inserisci il comando curl per eseguire la replica dal server esterno.
REST
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "SYNC_MODE", "skipVerification": "SKIP_VERIFICATION" }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/startExternalSync
esempio
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "online", "skipVerification": false }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
| Proprietà | Descrizione |
|---|---|
| SYNC_MODE | Verifica che sia possibile mantenere sincronizzati la replica Cloud SQL e il server esterno dopo la configurazione della replica. |
| SKIP_VERIFICATION | Se saltare o meno il passaggio di verifica integrato prima di sincronizzare i dati. Consigliato solo se hai già verificato le impostazioni di replica. |
| PROJECT_ID | L'ID del progetto in Cloud de Confiance. |
| REPLICA_INSTANCE | L'ID della replica Cloud SQL. |
Libera spazio di archiviazione
Se hai eseguito la replica da un file in un bucket, puoi rimuovere questo file e il bucket. Consulta la documentazione di Cloud Storage per l'eliminazione di oggetti e l'eliminazione di bucket.
Procedi con la replica
Una volta avviata la replica dal server esterno, devi monitorarla e poi completare la migrazione. Per saperne di più, consulta Monitoraggio della replica.
Risoluzione dei problemi
| Problema | Risoluzione dei problemi |
|---|---|
Lost connection to MySQL server during query when dumping table. |
La sorgente potrebbe non essere più disponibile o il dump conteneva pacchetti troppo grandi.
Assicurati che l'istanza principale esterna sia disponibile per la connessione. Puoi anche modificare i valori dei flag net_read_timeout e net_write_timeout nell'istanza di origine per interrompere l'errore. Per ulteriori informazioni sui valori consentiti per questi flag, consulta Configura i flag di database. Per scoprire di più sull'utilizzo dei flag |
Il dump iniziale non riesce con errori di timeout o di connessione persa (ad esempio, Dump timeout o Lost connection to MySQL server). |
Questo errore può verificarsi se una o più istruzioni DDL interagiscono con il processo di dump parallelo, causando l'attesa indefinita del processo.
Risoluzione: non eseguire istruzioni DDL sul database di origine durante la fase di dump iniziale. Prima di eseguire qualsiasi istruzione DDL, riavvia la migrazione e attendi il completamento della fase di dump iniziale. |
| La migrazione iniziale dei dati è riuscita, ma non viene eseguita la replica dei dati. | Una possibile causa principale potrebbe essere che il database di origine ha definito flag di replica che impediscono la replica di alcune o tutte le modifiche al database. Assicurati che i flag di replica come Esegui il comando |
| La migrazione iniziale dei dati è riuscita, ma la replica dei dati smette di funzionare dopo un po'. | Tentativi da effettuare
Se trovi l'errore
|
mysqld check failed: data disk is full. |
Il disco dati dell'istanza di replica è pieno.
Aumenta le dimensioni del disco dell'istanza di replica. Puoi aumentare manualmente le dimensioni del disco o attivare l'aumento automatico dello spazio di archiviazione. |
Esamina i log di replica
Quando verifichi le impostazioni di replica, vengono generati dei log.
Per visualizzare questi log, segui questi passaggi:
Vai al visualizzatore log nella console Cloud de Confiance .
- Seleziona la replica Cloud SQL dal menu a discesa Istanza.
- Seleziona il file di log
replication-setup.log.
Se la replica Cloud SQL non riesce a connettersi al server esterno, verifica quanto segue:
- Qualsiasi firewall sul server esterno è configurato per consentire le connessioni dall'indirizzo IP in uscita della replica Cloud SQL.
- La configurazione SSL/TLS è corretta.
- L'utente di replica, l'host e la password sono corretti.
Passaggi successivi
- Scopri di più sull'aggiornamento di un'istanza.
- Scopri di più sulla gestione delle repliche.
- Scopri di più sul monitoraggio delle istanze.
- Scopri come promuovere la replica Cloud SQL per promuovere la replica a un'istanza autonoma e interrompere la replica dal server esterno.