Drupal Master / गुलाम प्रतिकृति


10

मैंने ड्रूपल डेटाबेस के लिए मास्टर / स्लेव प्रतिकृति के साथ दो MySQL सर्वर सेटअप किए हैं और मैंने पुष्टि की है कि डेटाबेस सिंक और प्रतिकृति में हैं।

मैं अब मूल रूप से विफलता / अतिरेक उद्देश्यों के लिए दोनों डेटाबेसों के लिए ड्रुपल को इंगित करने की कोशिश कर रहा हूं। अगर मुझे हमारे प्राथमिक डेटाबेस सर्वर को रिबूट करने की आवश्यकता है तो मैं नहीं चाहता कि हमारी साइट नीचे जाए। (विफलता परिदृश्यों के दौरान केवल पढ़ने के लिए स्वीकार्य है)

निम्नलिखित लेख के आधार पर । मैंने 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 stop) - जब मैं ऐसा करता हूं तो मेरी साइट pukes:

PDOException: SQLSTATE [HY000] [2013] 'आरंभिक संचार पैकेट पढ़ने' पर MySQL सर्वर से कनेक्शन खो गया, सिस्टम त्रुटि: 111 में drupal_is_denied () (लाइन 1895/www/includes -bootstrap.inc की लाइन)। अतिरिक्त

PDOException: SQLSTATE [HY000] [2013] MySQL सर्वर से 'प्रारंभिक संचार पैकेट पढ़ने', सिस्टम त्रुटि: 111 में dblog_watchdog () (/ 141/modules/dlog/dblog.module की लाइन 141) पर कनेक्शन खो गया है।

यह काम करने के लिए क्या ट्रिक है?

जवाबों:


6

मास्टर / मास्टर (उच्च उपलब्धता) के बारे में लोड-बैलेंसिंग करना संभव है जब कोई मास्टर नीचे न हो।

निम्नलिखित सभी लेखों को मास्टर 1 में जाने देगा और सभी रीड्स मास्टर 2 पर जाएंगे। यदि मास्टर 1 विफल हो जाता है, तो सभी प्रश्न मास्टर 2 में जाएंगे। यदि मास्टर 2 विफल रहता है, तो सभी प्रश्न मास्टर 1 में जाएंगे।

'master' => array('master1', 'master2')
'slave' => array('master2', 'master1')

निम्नलिखित सभी प्रश्न मास्टर 1 में जाएंगे। यदि मास्टर 1 विफल हो जाता है तो सभी प्रश्न मास्टर 2 में जाएंगे:

'master' => array('master1', 'master2')
'slave' => array('master1', 'master2')

इस उत्तर के लिए धन्यवाद। मैं समझता हूं कि यह काफी पुराना है और पुराना हो सकता है। क्या आपके पास Drupal के नवीनतम संस्करण में समान लागू करने के लिए कोई सुझाव है?
गौरव ओझा

4

दूसरों के लाभ के लिए - जितना मैं पा सका हूं - उतने अच्छे से बाहर निकले हुए ड्रुपल 7 में कोई डेटाबेस उच्च उपलब्धता क्षमता नहीं है।

आप दो mysql सर्वर को एक मास्टर / स्लेव कॉन्फ़िगरेशन में सेट कर सकते हैं लेकिन सबसे अच्छा यह है कि सभी राइट्स को मास्टर को भेजें और सभी स्लेव को पढ़ता है। यह क्रूड लोड वितरण प्रदान करता है लेकिन फेलओवर नहीं

यह कहना है कि यदि मास्टर mysql सर्वर नीचे जाता है तो सभी दांव बंद हो जाते हैं - साइट एक बदसूरत त्रुटि संदेश के साथ नीचे जाती है जो शिकायत करती है कि PHP मास्टर डेटाबेस तक नहीं पहुंच सकता है।

परंपरागत रूप से, जैसा कि मैं समझता हूं, अन्य सॉफ़्टवेयर के साथ इससे निपटने का तरीका या तो mysql ndb क्लस्टर या mysql प्रॉक्सी का उपयोग करना है - लेकिन थोड़ा पढ़ने के बाद - ये प्रौद्योगिकियां स्पष्ट रूप से Drupal के साथ अच्छा नहीं खेलती हैं।

हालाँकि मैं ऑटो-स्लेव ( http://drupal.org/project/autoslave ) नामक एक ड्रुपल मॉड्यूल पर ठोकर खाई । यह व्यापक रूप से उपयोग नहीं किया जाता है (आंकड़े के अनुसार सक्रिय रूप से इसका उपयोग करने वाली 12 साइटें हैं) लेकिन ऐसा लगता है कि हम जो चाहते हैं वह करने में सक्षम हैं। इसे विभिन्न तरीकों से कॉन्फ़िगर किया जा सकता है:

प्रमुख अधीन

Writes go to Master
Reads go to Slave

Drawbacks:
If master is down, the durpal site displays a prominent message that the site is in "read only" mode.

मास्टर / मास्टर (उच्च उपलब्धता)

Read and Writes go to master1 (primary) unless its unavailable.
If master1 is unavailable, reads and writes go to master2 (secondary)

Drawbacks:
There is no load distribution. All load (reads and writes) go to either master1 or to master2

मास्टर / मास्टर / दास (उच्च उपलब्धता / उच्च प्रदर्शन)

Writes go to Master1 (primary) unless its down then they go to Master2
Reads go to the slave unless its down
Drawbacks:
Requires a minimum of three database servers (master/master/slave)

अब तक हमने पहला (मास्टर / दास) सफलतापूर्वक सेटअप किया है। मैं अगले मास्टर / मास्टर / दास को सेटअप करने का प्रयास करने जा रहा हूं।

उम्मीद है कि यह किसी और की मदद करता है।


इससे मदद मिली। :)
एसाफवान 15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.