Se eu quiser executar uma consulta que será executada apenas no servidor mysql mestre e não no escravo. supondo que tenhamos um ambiente com replicação através de query logs. Eu poderia e como?
A ideia é ter alguns registros que ficam arquivados no escravo. Digamos que o mestre é um site de produção e requer apenas dados que foram inseridos no último mês para operar corretamente, mas o escravo é onde os dados de anos serão salvos e posteriormente analisados para alterar a variável no servidor principal (produção/mestre).
Existe uma maneira muito, muito mais simples
Um Escravo de replicação depende dos logs binários do Mestre para enviar o SQL deles para os logs de retransmissão locais do Escravo. Apenas diga ao Mestre para não gravar o SQL
A chave aqui é desabilitar o registro binário em sua sessão. O Escravo não saberá o que atingiu o Mestre porque o Mestre executará
DELETE
e não gravará o arquivoDELETE
.De uma chance !!!
A única maneira é você ter outra tabela com os mesmos dados e excluí -la da replicação em
my.cnf
.A replicação do MySQL irá copiar e executar todas as instruções que você executar nas tabelas e/ou bancos de dados relevantes. Portanto, quando você executa algo no mestre, o escravo também o executará, dado que foi direcionado a uma tabela na lista de replicação.
Agora, sua solução seria criar a tabela
B
e copiar todo o conteúdo da tabelaA
. Adicione um campo adicional à tabelaB
chamadacustom
por exemplo. Execute um cronjob a cada X minutos/horas/dias/meses para:B
ondecustom = 0
A
na tabelaB
:INSERT INTO b (SELECT * FROM a);
B
, comcustom = 1
.Espero que isto ajude.