Конфигурация MySQL Master-Slave для приложений с интенсивным написанием

Мое приложение в данный момент запущено в производство. Приложение и база данных находятся на одном сервере. Приложение требует интенсивной записи и может выполнять ОБНОВЛЕНИЕ даже при запросах GET (но не во всех, во всяком случае).

Я читал о Master-Master против Master-Slave для MySQL. Я понимаю, что если у меня есть конфигурация Master-Master, мне нужно быть осторожным, чтобы вставленные данные не конфликтовали при объединении, и могут возникнуть проблемы с обновлениями. Поэтому я считаю, что Master-Slave - это более простой вариант для начала.

Однако есть некоторые ответы, которые я нигде не смог найти:

1) Куда должно подключиться мое приложение? Просто на мастер-сервер? Или приложение должно решить, к какому серверу подключаться, в зависимости от запросов процесса?

2) Поскольку мое приложение интенсивно пишет, имеет ли смысл иметь конфигурацию Master-Slave?

3) Что если у процесса есть выборки и обновления? Будет ли он устанавливать 2 соединения, отправляя выборки ведомому и обновляя мастер? (Разве это не плохо? Разве это не хуже, чем конфигурация Мастер-Мастер?)

4) Если Мастер падает, что произойдет, если я не назначу Раба Мастером? Обновятся ли обновления в это время?

2 ответа

Решение

Вот ответ Сэма Д. Я попытался отредактировать его оригинальный ответ, чтобы сделать его более полным, но редактирование не было одобрено.

да будет потеря транзакции. поэтому обычно есть серверы, постоянно проверяющие мастера, поэтому, когда он выходит из строя, он как можно быстрее превращается в раба. Разделение чтения и записи намного лучше на уровне приложений, некоторые фреймворки делают это автоматически для вас, и вы можете указать master и slave в конфигурации.

Я знаю, что фреймворки PHP, которые читают и пишут, - это laravel и yii, я рекомендую laravel. Удачи

Другие вопросы по тегам