Я настроил два сервера MySQL с репликацией Master / Slave для базы данных drupal и подтвердил, что базы данных синхронизируются и реплицируются.
Сейчас я пытаюсь указать drupal на обе базы данных в основном для целей аварийного переключения / резервирования. То есть, если мне нужно перезагрузить наш основной сервер базы данных, я не хочу, чтобы наш сайт закрывался. (Переход только для чтения допустим в сценариях сбоев)
На основании следующей статьи . Я изменил settings.php
следующим образом:
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'sdrupal',
'username' => 'drupal',
'password' => 'topsecret',
'host' => 'masterdb.ptp.local',
);
$databases['default']['slave'][] = array(
'driver' => 'mysql',
'database' => 'sdrupal',
'username' => 'drupal',
'password' => 'topsecret',
'host' => 'slavedb.ptp.local',
);
Конфигурация в порядке, пока я не выключу мастер (остановка службы mysqld) - когда я это делаю, мой сайт рвет:
PDOException: SQLSTATE [HY000] [2013] Потерянное соединение с сервером MySQL при «чтении исходного пакета связи», системная ошибка: 111 в drupal_is_denied () (строка 1895 из /www/includes/bootstrap.inc). дополнительный
PDOException: SQLSTATE [HY000] [2013] Потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 111 в dblog_watchdog () (строка 141 из /www/modules/dblog/dblog.module).
Какой трюк, чтобы заставить это работать?