AndreyKl
Новичок
mysqli::disable_reads_from_master(), master, slave, как задать список слейвов?
Доброго времени суток.
Я уже задавал подобный вопрос, но ответа не было(да и вопрос был более туманным чем сейчас), посему, модераторы, пожалуйста, не переносите топик в mysql-php. Тут вроде народу побольше, может быть кто подскажет.
Ситуация. База не вытягивает нагрузки. Есть возможность добавить сервер. Мне показалось что самый простой путь - настроить репликацию mysql и тем самым распределить нагрузку. Я настроил репликацию mysql master-slave (дело не шибко хитрое оказалось). Настроил и проверил. Репликация работает.
Осталось дело за малым. Есть код
Но он не обращается к слейву (смотрю по счётчику селектов на слейве). Видимо, это нормально, потому что не задано ни одного слейва (можно предположить что *_rpl_parse задействует какой-то автоматический механизм определения слейвов, но увы, я ничего этого не увидел). Вопрос, собственно: как задать слейв? Допустим, у меня слейв на 192.168.0.41...
Я не знаю что думать.
Приходит в голову лишь сделать несколько соединений и читать в нужный момент с нужного. Вроде такого:
Но мне думается должен быть способ использовать функции (dis|en)able_reads_from_master. Никто не посоветует? В мануале пусто. Гугл молчит.. видимо спрашивать не умею.
Спасибо.
Доброго времени суток.
Я уже задавал подобный вопрос, но ответа не было(да и вопрос был более туманным чем сейчас), посему, модераторы, пожалуйста, не переносите топик в mysql-php. Тут вроде народу побольше, может быть кто подскажет.
Ситуация. База не вытягивает нагрузки. Есть возможность добавить сервер. Мне показалось что самый простой путь - настроить репликацию mysql и тем самым распределить нагрузку. Я настроил репликацию mysql master-slave (дело не шибко хитрое оказалось). Настроил и проверил. Репликация работает.
Осталось дело за малым. Есть код
PHP:
<?php
$db = new mysqli( '127.0.0.1', 'root', 'secr', 'base' );
$q = "SELECT s_email FROM Account";
if( $db->enable_rpl_parse() ) {
echo "<br>rpl parser enabled<br>";
}
if( $db->disable_reads_from_master() ) {
echo '<br>reads from master disabled<br>';
}
$stmt = $db->prepare( $q );
$stmt->execute();
$stmt->bind_result( $email );
echo '<table>';
while( $stmt->fetch() ) {
echo "<tr><td>$email</td></tw>";
}
echo '</table>';
?>
Я не знаю что думать.
Приходит в голову лишь сделать несколько соединений и читать в нужный момент с нужного. Вроде такого:
PHP:
$slaves = array();
function get_round_robin_slave() {//просто пример..
global $slaves;
return $slave[0];
}
$master = new mysqli( '127.0.0.1', 'root', 'secr', 'base' );
$slaves[0] = new mysqli( '192.168.0.41', 'root', 'secr', 'base' );
$q = "SELECT s_email FROM Account";
$s = get_round_robin_slave();
$stmt = $s->prepare( $q );
$stmt->execute();
$stmt->bind_result( $email );
echo '<table>';
while( $stmt->fetch() ) {
echo "<tr><td>$email</td></tw>";
}
echo '</table>';
Спасибо.