Как закодировать PHP класс MySQL для настройки на главный и подчиненный? - PullRequest
1 голос
/ 02 сентября 2011

Я никогда не использовал настройку master / slave для своих баз данных mysql, поэтому, пожалуйста, прости, если я не вижу здесь смысла.

Мне любопытно, скажем, я хочу иметь основную БД и 3 подчиненных БД. Нужно ли мне писать классы базы данных для подключения и добавления / обновления / удаления записей в главную БД, или это как-то автоматизировано?

Также для моих запросов SELECT мне нужно было бы кодировать его для случайного выбора случайного сервера БД?

Ответы [ 4 ]

4 голосов
/ 02 сентября 2011

Что вы хотите использовать (и исследовать): MySQL Replication . Это обрабатывается полностью независимо от вашего кода. Вы работаете с базой данных так же, как если бы были 1 или 100 серверов.

4 голосов
/ 02 сентября 2011

звучит так, как будто вы хотите улучшить производительность / баланс нагрузки

да, вам необходимо внести какие-либо деструктивные изменения в основную базу данных.Рабы могут быть использованы только для чтения.Вы также должны быть осторожны, чтобы не писать в мастер и мгновенно читать из подчиненного устройства, в противном случае данные, возможно, еще не были реплицированы в подчиненное устройство.поэтому любые мгновенные чтения все равно должны приходить от мастера.

Я бы не советовал просто случайным образом выбирать раба.Вы можете сделать это по географическим регионам, если они распределены, или если вы работаете в кластере, вы можете использовать прокси для балансировки нагрузки за вас ..

вот еще некоторая информация, которая может помочь

http://agiletesting.blogspot.com/2009/04/mysql-load-balancing-and-read-write.html

1 голос
/ 28 апреля 2016

Вам следует рассмотреть возможность использования mysqlnd_ms - плагина PHP для репликации и балансировки нагрузки.

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

Полезные ссылки:

0 голосов
/ 02 сентября 2011

Настройка master / slave должна выполняться автоматически сервером MySQL, поэтому вам не нужно никакого специального кода для этой конфигурации.

...