5

मैं विकास में रेल 4.0.2 के साथ इस महान मणि ऑक्टोपस का परीक्षण कर रहा हूं।रेल ऑक्टोपस जेम - दास नीचे होने पर मास्टर-स्लेव प्रतिकृति कनेक्शन व्यवहार

मैं इस प्रकार एक दास db और कॉन्फ़िगर ऑक्टोपस बनाया (config> shards.yml):

octopus: 
    environments: 
    - development 
    replicated: true 
    fully_replicated: true 
    verify_connection: true 
    development: 
    slave1: 
     host: 192.168.1.12 
     adapter: mysql2 
     username: slave_reader 
     password: my_password 
     database: my_server_development 
     reconnect: true 

यह बहुत अच्छा काम करता है दास से पढ़ रहे हैं और मास्टर करने के लिए लिख, फिर भी अगर मेरे दास सर्वर डाउन है, मैं इसे मास्टर डाटाबेस को अनुप्रेषित और सामग्री प्राप्त करने की उम्मीद है, लेकिन कुछ समय की कोशिश कर के बाद, यह त्रुटि फेंकता है:

Can't connect to MySQL server on '192.168.1.12' (113)

क्या मैं अगर db मेरे गुरु के लिए ऑक्टोपस देखो बनाने के लिए क्या कर सकते हैं दास सर्वर बंद हो गया है?

अग्रिम धन्यवाद!

+1

मुझे ऑक्टोपस के बारे में पता नहीं है लेकिन मकर के पास गुलाम विफलता है https://github.com/taskrabbit/makara –

+0

@ मॉरिसियो - क्या आप यहां मेरे प्रश्न का उत्तर दे सकते हैं http://stackoverflow.com/questions/29445495/rails- कैसे-टू-स्प्लिट-राइट-रीड-क्वेरी-भर-मास्टर-गुलाम-डेटाबेस? noredirect = 1 # comment47064893_29445495 –

उत्तर

2

जैसा कि मैंने this blog post में पढ़ा है, एक पावर-ऑफ या उत्तरदायी दास एप्लिकेशन विफलताओं का कारण बन सकता है क्योंकि ऑक्टोपस का डिफ़ॉल्ट व्यवहार मास्टर को सभी डेटा लिखना और दासों से सभी डेटा पढ़ना है (जैसा कि मास्टर को लिखा गया डेटा दोहराया गया है सभी जुड़े गुलामों के लिए)। जैसा कि Octopus wiki, "Multiple slaves" section पर कहा गया है, एक से अधिक दास वातावरण में पढ़ना राउंड रॉबिन का उपयोग करके किया जाता है, इसलिए यह प्रति डिफ़ॉल्ट रूप से दास से डेटा पुनर्प्राप्त कर रहा है।

उपर्युक्त ब्लॉग से भी लिया गया: फॉलबैक तंत्र के रूप में आपको सीधे मास्टर से डेटा पढ़ना चाहिए (.using(:master) का उपयोग करके) यदि स्लेव नोड्स में से कोई भी उपलब्ध नहीं है या डेटा अभी तक दासों को पूरी तरह से दोहराया नहीं गया है। डेटाबेस नोड्स से बार-बार पढ़ने को रोकने के लिए यह परिवर्तन/परिणाम अनुप्रयोग-वार कैश करने का विकल्प भी हो सकता है।

+0

तो निष्कर्ष यह है कि मणि के लिए स्वचालित रूप से ऐसा करने के लिए कोई कॉन्फ़िगरेशन नहीं है? आपके द्वारा उपयोग किए जाने वाले किसी भी विकल्प मणि में यह गुलाम विफलता सुविधा है? –

+2

मैंने अभी तक इसका उपयोग नहीं किया है लेकिन एसडीपी, [सीमलेस डाटाबेस पूलिंग] (https://github.com/wbharding/seamless_database_pool), ऐसा लगता है कि आपको क्या देखना चाहिए। [यह ब्लॉग पोस्ट] (http://www.williambharding.com/blog/rails/rails-3-slave-डेटाबेस- विकल्प- कहीं-are-two/) ऑक्टोपस से एसडीपी की तुलना करता है और नीचे की रेखा के रूप में आप इसे पढ़ लेंगे एसडीपी ऑक्टोपस में फेलओवर कार्यक्षमता की कमी के कारण बनाया गया था। मेरा जवाब स्वीकार करने के लिए धन्यवाद! – SaschaM78

संबंधित मुद्दे