Protože doba replikace MySQL je nekontrolovatelná proměnná (i ve správných implementacích mohou nastat problémy, které zastaví replikaci nebo ji zablokují), je nejlepší nespoléhat se na replikaci dat. Problém můžete rozdělit do dvou situací:
1) Jsem uživatel, který provádí operaci CUD, očekávám, že doslovy operace R budou zrcadlit změnu, kterou jsem právě provedl. V tomto případě musíte bezpodmínečně stáhnout data z masteru, protože uživatel očekává, že jeho změna měla efekt.
2) Jsem externí uživatel, nevím, že došlo k příkazu CUD a obecně je mi to jedno, takže vracení zastaralých dat je přijatelné (v 99% implementací, jinak byste pravděpodobně nepoužívali PHP* ).
Alternativou k #1 by bylo informovat uživatele, že jeho změna se šíří a je v některých situacích přijatelná, např. mnoho webových stránek vám řekne, že x může trvat až y minut, než se objeví, toto je tato situace v akci.
- Pokud potřebujete okamžité aktualizace, můžete zkusit zapisovat do mezipaměti, která je dotazována spolu s (potenciálně nespolehlivými) daty DB. Něco jako memcached by bylo hlavním kandidátem.