Per ulteriori informazioni sulla replica, consulta Informazioni sulla replica in Cloud SQL.
Configurare la configurazione della replica esterna
Prima di iniziare
Prima di iniziare questa attività, devi disporre di un'istanza Cloud SQL e di un' istanza MySQL esterna che soddisfi i requisiti per le repliche esterne.
Requisiti dell'istanza di origine
L'istanza di origine per una replica di lettura esterna deve essere un'istanza principale o autonoma. Non puoi utilizzare una replica di lettura Cloud SQL come istanza di origine per una replica di lettura esterna. A volte le repliche di lettura vengono ricreate dal clone del disco della relativa istanza principale e il relativo stato di replica su una replica di lettura esterna non può essere mantenuto dalla replica di lettura.
Configurare l'istanza principale
- Vai alla pagina Istanze Cloud SQL nella Google Cloud console.
- Abilita l'accesso all'istanza principale per l'indirizzo IP della replica esterna.
Per informazioni sull'abilitazione dell'accesso IP, consulta Configurazione dell'accesso per connessioni IP.
- Registra l'indirizzo IP pubblico e l'indirizzo IP pubblico in uscita dell' istanza principale per un utilizzo successivo. Puoi trovare questi valori nella pagina Panoramica dell'istanza.
- Fai clic sull'icona di Cloud Shell
nell'angolo in alto a destra. - Al prompt di Cloud Shell, utilizza il client MySQL integrato per
connetterti all'istanza principale:
gcloud sql connect PRIMARY_INSTANCE_NAME \ --user=root
- Inserisci la password root. Dovresti visualizzare il prompt mysql.
- Crea un utente speciale per la replica e concedi i privilegi di replica:
CREATE USER 'REPLICATION_USER'@'%' IDENTIFIED BY 'REPLICATION_USER_PASSWORD'; GRANT REPLICATION SLAVE ON *.* TO 'REPLICATION_USER'@'%';
- Se stai iniziando con un nuovo database, crea lo stesso database e le stesse tabelle
sia sull'istanza principale sia sull'istanza di replica. Ad esempio:
CREATE DATABASE test; USE test; CREATE TABLE replica_test (id SERIAL PRIMARY KEY, data text); INSERT INTO replica_test (data) VALUES ('apple'), ('banana'), ('cherry');
- Se hai già un database sull'istanza principale, devi creare lo stesso sulla replica. Per farlo, esporta il database dall'istanza principale a un bucket Cloud Storage e importalo nella replica. Scopri di più su esportazione di dati da Cloud SQL a un file di dump SQL in Cloud Storage.
Configurare la replica esterna
Avviso: questa procedura sovrascrive tutti i dati ospitati in un database MySQL sulla replica, inclusi utenti e password, con le impostazioni e i dati dell'istanza principale.-
Sulla macchina che ospita la replica, inizializza la nuova istanza MySQL esterna
con il file di esportazione creato dall'istanza principale.
Ad esempio, il seguente comando carica un file esportato denominato
mydump.sql:mysql --user=root --password < mydump.sql
- Determina l'ID server per questa coppia replica-principale.
L'ID server è un valore numerico (ad esempio "3") che deve essere univoco nella configurazione della replica esterna (ogni replica deve avere un ID server univoco).
- Aggiungi le seguenti opzioni al file di opzioni
my.cnfdella replica:[mysqld] server-id=[SERVER_ID] gtid_mode=ON enforce_gtid_consistency=ON log_slave_updates=ON replicate-ignore-db=mysql binlog-format=ROW log_bin=mysql-bin expire_logs_days=1 read_only=ONPer ulteriori informazioni sulle opzioni di replica MySQL, consulta Opzioni di replica e logging binario.
- Riavvia il processo
mysqldper fare in modo che il file di configurazione venga letto. - In un client
mysqlsulla replica, inserisci il seguente comando:CHANGE MASTER TO MASTER_HOST='MASTER_IP_ADDRESS', MASTER_USER='REPLICATION_USER', MASTER_PASSWORD='REPLICATION_PASSWORD', MASTER_AUTO_POSITION=1;
- Avvia la replica sulla replica:
START SLAVE;
Verifica lo stato della replica:
SHOW SLAVE STATUS\G;
Se vedi "Waiting for master to send event", la replica funziona.
Eseguire il downgrade dell'istanza principale di una replica esterna
Quando hai un'istanza Cloud SQL con una replica esterna, puoi invertire la configurazione, il che comporta le seguenti modifiche:
- La replica esterna diventa la nuova istanza principale.
- L'istanza Cloud SQL diventa una replica di lettura, che esegue la replica dal server che in precedenza era la replica esterna (ora denominata server di database di origine).
Per invertire la configurazione della replica esterna:
-
Crea un' istanza di rappresentazione di origine.
Questa istanza rappresenterà il server di database di origine per la replica Cloud SQL al termine dell'operazione di downgrade.
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "name": "SOURCE_REPRESENTATION_NAME", "region": "REGION", "databaseVersion": "EXTERNAL_SERVER_DATABASE_VERSION", "onPremisesConfiguration": { "hostPort": "EXTERNAL_SERVER_IP:EXTERNAL_SERVER_PORT" } }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instancesUtilizza la regione in cui vuoi che risieda la replica Cloud SQL.
Avvia la procedura di downgrade.
Poiché questa chiamata API richiede di fornire informazioni sensibili, ti consigliamo di utilizzare un file JSON per fornire i dati a cURL, anziché fornirli nella riga di comando.
Crea il file di dati:
{ "demoteMasterContext": { "replicaConfiguration": { "mysqlReplicaConfiguration": { "username": "REPLICATION_USERNAME", "password": "PASSWORD", "caCertificate": "EXTERNAL_SERVER_CA", "clientCertificate": "CLIENT_CERT", "clientKey": "PRIVATE_KEY" } }, "masterInstanceName": "SOURCE_REPRESENTATION_NAME", }, }Quindi, chiama l'API.
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @PATH_TO_DATA_FILE \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/demoteMasterPer ulteriori informazioni sulle opzioni per SSL/TLS, consulta Opzioni SSL/TLS. Per ulteriori informazioni sulle proprietà utilizzate dall'
replicaConfigurationoggetto, consulta Replica da un server esterno.-
Attendi che la replica esterna completi tutte le transazioni in attesa da l'istanza principale.
Quando la replica è aggiornata, il comando
SHOW SLAVE STATUSmostreràSeconds Behind Mastercome 0 e il valoreExecuted_Gtid_Setsarà identico tra la replica esterna e l'istanza principale Cloud SQL. Utilizza il client
mysqlper interrompere la replica sulla replica esterna:STOP SLAVE RESET SLAVE ALL
Attendi che l'istanza Cloud SQL inizi a eseguire la replica dal server esterno, che ora è il server di database di origine.
L'esecuzione del comando
SHOW SLAVE STATUSsull'istanza Cloud SQL fornisce lo stato della replica.-
Quando l'istanza Cloud SQL esegue correttamente la replica dal
server di database di origine, imposta il flag
read_onlysul server di database di origine suoffe aggiorna le applicazioni in modo che puntino al server di database di origine.
Risoluzione dei problemi
| Problema | Risoluzione dei problemi |
|---|---|
Messaggio di errore: The slave is connecting ... master has purged
binary logs containing GTIDs that the slave requires. |
L'istanza principale Cloud SQL ha backup automatici e log binari
e il recupero point-in-time è abilitato, quindi dovrebbe avere log sufficienti
per consentire alla replica di recuperare. Tuttavia, in questo caso, anche se i
log binari esistono, la replica non sa da quale riga iniziare a leggere.
Crea un nuovo file di dump utilizzando le impostazioni dei flag corrette e configura la replica esterna utilizzando questo file.
|
Passaggi successivi
- Scopri come gestire le repliche.
- Scopri di più sulla replica in Cloud SQL.
- Scopri di più sulla replica MySQL.
- Scopri di più sulle opzioni di replica.
- Scopri di più su come controllare lo stato della replica.
- Scopri di più sulla replica da un server esterno.