У меня есть приложение (php), работающее с MySQL 5.5 (1 мастер и 1 подчиненный)
Я использую для отправки чтения/записи на ведущий/ведомый.
Когда я создаю новую запись (юзер или что-то в этом роде) я пишу ее на мастере, а когда перезагружаю страницу, я загружаю ее со слейва.
Пример:
...
if ($_GET['id'])
{
#Load user
$user = $sql->load('user', $_GET['id']);
if ($user == false)
{
throw exception('User not found');
}
}
else if ($_POST['create]')
{
#Create a new user
$user_id = $sql->insert('user', $_POST);
$mvc->reload('?id=' . $user_id);
exit();
}
...
Но когда мастер действительно производительный (быстрая вставка), а репликация нет (лаг = 0,3 - 1 сек), перезагрузка не сработает...
Как лучше всего справиться с этим
Некоторые решения:
- Оптимизация базы данных для уменьшения лагов (очень сложно)
- спать(1) перед чтением или после записи... не очень элегантно