Per ulteriori informazioni sulla configurazione della replica esterna, consulta Informazioni sulla replica esterna.
Configura 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.
Configura l'istanza principale
- Vai alla pagina Istanze Cloud SQL nella console Google Cloud.
- Abilita l'accesso all'istanza principale per l'indirizzo IP della replica esterna.
Per informazioni sull'attivazione dell'accesso IP, consulta la pagina Configurazione dell'accesso per le connessioni IP.
- Registra l'indirizzo IP pubblico e l'indirizzo IP pubblico in uscita dell'istanza principale per utilizzarli in seguito. Puoi trovare questi valori nella pagina Panoramica dell'istanza.
- Fai clic sull'icona Cloud Shell nell'angolo in alto a destra.
- Al prompt Cloud Shell, utilizza il client MySQL integrato per connetterti all'istanza principale:
gcloud sql connect PRIMARY_INSTANCE_NAME \ --user=root
- Inserisci la password di 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 parti da un nuovo database, crea lo stesso database e le stesse tabelle sia nell'istanza principale che in quella 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 nell'istanza principale, devi crearne uno uguale nella replica. Per farlo, esporta il database dall'istanza principale in un bucket Cloud Storage e importalo nella replica. Scopri di più su come esportare i dati da Cloud SQL in un file di dump SQL in Cloud Storage.
Configura la replica esterna
Attenzione: 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, esegui il seeding della nuova istanza MySQL esterna con il file di esportazione che hai 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 di replica-principale.
L'ID server è un valore numerico (ad es. "3") che deve essere univoco nella configurazione della replica esterna (ogni replica deve avere un ID server univoco).
- Aggiungi le seguenti opzioni al file delle opzioni
my.cnf
della 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=ON
Per ulteriori informazioni sulle opzioni di replica MySQL, consulta Opzioni di replica e logging binario.
- Riavvia il processo
mysqld
per consentire la lettura del file di configurazione. - In un client
mysql
sulla 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;
Conferma lo stato della replica:
SHOW SLAVE STATUS\G;
Se viene visualizzato il messaggio "In attesa dell'invio dell'evento da parte del master", la replica funziona.
Demote l'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 e viene replicata dal server che in precedenza era la replica esterna (ora chiamato server del database di origine).
Per annullare la configurazione della replica esterna:
-
Crea un'istanza di rappresentazione dell'origine.
Questa istanza rappresenterà il server del database di origine per la replica Cloud SQL al termine dell'operazione di declassamento.
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/instances
Utilizza la regione in cui vuoi che risieda la replica Cloud SQL.
Avvia la procedura di retrocessione.
Poiché questa chiamata API richiede di fornire informazioni sensibili, devi utilizzare un file JSON per fornire i dati a cURL anziché sulla 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/demoteMaster
Per ulteriori informazioni sulle opzioni per SSL/TLS, consulta Opzioni SSL/TLS. Per ulteriori informazioni sulle proprietà utilizzate dall'oggetto
replicaConfiguration
, consulta La replica da un server esterno.-
Attendi che la replica esterna completi tutte le transazioni in attesa dell'istanza principale.
Quando la replica è aggiornata, il comando
SHOW SLAVE STATUS
mostreràSeconds Behind Master
come 0 e il valoreExecuted_Gtid_Set
sarà identico tra la replica esterna e la principale Cloud SQL. Utilizza il client
mysql
per interrompere la replica sulla replica esterna:STOP SLAVE RESET SLAVE ALL
Attendi che l'istanza Cloud SQL inizi la replica dal server esterno, che ora è il server del database di origine.
L'esecuzione del comando
SHOW SLAVE STATUS
sull'istanza Cloud SQL fornisce lo stato della replica.-
Quando l'istanza Cloud SQL esegue la replica dal
server di database di origine, imposta il flag
read_only
sul server di database di origine suoff
e 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 Cloud SQL principale dispone di backup automatici e log binari e il recupero point-in-time è abilitato, pertanto dovrebbe avere log sufficienti per consentire alla replica di mettersi al passo. Tuttavia, in questo caso, anche se esistono i log binari, 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ù sui requisiti e sulle best practice per la configurazione della replica esterna.
- 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.