Как закодировать класс PHP MySQL для настройки ведущего и подчиненного?

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

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

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


person JasonDavis    schedule 02.09.2011    source источник


Ответы (4)


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

person Jonathon Reinhart    schedule 02.09.2011
comment
Итак, мне нужно будет установить одно соединение mysql с главной таблицей, а все остальное будет обработано само собой? - person Criesto; 03.07.2015
comment
Сам никогда не ставил, но да, я так понимаю. ответ бампера ниже дополняет объяснение. - person Jonathon Reinhart; 03.07.2015

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

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

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

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

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

person bumperbox    schedule 02.09.2011

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

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

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

person vooxo    schedule 28.04.2016

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

person F21    schedule 02.09.2011