#php #mysql #replication
#php #mysql #репликация
Вопрос:
Я планирую увеличить производительность своего сайта, добавив еще один сервер MySQL рядом с текущим, потому что текущий сервер слишком занят.
Возможно ли масштабировать PHP-приложение с помощью репликации MySQL без изменения кода PHP? Я имею в виду, что все запросы будут отправлены ведущему, и ведущий распределит нагрузку между собой и подчиненным.
Есть ли какой-нибудь простой способ отправить все запросы на запись ведущему и распределить запросы на чтение между ведущим и подчиненным?
Ответ №1:
Я думаю, вам нужно установить балансировщик нагрузки / прокси между вашими серверами БД и клиентами (ваш код). Примеры решений:
- HAProxy: http://haproxy.1wt.eu /
- Прокси-сервер MySQL: https://launchpad.net/mysql-proxy
Ответ №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