Este é um problema real e acontece quase tão logo você começa a tentar gravar no mestre e ler do escravo. Embora o intervalo de tempo entre a inscrição do usuário e o login do usuário seja provavelmente longo o suficiente para não ter que se preocupar com isso, a maioria das coisas que os usuários desejam fazer causará esse problema.
Ações como criar um fórum ou uma postagem de blog geralmente resultam em um redirecionamento que as leva de volta a uma página na qual podem ver a postagem que acabaram de criar. Se esta página for lida do escravo, haverá apenas uma fração de segundo entre a gravação e a leitura, o que geralmente não será suficiente para permitir a replicação.
Existem três soluções que usei no passado e uma que não usei pessoalmente.
- Monitore o atraso de replicação no escravo, retire-o da piscina se ficar atrás do mestre. A maneira mais confiável de gerenciar isso é usando a ferramenta heartbeat do kit de ferramentas Percona. Isso provavelmente não resolverá o problema da postagem no fórum.
- Continue a fazer consultas do mestre para determinadas categorias de consultas. Por exemplo, a página de pós-sucesso e as páginas do CMS ou do centro de administração só consultariam o mestre. Isso coloca uma carga extra no mestre.
- Use o armazenamento em cache. Algo como Memcached ou similar. As gravações suscetíveis a esse problema devem ser gravadas simultaneamente no memcached e as leituras devem vir de lá primeiro. Faltas são lidas do escravo, o que significa que ainda vale a pena ter um. Você terá que modificar cada parte do seu aplicativo que lê ou escreve, mas se você tiver abstraído corretamente isso não deve ser difícil. Você poderia também implementar isso usando algo como o mysql-proxy, mas eu não posso realmente recomendar essa opção.
- Replicação síncrona. Eu não acho que o MySQL pode fazer isso, mas eles têm algo chamado replicação semi-síncrona vindo na próxima grande versão. A idéia é que a consulta de gravação original não retornará até que os dados também tenham sido gravados no (s) escravo (s). Isso tem o inconveniente de fazer com que suas consultas de gravação demorem mais e toda a sua plataforma caia quando o escravo faz isso.
A opção 3. foi a mais bem sucedida no passado para mim e é a opção que eu escolheria no futuro.