1. Glossario/

GTID

Global Transaction Identifier

GTID (Global Transaction Identifier) è un identificativo univoco assegnato automaticamente a ogni transazione committata su un server MySQL. Il formato è server_uuid:transaction_id — ad esempio 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

Come funziona #

Quando il GTID è abilitato (gtid_mode = ON), ogni transazione riceve un identificativo che la rende tracciabile su qualsiasi server del cluster di replica. Lo slave sa esattamente quali transazioni ha già eseguito e quali deve ancora ricevere, senza bisogno di specificare manualmente posizioni di binlog (file + offset).

Il set di tutti i GTID eseguiti su un server è memorizzato nella variabile gtid_executed. Quando uno slave si connette al master, confronta il proprio gtid_executed con quello del master per determinare quali transazioni mancano.

A cosa serve #

Il GTID semplifica radicalmente la gestione della replica MySQL:

  • Failover automatico: quando il master cade, uno slave può diventare il nuovo master e gli altri slave si riallineano automaticamente
  • Verifica della consistenza: è possibile verificare se due server hanno eseguito esattamente le stesse transazioni
  • Backup e restore: strumenti come mysqldump e mydumper devono gestire correttamente i GTID per evitare conflitti di replica dopo il restore

Quando crea problemi #

I GTID richiedono attenzione durante le operazioni di backup e restore. Se si ripristina un dump su un server con GTID attivo senza impostare correttamente --set-gtid-purged, si possono generare conflitti che rompono la catena di replica.