Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo della replica basata su GTID
Il seguente contenuto spiega come utilizzare gli identificatori di transazione globali (GTID) con la replica di log binari (binlog) tra le istanze DB di Amazon RDS for MySQL.
La replica basata su GTID è supportata per tutte le versioni di RDS per MySQL 5.7 e RDS per MySQL versione 8.0.26 e versioni successive a MySQL 8.0. Tutte le istanze database MySQL in una configurazione di replica devono rispettare questo requisito.
Argomenti
- Identificatori globali di transazione (GTID)
- Parametri per la replica basata su GTID
- Configurazione della replica basata su GTID per le nuove repliche di lettura
- Configurazione della replica basata su GTID per le repliche di lettura esistenti.
- Disabilitazione della replica basata su GTID per un'istanza database MySQL con repliche di lettura
Identificatori globali di transazione (GTID)
Gli identificatori globali di transazione (GTID) sono identificatori univoci generati per le transazioni MySQL sottoposte a commit. Puoi utilizzare i GTID per semplificare la replica basata sui log binari e facilitare la risoluzione dei problemi.
MySQL utilizza due diversi tipi di transazioni per la replica basata sui log binari:
-
Transazioni GTID – Transazioni identificate da un GTID.
-
Transazioni anonime – Transazioni a cui non è assegnato un GTID.
In una configurazione di replica, i GTID sono univoci in tutte le istanze database. I GTID semplificano la configurazione della replica perché, quando vengono utilizzati, non è necessario fare riferimento alle posizioni nel file di log. I GTID semplificano anche la registrazione delle transazioni replicate e verificano che l’istanza di origine e le repliche siano coerenti.
Puoi utilizzare la replica basata su GTID per replicare i dati con le repliche di lettura di RDS for MySQL. Puoi configurare la replica basata su GTID quando crei le nuove repliche di lettura oppure puoi convertire le repliche di lettura esistenti in modo che usino la replica basata su GTID.
Puoi utilizzare la replica basata su GTID anche in una configurazione di replica ritardata con RDS for MySQL. Per ulteriori informazioni, consulta Configurazione della replica ritardata con MySQL.
Parametri per la replica basata su GTID
Utilizzare i parametri seguenti per configurare la replica basata su GTID.
Parametro | Valori validi | Descrizione |
---|---|---|
|
|
|
|
|
|
Nota
Nel, il parametro appare come. AWS Management Consolegtid_mode
gtid-mode
Per la replica basata su GTID, utilizza queste impostazioni per il gruppo di parametri dell'istanza database o per la replica di lettura:
-
ON
eON_PERMISSIVE
si applicano solo alla replica in uscita da un'istanza database RDS. Entrambi questi valori fanno sì che l'istanza database RDS utilizzi i GTID per le transazioni replicate.ON
richiede che anche il database di destinazione utilizzi la replica basata su GTID. PerON_PERMISSIVE
la replica basata su GTID è opzionale sul database di destinazione. -
OFF_PERMISSIVE
, se impostato, significa che le istanze database RDS possono accettare la replica in ingresso da un database di origine. Possono farlo indipendentemente dal fatto che il database di origine utilizzi la replica basata su GTID. -
OFF
, se impostato, significa che le istanze database RDS accettano solo la replica in ingresso da database di origine che non utilizzano la replica basata su GTID.
Per ulteriori informazioni sui gruppi di parametri, consultare Utilizzo di gruppi di parametri.
Configurazione della replica basata su GTID per le nuove repliche di lettura
Quando la replica basata su GTID è abilitata per un'istanza database di RDS for MySQL, la replica basata su GTID viene configurata automaticamente per le repliche di lettura di un'istanza database.
Per abilitare la replica basata su GTID per le nuove repliche di lettura
-
Verificare che il gruppo di parametri associato all'istanza database abbia le impostazioni dei parametri seguenti:
-
gtid_mode
–ON
oON_PERMISSIVE
-
enforce_gtid_consistency
–ON
Per ulteriori informazioni sull'impostazione dei parametri di configurazione mediante i gruppi di parametri, consultare Utilizzo di gruppi di parametri.
-
-
Se è stato modificato un gruppo di parametri dell'istanza database, riavviare l'istanza. Per ulteriori informazioni su come effettuare questa operazione, consultare Riavvio di un'istanza database.
-
Creare una o più repliche di lettura dell'istanza database. Per ulteriori informazioni su come effettuare questa operazione, consultare Creazione di una replica di lettura.
Amazon RDS prova a stabilire una replica basata su GTID tra l'istanza database di MySQL e le repliche di lettura utilizzando MASTER_AUTO_POSITION
. Se il tentativo non riesce, Amazon RDS utilizza le posizioni del file di log per la replica con le repliche di lettura. Per ulteriori informazioni su MASTER_AUTO_POSITION
, consultare l'argomento relativo al posizionamento automatico dei GTID
Configurazione della replica basata su GTID per le repliche di lettura esistenti.
Per un'istanza database di RDS for MySQL esistente con repliche di lettura che non utilizzano la replica basata su GTID, è possibile configurare la replica basata su GTID tra l'istanza database e le repliche di lettura.
Per abilitare la replica basata su GTID per le repliche di lettura esistenti
-
Se l'istanza database o qualsiasi replica di lettura sta utilizzando RDS versione 8.0 for MySQL versione 8.0.26 o precedente, aggiornare l'istanza database o la replica di lettura a MySQL 8.0.26 o versione successiva alla 8.0. Tutte le versioni di RDS per MySQL 5.7 supportano la replica basata su GTID.
Per ulteriori informazioni, consulta Aggiornamento del motore di database MySQL.
-
(Facoltativo) Reimpostare i parametri GTID e verificare il comportamento dell'istanza database e delle repliche di lettura:
-
Verificare che il gruppo di parametri associato all'istanza database e ogni replica di lettura abbiano il parametro
enforce_gtid_consistency
impostato suWARN
.Per ulteriori informazioni sull'impostazione dei parametri di configurazione mediante i gruppi di parametri, consultare Utilizzo di gruppi di parametri.
-
Se è stato modificato un gruppo di parametri dell'istanza database, riavviare l'istanza. Se il gruppo di parametri è stato modificato per una replica di lettura, riavviare la replica.
Per ulteriori informazioni, consulta Riavvio di un'istanza database.
-
Eseguire l'istanza database e le repliche di lettura con il normale carico di lavoro e monitorare i file di log.
Se vengono visualizzati avvisi relativi a transazioni incompatibili con GTID, modificare l'applicazione in modo che usi solo caratteristiche compatibili con GTID. Verificare che l'istanza database non stia generando avvisi relativi a transazioni incompatibili con GTID prima di procedere alla prossima fase.
-
-
Reimpostare i parametri GTID per la replica basata su GTID che consente le transazioni anonime finché le repliche di lettura non ne completano l'elaborazione.
-
Verificare che il gruppo di parametri associato all'istanza database e ogni replica di lettura abbiano le impostazioni dei parametri seguenti:
-
gtid_mode
–ON_PERMISSIVE
-
enforce_gtid_consistency
–ON
-
-
Se è stato modificato un gruppo di parametri dell'istanza database, riavviare l'istanza. Se il gruppo di parametri è stato modificato per una replica di lettura, riavviare la replica.
-
-
Attendere il completamento della replica di tutte le transazioni anonime. Per verificare che vengano replicate, procedere come descritto di seguito:
-
Eseguire questa istruzione sull'istanza DB primaria.
SHOW MASTER STATUS;
Annotare i valori nelle colonne
File
ePosition
. -
In ogni replica di lettura, utilizzare le informazioni su file e posizione presenti nell’istanza di origine menzionata nella fase precedente per eseguire la query seguente.
SELECT MASTER_POS_WAIT('
file
',position
);Ad esempio, se il nome del file è
mysql-bin-changelog.000031
e la posizione è107
, eseguire l'istruzione seguente.SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
Se la replica di lettura si trova dopo la posizione specificata, la query la restituisce immediatamente. In caso contrario, la funzione entra in attesa. Passare alla fase successiva quando la query restituisce risposte per tutte le repliche di lettura.
-
-
Reimpostare i parametri GTID solo per la replica basata su GTID.
-
Verificare che il gruppo di parametri associato all'istanza database e ogni replica di lettura abbiano le impostazioni dei parametri seguenti:
-
gtid_mode
–ON
-
enforce_gtid_consistency
–ON
-
-
Riavviare l'istanza database e ogni replica di lettura.
-
-
In ogni replica di lettura completare la procedura seguente.
CALL mysql.rds_set_master_auto_position(1);
Disabilitazione della replica basata su GTID per un'istanza database MySQL con repliche di lettura
Puoi disabilitare la replica basata su GTID per un un'istanza database MySQL con repliche di lettura.
Per disabilitare la replica basata su GTID per un'istanza database MySQL con repliche di lettura
-
Su ogni replica letta, eseguire la procedura seguente:
CALL mysql.rds_set_master_auto_position(0);
-
Reimpostare
gtid_mode
suON_PERMISSIVE
.-
Verifica che il gruppo di parametri associato all'istanza database MySQL e ogni replica di lettura abbiano
gtid_mode
impostato suON_PERMISSIVE
.Per ulteriori informazioni sull'impostazione dei parametri di configurazione mediante i gruppi di parametri, consultare Utilizzo di gruppi di parametri.
-
Riavvia l'istanza database MySQL e ogni replica di lettura. Per ulteriori informazioni sul riavvio, consultare Riavvio di un'istanza database.
-
-
Reimpostare
gtid_mode
suOFF_PERMISSIVE
.-
Verifica che il gruppo di parametri associato all'istanza database MySQL e ogni replica di lettura abbiano
gtid_mode
impostato suOFF_PERMISSIVE
. -
Riavvia l'istanza database MySQL e ogni replica di lettura.
-
-
Attendere che tutte le transazioni GTID vengano applicate a tutte le repliche di lettura. Per verificare che vengano applicate, procedi nel seguente modo:
-
Sull'istanza database MySQL, esegui il comando
SHOW MASTER STATUS
.Il risultato dovrebbe essere simile al seguente.
File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
Annotare il file e la posizione nell'output.
-
In ogni replica letta, utilizzate le informazioni sul file e sulla posizione dalla relativa istanza di origine nel passaggio precedente per eseguire la seguente query:
Per MySQL 8.0.26 e versioni successive di MySQL 8.0
SELECT SOURCE_POS_WAIT('
file
',position
);Per le versioni MySQL 5.7
SELECT MASTER_POS_WAIT('
file
',position
);Ad esempio, se il nome del file è
mysql-bin-changelog.000031
e la posizione è107
, esegui la seguente istruzione:Per MySQL 8.0.26 e versioni successive di MySQL 8.0
SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);
Per le versioni MySQL 5.7
SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
-
-
Reimposta i parametri GTID per disabilitare la replica basata su GTID.
-
Verifica che il gruppo di parametri associato all'istanza database MySQL e ogni replica di lettura abbiano le impostazioni dei parametri seguenti:
-
gtid_mode
–OFF
-
enforce_gtid_consistency
–OFF
-
-
Riavvia l'istanza database MySQL e ogni replica di lettura.
-