ฉันได้ติดตั้งเซิร์ฟเวอร์ MySQL สองเครื่องด้วยการจำลองแบบ Master / Slave สำหรับฐานข้อมูล drupal และฉันยืนยันว่าฐานข้อมูลนั้นซิงค์และทำซ้ำ
ตอนนี้ฉันกำลังพยายามชี้ drupal ไปยังฐานข้อมูลทั้งคู่โดยทั่วไปเพื่อวัตถุประสงค์ในการ failover / redundancy นั่นคือถ้าฉันต้องการรีบูตเซิร์ฟเวอร์ฐานข้อมูลหลักของฉันฉันไม่ต้องการให้เว็บไซต์ของเราล้มลง (การอ่านอย่างเดียวเป็นที่ยอมรับในสถานการณ์ความล้มเหลว)
บนพื้นฐานของบทความต่อไปนี้ ฉันแก้ไข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)
เคล็ดลับที่จะทำให้การทำงานนี้คืออะไร?