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

#php #mysql #replication

#php #mysql #репликация

Вопрос:

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

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

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

Ответ №1:

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

Ответ №2:

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

Ответ №3:

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

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

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

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