Использование репликации для масштабирования

8

Прочитав « Использование репликации для масштабирования» , как я могу направить разные запросы на разные серверы, например, SELECTя хочу направить их на ведомые и NON-SELECTна ведущие. Я предполагаю, что в качестве loadbalancer я могу использовать haproxy , но я не нашел возможности различать запросы на уровне haproxy ? Кроме того, скажем, кто-то непосредственно достиг мастера, как мастер может определить, что это SELECTзапрос и шоу, отправленные на ведомое устройство или на балансировщик нагрузки.

ком
источник

Ответы:

3

Существует проект MySQL Proxy, который пытается разделить чтение / запись на уровне прокси, но он не готов к работе. Вы можете прочитать больше о проблемах на этой странице , обратив внимание на раздел известных проблем.

На данный момент, как уже отмечали другие, вы должны обрабатывать маршрутизацию через ваше приложение.

Дерек Дауни
источник
В том же духе (но, я считаю, он готов к производству): scalebase.com/solution/architecture
Ник Чаммас,
2

Ваша задача web client- определить, является ли транзакция, которую она собирается отправить в базу данных, read-onlyили, read-writeи выбрать ее назначенную slaveили masterсоответствующую.

Райхан
источник
2

Я не знаю ни одного прокси программного обеспечения, чтобы сделать это для вас. haproxy - это прокси уровня HTTP, это не повлияет на вашу базу данных. Вам нужно будет реализовать это как часть бизнес-логики вашего веб-приложения.

В основе вашего уровня персистентности вы должны иметь возможность перехватывать эти вызовы и «направлять» их в соответствующую базу данных в зависимости от типа выполняемой транзакции. Например, SELECTзапросы могут быть отправлены на серверы только для чтения, но UPDATE/INSRET/DELETEзапросы будут отправлены с главного сервера.

Nate
источник
haproxy является балансировщиком нагрузки TCP и может использоваться для других протоколов, включая MySQL, хотя это может быть не лучшим выбором.
Аарон Браун