In questa pagina viene descritto il processo di configurazione della replica in caso di dump creato dal server esterno.
Devi completare tutti i passaggi riportati in questa pagina. Al termine, puoi amministrare e monitorare l'istanza di rappresentazione dell'origine come faresti un'altra istanza Cloud SQL.
Prima di iniziare
Prima di iniziare, devi avere configurato il server esterno, ha creato l'istanza di rappresentazione di origine, e configurare la replica Cloud SQL.
Aggiorna le autorizzazioni per l'utente di replica
L'utente di replica sul server esterno è configurato su
accetta connessioni da qualsiasi host (%
). Account utente aggiornato
in modo che possa essere usato 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 del replica Cloud SQL. |
OLD_HOST | Il valore attualmente assegnato all'elemento Host che vuoi
modifica. |
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 replicare dal server esterno.
Innanzitutto, assicurati che le impostazioni di sincronizzazione esterna siano corrette. Per farlo, usa i comandi seguenti per verificare:
- Connettività tra la replica Cloud SQL e il server esterno
- Privilegi utente di replica
- Compatibilità delle versioni
- La replica di Cloud SQL non è già in fase di replica
- I binlog sono abilitati sul server esterno
- È abilitato un Global Transaction Identifier (GTID)
Apri un terminale e inserisci questi comandi per verificare la sincronizzazione esterna che le impostazioni 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
mantenere la replica Cloud SQL
server esterno
sincronizzati dopo la configurazione della replica. Modalità di sincronizzazione
includono EXTERNAL_SYNC_MODE_UNSPECIFIED ,
ONLINE e OFFLINE . |
SKIP_VERIFICATION | Indica se saltare o meno la verifica integrata prima di sincronizzare i dati. Solo consigliati se hai già verificato le impostazioni di replica. |
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
REPLICA_INSTANCE | L'ID della 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 una
nel 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 incoerenze nel file di esportazione.
Per esportare il database in un bucket Cloud Storage, segui questi passaggi:
- In Google Cloud, 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 per il server esterno.
Se il server esterno è ospitato su Cloud SQL,
questo è 3306 . |
USERNAME | Il nome dell'account utente o dell'utente di replica l'account di servizio sul server esterno con lettura del database autorizzazioni aggiuntive. |
PASSWORD | Password utente di replica. |
DATABASE_LIST | Elenco separato da spazi di tutti i database nell'istanza esterna
server, ad eccezione dei database di sistema (sys ,
mysql , performance_schema e
information_schema ). Utilizza MySQL SHOW DATABASES
per elencare i database. |
SOURCE_DATA | Se utilizzi una versione precedente di MySQL alla 8.0.26,
quindi usa --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
ogni istruzione CREATE TABLE , includi --add-drop-table . |
ROUTINES | Se vuoi mostrare le routine memorizzate, come
di procedure e funzioni, nell'output per i
tra cui --routines . |
COMPRESS | Se vuoi comprimere tutte le informazioni inviate tra
tra la replica Cloud SQL e il server esterno,
usa --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 incomprimibili.
o JPG, non utilizzare questo tipo di immagini. |
BUCKET | Il nome del bucket che hai creato nel passaggio 1 per che contiene il file di dump. |
DUMP_FILENAME | Nel bucket viene creato un file con questo nome. Questo file include i contenuti del database su sul tuo server esterno. |
Aggiorna l'istanza di rappresentazione dell'origine con il percorso del file del bucket Cloud Storage.
L'istanza di rappresentazione di origine è un'istanza Cloud SQL che rappresenta di origine alla replica Cloud SQL. È visibile nella console Google Cloud e ha lo stesso aspetto di 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'origine
un'istanza di rappresentazione.
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" }
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 di rappresentazione di origine. |
REGION_NAME | Il nome della regione assegnata all'istanza di rappresentazione dell'origine. |
DB_NAME_AND_VERSION | Il nome e il numero di versione del database associato all'istanza di rappresentazione dell'origine. |
IP_ADDRESS_AND_PORT | L'indirizzo IP e il numero di porta riservati per l'istanza di rappresentazione dell'origine. |
USERNAME | Il nome utente dell'istanza di rappresentazione dell'origine. |
PASSWORD | La password dell'istanza di rappresentazione dell'origine. |
DUMP_FILE_PATH | Il percorso del file di dump che include i contenuti del database sul server esterno. |
Dopo aver configurato la replica Cloud SQL, devi aggiornare l'origine un'istanza di rappresentazione 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 dati sulla rappresentazione di origine
in esecuzione in un'istanza Compute Engine. |
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
SOURCE_REPRESENTATION_INSTANCE | Il nome della fonte un'istanza di rappresentazione. |
Avvia la replica sul server esterno
Dopo aver verificato che puoi replicare il server esterno, puoi eseguire la replica.
Durante il processo di importazione iniziale, non eseguire Operazioni DDL sul server esterno. perché ciò potrebbe causare incoerenze durante l'importazione. Dopo l'importazione il processo viene completato, la replica utilizza i log binari per recuperare lo stato attuale a un server esterno.
Apri un terminale, accedi utilizzando gcloud
, quindi inserisci il comando curl
per
di replicare 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 puoi mantenere Cloud SQL e il server esterno sincronizzati dopo il giorno è configurata la replica. |
SKIP_VERIFICATION | Indica se saltare o meno la verifica integrata prima di sincronizzare i dati. Solo consigliati se hai già verificato le impostazioni di replica. |
PROJECT_ID | L'ID del tuo progetto in Google Cloud. |
REPLICA_INSTANCE | L'ID della replica Cloud SQL. |
Libera spazio di archiviazione
Se hai replicato da un file in un bucket, puoi rimuovere questo file e il bucket. Consulta la documentazione di Cloud Storage per Eliminazione di oggetti ed Eliminazione di bucket.
Procedi con la replica
Una volta avviata la replica dal server esterno, devi monitorare replica e completare la migrazione. Per saperne di più, vedi Monitoraggio della replica.
Risoluzione dei 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 grande.
Assicurati che l'istanza principale esterna sia disponibile per la connessione. Puoi anche modificare i valori dell'attributo net_read_timeout e net_write_timeout sull'istanza di origine per arrestare l'errore. Per ulteriori 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 non sono in corso dati replicati. | Una possibile causa principale potrebbe essere che il database di origine ha definito
flag di replica che comportano il mancato funzionamento di alcune o tutte le modifiche al database
replicati.
Assicurati che i flag di replica come Esegui il comando |
La migrazione iniziale dei dati è riuscita, ma la replica dei dati si arresta 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. Tu puoi aumentare manualmente la dimensione del disco o abilitare l'aumento automatico dello spazio di archiviazione. |
Esamina i log di replica
Quando verifichi le impostazioni di replica, i log vengono prodotto.
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 per consentire le connessioni dalla replica di Cloud SQL indirizzo IP in uscita.
- La configurazione SSL/TLS è corretta.
- Utente, host e 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 Cloud SQL per promuovere la replica a istanza autonoma e interrompere la replica dal un server esterno.