RafaelViana:
Procurei soluções nativas do banco, mas não me atenderam.
Pesquisei e testei: SQLYog Job Agent e Percona Toolkit. Mas, vi que ia ser mais fácil criar meu próprio controle. Principalmente na questão de resolução de conflitos.
Não testei master/slave
Mas, Pense no seguinte cenário:
*Uma aplicação no servidor online.
*Três (ou mais) vendedores saem para fazer vendas externas sem internet (cada um tem uma cópia do banco de dados atualizada no seu notebook).
*Ao mesmo tempo uma pessoa está digitando outras informações no online.
*Quando esses vendedores tiverem acesso à internet, eles enviam os dados que eles digitaram para o servidor.
Mas, e se ele cadastrou um cliente com o código 2, e no online outra pessoa já cadastrou esse código 2? E se o segundo vendedor também cadastrou um cliente (e como no banco local dele, não tinha informações do outro, também criou com o código 2)?
Como faço para resolver esse conflito usando master/slave?
Bom qual banco de dados voce utiliza primeiramente ? Pelo menos a maioria (mysql, oracle, postgres) ja tem solução nativa pra replicação em muitos métodos master/slave master/master (one-way two-way),
Pelo que entendi no seu caso nem seria master/slave seria master/master o que complica um pouco mais ja que todos os servidores (maquinas vendedor + servidor web) devem subir e baixar os dados e estarem sempre sincronizados certo ??
No seu caso pra evitar colisão de chave primaria basta deixar de trabalhar com incremental inteiros númericos e passar a gerar chaves únicas hashs com unique , então nunca haveria duas chaves iguais independente de quem inseriu e em qual maquina foi inserida.
Mas porque voce nao trabalha seus dispositiveis móveis (notes,palms,etc) com conexão 3g (super barato e veloz hoje em dia,alem de ter quase cobertura nacional) pra centralizar o servidor e aplicação e escalar seu servidor em vez de distribuir o software e banco ?? Inviável ??? Pois toda atualização de sistemas todos os vendedores teriam problemas , delay em conseguir nova versão e instalação. Já pensou nisso ???