2017-06-19 40 views
5

मैं Google क्लाउड एसक्यूएल में एक PHP ऐप (गूगल क्लाउड प्लेटफार्म के बाहर एक सर्वर से) से कनेक्ट करना चाहता हूं। मैं जानना चाहता हूं कि मैं ऐप को अपने डेटाबेस को ठीक से विफल करने के लिए कैसे डिज़ाइन कर सकता हूं।Google क्लाउड एसक्यूएल पर कैसे विफलता काम करता है?

manual के अनुसार:

एक जोनल आउटेज होता है और अपने गुरु अपने विफलता प्रतिकृति के लिए खत्म करती है, तो उदाहरण के लिए किसी भी मौजूदा कनेक्शन बंद हो जाती हैं। हालांकि, आपका एप्लिकेशन उसी कनेक्शन स्ट्रिंग या आईपी पते का उपयोग करके पुनः कनेक्ट कर सकता है; विफलता के बाद आपको अपने एप्लिकेशन को अपडेट करने की आवश्यकता नहीं है।

ऐसा लगता है कि दृश्यों के पीछे स्वचालित रूप से सबकुछ खुश हो रहा है लेकिन क्या होगा यदि डेटाबेस का आईपी पता बाहर या बाहर हो गया है?

+1

आईपी को विफलता के बाद नए इंस्टेंस में ले जाया जाएगा। ऐप में कुछ भी नहीं होने की जरूरत है। – Vadim

उत्तर

0

गूगल here क्या बैक-एंड डेटाबेस सेवा प्रदान करने के उपयोग कर रहा है प्रकट नहीं करता है, लेकिन मेरा अनुमान है:

  • यह एक वर्चुअल IP कि ट्रैफिक की रूटिंग रहे हैं कनेक्टर में महारत हासिल करने का उपयोग कर रहा है, इसलिए जब गुरु विफल रहता है बैकअप वर्चुअल आईपी का विज्ञापन करना शुरू कर देगा, इससे आपका टीसीपी कनेक्शन विफल हो जाएगा।

टिप्पणी मतलब है कि आपका php.ini में mysqli.reconnect अपने PHP कोड स्वचालित रूप से बैकअप MySQL कनेक्टर से कनेक्ट जब विफलता होता है की अनुमति देने के लिए सक्षम होना चाहिए अगर। read here

यदि आपका mysqli.reconnect सक्षम है तो आपको किसी चीज़ के बारे में चिंता करने की ज़रूरत नहीं है।

संपादित करें: SQL लेनदेन के संबंध में उठाए गए प्रश्न के उत्तर में - निश्चित रूप से यह एक गड़बड़ होगी यदि एसक्यूएल लेनदेन कोड सावधानी के साथ लिखा नहीं गया है कि कनेक्शन लेनदेन के दौरान किसी भी समय डिस्कनेक्ट हो सकता है, ऐसे परिदृश्य को संभाला जाना चाहिए कोड। और जब ऑटो-प्रतिबद्धता सक्षम होती है और आप लेन-देन के भीतर नहीं होते हैं तो एक साधारण ऑटो-रीकनेक्ट लगभग किसी भी अन्य परिदृश्य को हल करेगा।

+0

कनेक्शन की सूची होने पर PHP की mysqli किसी लेनदेन को तोड़ देगा। यदि यह स्वचालित रूप से फिर से कनेक्ट हो जाता है, तो आंशिक लेनदेन रोलबैक होगा और एक नया लेनदेन शुरू किया जाएगा। यह _may_ एक गड़बड़ का कारण बनता है। आप ऑटो-रीकनेक्टिंग और असफल लेनदेन के रूप में इसका इलाज करने से बेहतर होंगे, और आपके _code_ लेनदेन को पुनरारंभ करें। –

+0

बेशक यह एक गड़बड़ होगी यदि SQL लेनदेन कोड सावधानी के साथ लिखा नहीं गया है कि कनेक्शन लेनदेन के दौरान किसी भी समय डिस्कनेक्ट हो सकता है, ऐसे परिदृश्य को कोड में संभाला जाना चाहिए। और जब ऑटो-प्रतिबद्धता सक्षम होती है और आप लेन-देन के भीतर नहीं होते हैं तो एक साधारण ऑटो-रीकनेक्ट लगभग किसी भी अन्य परिदृश्य को हल करेगा। –

+0

(मुझे इस धागे को पढ़ने वाले नौसिखियों को "निश्चित रूप से" इंगित करने की आवश्यकता महसूस हुई।) –

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