Ponieważ czas replikacji MySQL jest zmienną niekontrolowaną (nawet w prawidłowych implementacjach mogą pojawić się problemy, które powodują zatrzymanie lub zablokowanie replikacji), najlepiej nie polegać na replikacji danych. Problem można podzielić na dwie sytuacje:
1) Jestem użytkownikiem wykonującym operację CUD, oczekuję, że następująca operacja R będzie odzwierciedlać zmianę, którą właśnie wprowadziłem. W tym przypadku bezwzględnie musisz ściągnąć dane z mastera, ponieważ użytkownik oczekuje, że jego zmiana przyniosła skutek.
2) Jestem użytkownikiem zewnętrznym, nie wiem, czy wydarzyło się polecenie CUD i generalnie nie obchodzi mnie to, więc zwracanie nieaktualnych danych jest dopuszczalne (w 99% wdrożeń, w przeciwnym razie prawdopodobnie nie używałbyś PHP* ).
Alternatywą dla #1 byłoby poinformowanie użytkownika, że jego zmiana się rozchodzi i jest akceptowalna w niektórych sytuacjach, np. wiele stron internetowych powie, że pojawienie się x może zająć nawet y minut, to jest ta sytuacja w działaniu.
- Jeśli potrzebujesz natychmiastowych aktualizacji, możesz spróbować zapisać w warstwie pamięci podręcznej, która jest odpytywana wraz z (potencjalnie zawodnymi) danymi bazy danych. Coś takiego jak memcached byłoby najlepszym kandydatem.