масштабирование приложения PHP с репликацией MySQL без изменения кода PHP?

Я планирую повысить производительность своего сайта, добавив еще один сервер MySQL рядом с текущим, потому что текущий сервер слишком занят.

Можно ли масштабировать приложение PHP с репликацией MySQL без изменения кода PHP? Я имею в виду, что все запросы будут отправляться мастеру, и мастер будет распределять нагрузку между собой и слейвом.

Есть ли простой способ отправить все запросы на запись мастеру и распределить запросы на чтение между мастером и ведомым?


person usef_ksa    schedule 08.10.2011    source источник


Ответы (3)


Я думаю, вам нужно установить балансировщик нагрузки/прокси между вашими серверами БД и клиентами (вашим кодом). Примеры решений:

person Wojciech Bańcer    schedule 08.10.2011

Если вы не хотите выполнять «балансировку нагрузки» вручную, вы можете заглянуть в Прокси-сервер MySQL.

person rodneyrehm    schedule 08.10.2011

Я думаю, вы также должны оптимизировать код своего приложения (PHP), а затем оптимизировать свою архитектуру.

Прежде всего, вы можете проверить свои запросы MYSQL. Журнал медленных запросов Mysql может вам помочь. Если у вас есть проблемы с подключением (сервер MYSQL ушел из строя или слишком много подключений и т. д.), вам следует управлять механизмом пула соединений вашего приложения.

И другие шаги, а также ваш ответ (я думаю), вы можете настроить репликацию мастер-мастер MYSQL. Когда вы четко настроите репликацию, вы можете поставить перед репликацией балансировщик нагрузки (HAProxy). У вас есть 2 узла для mysql (сервер A и сервер B, оба являются главными серверами). Вы можете настроить HAProxy с сервером A в качестве главного, а сервер B в качестве резервного сервера. Все ваши операции MYSQL поступают на сервер A через HAProxy, и ваши данные автоматически синхронизируются с сервером B. Когда сервер A не работает, HAProxy автоматически отправляет все запросы на сервер B.

Также вы можете настроить HAProxy так, чтобы сервер A выполнял все запросы на вставку, а сервер B — для всех запросов на чтение. Во всех этих случаях ваш код должен подключаться к MYSQL через HAProxy.

person eusso    schedule 20.03.2014