GTID é um identificador de transação global.

Cada transação feita no banco de dados é criado e associado a um identificador, que é exclusivo para o servidor de origem e destino.

Todo GTID é composto por um numero identificador do servidor de origem e um número de transação .

 

– source_id : número que identifica o servidor de origem.

– transaction_id: numero de sequencia determinado pela ordem em que a transação foi confirmada.

Como Ativar GTID na replicação ?

Para ativar é necessário alterar duas variáveis no my.cnf:

– enforce_gtid_consistency=on

– gtid_mode=on

Para que funcione corretamente é necessário ainda habilitar o log-bin e o log_slave_updates quando se trata de um master, no slave não é obrigatório ter o log binário ativado.

No manual indica-se iniciar os slaves com a opção de –skip-slave-start, que serve para quando iniciar o banco, não iniciar automaticamente a replicação.

 

Para que serve GTID ?

O GTID é um identificador exclusivo não apenas para o servidor no qual se originou, mais em todos os servidores em uma determinada topologia de replicação.

Serve para garantir a consistência de informações entre os servidores numa determinada replicação.

 

 

Como funciona o GTID?

A atribuição GTID distingue entre transações feitas no master e no slave, desde que a transação seja gravada no log binário. É garantido que as transações que tem GTID sejam crescentes, sem lacunas entre os números gerados. Se a transação não for gravada no log binário, ela não receberá um GTID no servidor de origem. Isso pode ocorrer quando uma transação é somente leitura.

A transação confirmada no master pode ser aplicada somente uma vez no slave, o que ajuda a garantir a consistência. Qualquer tentativa de execução de uma transação subsequente com o mesmo GTID será ignorada pelo servidor.

Se uma transação começou a ser executada, até ela ser confirmada ou revertida, qualquer transação com o mesmo GTID será bloqueada.

 

 

Referencias :

https://dev.mysql.com/doc/refman/5.6/en/replication-gtids-concepts.html

https://dev.mysql.com/doc/refman/5.7/en/replication-options-gtids.html#sysvar_gtid_mode

https://pt.blog.marceloaltmann.com/en-mysql-5-6-replication-with-gtid-global-transaction-id-pt-replicacao-com-gtid/