In questa pagina viene descritto il processo di configurazione della replica se hai un file dump creato dal server esterno.
Devi completare tutti i passaggi descritti in questa pagina. Al termine, puoi amministrare e monitorare l'istanza della rappresentazione di origine come faresti con qualsiasi altra istanza Cloud SQL.
Prima di iniziare
Prima di iniziare, devi aver configurato il server esterno, creato l'istanza della rappresentazione di origine e configurato la replica 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;
un 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 della Google Cloud Platform. |
HOST | Il nome host dell'account utente della Google Cloud Platform. |
Verifica le impostazioni di replica
Al termine della configurazione, assicurati che la replica Cloud SQL possa replicarsi dal server esterno.
Innanzitutto, assicurati che le impostazioni di sincronizzazione esterna siano corrette. A questo scopo, utilizza i comandi seguenti per verificare:
- Connettività tra la replica di Cloud SQL e il server esterno
- Privilegi utente per la replica
- Compatibilità delle versioni
- La replica Cloud SQL non è già in fase di replica
- I binlog sono abilitati sul server esterno
- È attivo un identificatore globale della transazione (GTID)
Apri un terminale e inserisci questi comandi per verificare che le impostazioni di sincronizzazione esterna siano corrette:
arricciatura
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
un 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 integrata prima di sincronizzare i dati. Opzione consigliata solo se hai già verificato le impostazioni di replica. |
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
REPLICA_INSTANCE | L'ID della tua replica Cloud SQL. |
Esporta il database in un bucket Cloud Storage
Puoi completare 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à
mysqldump
in bundle con MySQL. - Mentre
mysqldump
è in esecuzione, non eseguire operazioni DDL sul server esterno. Questa operazione potrebbe causare incongruenze nel file di esportazione.
Per esportare il database in un bucket Cloud Storage:
- In Google Cloud, crea un bucket Cloud Storage.
- Apri un terminale utilizzando un client che si connetta 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 \ | gsutil cp - gs://BUCKET/DUMP_FILENAME
un 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 \ | gsutil cp - gs://replica-bucket/external-database.sql.gz
Proprietà | Descrizione |
---|---|
EXTERNAL_HOST | L'indirizzo IPv4 o DNS del server esterno. |
EXTERNAL_PORT | La porta per il server esterno.
Se il server esterno è ospitato su Cloud SQL, si tratta di 3306 . |
USERNAME | Il nome dell'account utente o dell'account utente di replica sul server esterno che dispone delle autorizzazioni di lettura del database. |
PASSWORD | Password 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 SHOW DATABASES MySQL per elencare i tuoi 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, come procedure e funzioni, nell'output per i database sottoposti a dump, includi --routines . |
COMPRESS | Se vuoi comprimere tutte le informazioni inviate tra la replica di Cloud SQL e il server esterno, utilizza --compress . |
GZIP | Se vuoi comprimere ulteriormente il file di dump, usa
| gzip . Se il database contiene dati che non si
comprimono bene, ad esempio dati incomprimibili binari o immagini JPG, non utilizzarlo. |
BUCKET | Il nome del bucket che hai creato nel passaggio 1 per contenere il file di dump. |
DUMP_FILENAME | Nel bucket viene creato un file con questo nome. Questo file contiene i contenuti del database sul tuo server esterno. |
Aggiorna l'istanza della rappresentazione di origine con il percorso file del bucket Cloud Storage
L'istanza della rappresentazione di origine è un'istanza di Cloud SQL che rappresenta il server del database di origine nella replica di Cloud SQL. È visibile nella console Google Cloud e ha l'aspetto di una normale istanza di 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", "username": "USERNAME", "password": "PASSWORD" }, "dumpFilePath" :"DUMP_FILE_PATH" }
un esempio.
{ "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" }
Proprietà | Descrizione |
---|---|
PRIMARY_INSTANCE_NAME | Il nome dell'istanza Cloud SQL associata all'istanza della rappresentazione di origine. |
REGION_NAME | Il nome della regione assegnata all'istanza della 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. |
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 server esterno. |
Dopo aver configurato la replica Cloud SQL, devi aggiornare l'istanza di rappresentazione di origine con il percorso del 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
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 |
---|---|
JSON_PATH | Percorso del file JSON archiviato nel bucket Cloud Storage.
Questo file contiene dati sull'istanza di rappresentazione
di origine. |
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
SOURCE_REPRESENTATION_INSTANCE | Il nome dell'istanza di rappresentazione di origine. |
Avvia la replica sul server esterno
Dopo aver verificato di poter replicare dal server esterno, puoi eseguire la replica.
Durante il processo di importazione iniziale, non eseguire operazioni DDL sul server esterno. Ciò potrebbe causare incongruenze 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 rispondere 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
un 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 tu possa 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 integrata prima di sincronizzare i dati. Opzione consigliata solo se hai già verificato le impostazioni di replica. |
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
REPLICA_INSTANCE | L'ID della tua 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 informazioni sull'eliminazione di oggetti e sull'eliminazione dei bucket.
Procedi con la replica
Una volta avviata la replica dal server esterno, devi monitorare la replica e quindi completare la migrazione. Per saperne di più, consulta Monitoraggio della replica.
Risolvere i problemi
Problema | Risoluzione dei problemi |
---|---|
Lost connection to MySQL server during query when dumping table . |
L'origine potrebbe non essere più disponibile oppure il dump conteneva pacchetti troppo grandi.
Assicurati che la rete principale esterna sia disponibile per la connessione. Puoi anche modificare i valori dei flag net_read_timeout e net_write_timeout sull'istanza di origine per arrestare l'errore. Per maggiori informazioni sui valori consentiti per questi flag, consulta Configurare i flag di database. Per scoprire di più sull'utilizzo dei flag |
La migrazione iniziale dei dati è riuscita, ma nessun dato è stato replicato. | Una delle possibili cause principali potrebbe essere che il database di origine abbia definito flag di replica, il che impedisce 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' di tempo. | Tentativi da effettuare
|
mysqld check failed: data disk is full . |
Il disco dati dell'istanza di replica è pieno.
Aumenta la dimensione del disco dell'istanza di replica. Puoi aumentare manualmente le dimensioni del disco o abilitare l'aumento automatico dello spazio di archiviazione. |
Esamina i log di replica
Quando verifichi le impostazioni di replica, vengono generati i log.
Per visualizzare questi log:
Vai al visualizzatore log nella console Google Cloud.
- 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, conferma quanto segue:
- Qualsiasi firewall sul server esterno è configurato in modo da consentire le connessioni dall'indirizzo IP in uscita della replica Cloud SQL.
- La configurazione SSL/TLS è corretta.
- L'utente, l'host e la password di replica 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 di Cloud SQL per promuovere la replica a un'istanza autonoma e interrompere la replica dal server esterno.