AndreyKl
Новичок
mysqli, репликация мастер-слэйв, как задать список слейвов..
Доброго времени суток.
Ситуация - проблема с производительностью веб-приложения. Приложение написано на php и использует mysql. Собственно, в результате недолгих изысканий пришёл к выводу, что решением может быть организация master-slave репликации для mysql.
С базой (настройками) всё более менее ясно. Заводим второй сервер, указваем ему id, запускаем slave и вроде как должно всё работать. А что делать с php? как ему указать что нужно делать инсерты/апдейты на мастер, а селекты на слейв?
смотрел на php.net документацию http://ru.php.net/manual/ru/book.mysqli.php
Но легче не стало. По всей видимости задумка в том, что вручную нужно определять тип запроса (например, с помощью функции mysqli-rpl-query-type или совсем "вручную" ибо народ там жалуется что php падает при использовании данной ф-ции) и после этого руками выбрать куда его посылать используя одну из функций (mysqli-slave-query , mysqli-master-query ).
Собственное, всё вроде ясно. Нужно перебирать слой абстракции для БД и добавлять в нужное место вызовы этих самых функций, но возникает два вопроса:
1) Где и как указывать конфигурацию базы, к которой будет выполнятся запрос по slave_query и где и как указвать базу для master_query? Или же это будет сделано автоматически, а в настройках нужно лишь указать мастер?
2) Функции эти (mysqli_master_query, mysqli_slave_query) "This function has been DEPRECATED and REMOVED as of PHP 5.3.0."
Что позволяет надеятся на то, что процесс автоматизируют в 5.3.0 - соответственно вопрос - где бы почитать "как это будет"?
Ну и третий, более общий вопрос - может я чего не так понял?
Спасибо.
Доброго времени суток.
Ситуация - проблема с производительностью веб-приложения. Приложение написано на php и использует mysql. Собственно, в результате недолгих изысканий пришёл к выводу, что решением может быть организация master-slave репликации для mysql.
С базой (настройками) всё более менее ясно. Заводим второй сервер, указваем ему id, запускаем slave и вроде как должно всё работать. А что делать с php? как ему указать что нужно делать инсерты/апдейты на мастер, а селекты на слейв?
смотрел на php.net документацию http://ru.php.net/manual/ru/book.mysqli.php
Но легче не стало. По всей видимости задумка в том, что вручную нужно определять тип запроса (например, с помощью функции mysqli-rpl-query-type или совсем "вручную" ибо народ там жалуется что php падает при использовании данной ф-ции) и после этого руками выбрать куда его посылать используя одну из функций (mysqli-slave-query , mysqli-master-query ).
Собственное, всё вроде ясно. Нужно перебирать слой абстракции для БД и добавлять в нужное место вызовы этих самых функций, но возникает два вопроса:
1) Где и как указывать конфигурацию базы, к которой будет выполнятся запрос по slave_query и где и как указвать базу для master_query? Или же это будет сделано автоматически, а в настройках нужно лишь указать мастер?
2) Функции эти (mysqli_master_query, mysqli_slave_query) "This function has been DEPRECATED and REMOVED as of PHP 5.3.0."
Что позволяет надеятся на то, что процесс автоматизируют в 5.3.0 - соответственно вопрос - где бы почитать "как это будет"?
Ну и третий, более общий вопрос - может я чего не так понял?
Спасибо.