Eu tenho a configuração de replicação mostrada na imagem. Tudo se replica para todos os lugares. Uma das tabelas mantém dados da sessão que possuem linhas que devem ser excluídas devido à expiração. Criei um evento que verifica sessões expiradas uma vez por dia e as exclui:
DELETE FROM session
WHERE expiration < (UNIX_TIMESTAMP() - 7200);
Minhas perguntas são estas:
- Isso levará a uma condição instável em que cada um dos bancos de dados estará (quase) executando simultaneamente o evento e ao mesmo tempo tentando replicar as atualizações?
- Em caso afirmativo, um evento pode ser restrito a uma única instância de banco de dados com SQL ou por algum outro meio?
- Um evento é a ferramenta adequada para este trabalho?
Observe que o Site A e o Site B estão fisicamente separados (costa leste e oeste dos EUA), portanto há atraso na rede.
Editar: Este é o MySQL 8.0.36