Skonfigurowałem dwa serwery MySQL z replikacją Master / Slave dla bazy danych drupal i potwierdziłem, że bazy danych są zsynchronizowane i replikują się.
Usiłuję teraz wskazać drupal na obie bazy danych w zasadzie w celu przełączenia awaryjnego / redundancji. To znaczy, jeśli muszę zrestartować nasz główny serwer bazy danych, nie chcę, aby nasza strona uległa awarii. (Przejście tylko do odczytu jest dopuszczalne podczas scenariuszy awarii)
Na podstawie następującego artykułu . Zmodyfikowałem settings.php
w następujący sposób:
$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',
);
Konfiguracja jest w porządku, dopóki nie zamknę master (usługa mysqld stop) - kiedy to zrobię, moja strona pukuje:
PDOException: SQLSTATE [HY000] [2013] Utracono połączenie z serwerem MySQL podczas „odczytu początkowego pakietu komunikacyjnego”, błąd systemowy: 111 w drupal_is_denied () (wiersz 1895 /www/include/bootstrap.inc). Dodatkowy
PDOException: SQLSTATE [HY000] [2013] Utracono połączenie z serwerem MySQL podczas „odczytu początkowego pakietu komunikacyjnego”, błąd systemowy: 111 w dblog_watchdog () (wiersz 141 /www/modules/dblog/dblog.module).
Jaka jest sztuczka, aby to zadziałało?