Прочитав « Использование репликации для масштабирования» , как я могу направить разные запросы на разные серверы, например, SELECT
я хочу направить их на ведомые и NON-SELECT
на ведущие. Я предполагаю, что в качестве loadbalancer я могу использовать haproxy , но я не нашел возможности различать запросы на уровне haproxy ? Кроме того, скажем, кто-то непосредственно достиг мастера, как мастер может определить, что это SELECT
запрос и шоу, отправленные на ведомое устройство или на балансировщик нагрузки.
8
Ваша задача
web client
- определить, является ли транзакция, которую она собирается отправить в базу данных,read-only
или,read-write
и выбрать ее назначеннуюslave
илиmaster
соответствующую.источник
Я не знаю ни одного прокси программного обеспечения, чтобы сделать это для вас. haproxy - это прокси уровня HTTP, это не повлияет на вашу базу данных. Вам нужно будет реализовать это как часть бизнес-логики вашего веб-приложения.
В основе вашего уровня персистентности вы должны иметь возможность перехватывать эти вызовы и «направлять» их в соответствующую базу данных в зависимости от типа выполняемой транзакции. Например,
SELECT
запросы могут быть отправлены на серверы только для чтения, ноUPDATE/INSRET/DELETE
запросы будут отправлены с главного сервера.источник