Quando temos uma replicação envolvendo mais de 1 servidor master temos que tomar o cuidado para que a replicação não pare de funcionar, e o primeiro problema que qualquer DBA enfrenta é o erro de chave primária duplicada.

Duplicate entry '1' for key 'PRIMARY'

Porém é muito simples e fácil não passar por esse problema.
Temos 2 variáveis fundamentais e é muito simples a sua correta configuração.
Obs: O que eu mais vejo por ai é configurado da forma errada.

auto_increment_increment

Define o intervalo dos valores do das colunas auto_increment.

auto_increment_offset

Define o valor inicial das colunas auto_increment.

Agora vem a parta mais fácil, que é a configuração.
Vamos supor que temos uma infraestrutura com 3 servidores MySQL, vamos chamar de A, B e C. Eles estão configurados com uma replicação em formato de anal, onde todos são masters.

A
/    \
B  — C

O valor da variável auto_increment_increment sempre será o número de servidores masters que fazem parte da replicação, e o valor da variável auto_increment_offset será diferente em todos os servidores e o seu valor é sequencial, começando pelo número 1.

Então teremos:

Servidor A:
auto_increment_increment = 3
auto_increment_offset = 1
Servidor B:
auto_increment_increment = 3
auto_increment_offset = 2
Servidor C:
auto_increment_increment = 3
auto_increment_offset = 3

Pronto, isso é o suficiente para que os erros de chave primária duplicada não aconteçam mais na replicação.

Aulas ao vivo sem que você precise sair de casa.

Post Navigation