Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एडब्ल्यूएस वीपीसी आरडीएस उदाहरण से कनेक्ट करने में असमर्थ (mysql या postgres)

उन लोगों के लिए अतिरिक्त जानकारी जो RDS या RedShift से कनेक्ट करने का प्रयास करते हुए समान समस्याओं का सामना कर सकते हैं:

1) सुरक्षा समूहों की जांच करें

आरडीएस इंस्टेंस के लिए सुरक्षा समूह को सत्यापित करें कि आपके स्रोत सर्वर से संबंधित सुरक्षा समूह से पहुंच की अनुमति मिलती है (या इसका आईपी सीधे एडब्ल्यूएस से बाहरी होने पर जोड़ा जाता है)। आप जिस सुरक्षा समूह को देख रहे हैं, वह RDS कंसोल UI ("सुरक्षा समूह" नाम दिया गया है) से RDS इंस्टेंस विशेषताओं में निर्दिष्ट है।

नोट :डेटाबेस सुरक्षा समूह AWS EC2 सुरक्षा समूहों से भिन्न हो सकते हैं। यदि आपका आरडीएस इंस्टेंस क्लासिक/सार्वजनिक ईसी 2 में है, तो आपको आरडीएस यूआई के "डेटाबेस सुरक्षा समूह" अनुभाग में जांच करनी चाहिए। VPC उपयोगकर्ताओं के लिए, सुरक्षा समूह एक सामान्य VPC सुरक्षा समूह होगा (नाम sg-xxx को RDS इंस्टेंस की विशेषताओं में सूचीबद्ध किया जाएगा)।

2) पुष्टि करें कि DNS कोई समस्या नहीं है।

अमेज़ॅन स्प्लिट डीएनएस का उपयोग करता है, इसलिए एडब्ल्यूएस के लिए बाहरी डीएनएस लुकअप सार्वजनिक आईपी लौटाएगा जबकि एडब्ल्यूएस के लिए आंतरिक लुकअप एक निजी आईपी लौटाएगा। यदि आपको संदेह है कि यह एक DNS समस्या है, तो क्या आपने पुष्टि की है कि अलग-अलग उपलब्धता क्षेत्रों से अलग-अलग आईपी वापस आ गए हैं? अगर अलग-अलग AZ को अलग-अलग IP मिलते हैं, तो आपको AWS सपोर्ट से संपर्क करना होगा।

3) सॉकेट कनेक्शन स्थापित करके नेटवर्क कनेक्टिविटी की पुष्टि करें।

ट्रेसपाथ और ट्रेसरआउट जैसे टूल संभवतः मदद नहीं करेंगे क्योंकि आरडीएस वर्तमान में आईसीएमपी ट्रैफ़िक को कम करता है।

पोर्ट 3306 (mysql, या 5432 पोस्टग्रेज के लिए) पर RDS इंस्टेंस के लिए सॉकेट कनेक्शन स्थापित करने का प्रयास करके पोर्ट कनेक्टिविटी का परीक्षण करें। आरडीएस इंस्टेंस के आईपी को ढूंढकर और टेलनेट या एनसी का उपयोग करके शुरू करें (यदि एडब्ल्यूएस के भीतर से कनेक्ट हो रहा है तो आंतरिक/निजी आईपी का उपयोग करना सुनिश्चित करें):

telnet x.x.x.x 3306
nc -vz x.x.x.x 3306

क) यदि आपका कनेक्शन प्रयास सफल नहीं होता है और तुरंत विफल हो जाता है, तो पोर्ट के अवरुद्ध होने की संभावना है या दूरस्थ होस्ट उस पोर्ट पर कोई सेवा नहीं चला रहा है। आगे समस्या निवारण के लिए आपको AWS समर्थन संलग्न करने की आवश्यकता हो सकती है। यदि एडब्ल्यूएस के बाहर से कनेक्ट हो रहा है, तो पहले एडब्ल्यूएस के अंदर किसी अन्य इंस्टेंस से कनेक्ट करने का प्रयास करें (क्योंकि आपका फ़ायरवॉल उन कनेक्शनों को अवरुद्ध कर सकता है)।

ख) यदि आपका कनेक्शन सफल नहीं होता है और आपको टाइमआउट मिलता है, तो संभवत:फ़ायरवॉल द्वारा पैकेट को गिराया/अनदेखा किया जा रहा है या पैकेट किसी भिन्न नेटवर्क पथ पर वापस आ रहे हैं। आप netstat -an | grep SYN (एक अलग ssh सत्र से telnet/nc कमांड के टाइमआउट की प्रतीक्षा करते हुए)।

SYN स्थिति में कनेक्शन का मतलब है कि आपने एक कनेक्शन अनुरोध भेजा है, लेकिन कुछ भी वापस नहीं मिला है (SYN_ACK या अस्वीकार/ब्लॉक)। आमतौर पर इसका मतलब है कि फ़ायरवॉल या सुरक्षा समूह पैकेटों को अनदेखा कर रहा है या छोड़ रहा है।

यह NAT रूटिंग या कई इंटरफेस से कई पथों के साथ भी एक समस्या हो सकती है। यह सुनिश्चित करने के लिए जांचें कि आप अपने होस्ट और RDS इंस्टेंस के बीच iptables या NAT गेटवे का उपयोग नहीं कर रहे हैं। अगर आप वीपीसी में हैं, तो यह भी सुनिश्चित करें कि आप स्रोत होस्ट से बाहर निकलने/बाहर जाने वाले ट्रैफ़िक की अनुमति देते हैं।

सी) यदि आपका सॉकेट कनेक्शन परीक्षण सफल रहा, लेकिन आप एक mysql क्लाइंट (CLI, कार्यक्षेत्र, ऐप, आदि) से कनेक्ट नहीं हो सकते हैं, तो नेटस्टैट के आउटपुट पर एक नज़र डालें कि कनेक्शन किस स्थिति में है (x.x.x.x को इसके साथ बदलें) आरडीएस इंस्टेंस का वास्तविक आईपी पता):

netstat -an | grep x.x.x.x

यदि आप टेलनेट या एनसी का उपयोग करते समय एक कनेक्शन स्थापित कर रहे थे, लेकिन आप mysql क्लाइंट का उपयोग करते समय 'SYN' स्थिति देखते हैं, तो आप एक MTU समस्या में चल रहे होंगे।

आरडीएस, जिस समय यह लिखा गया है, पीएमटीयूडी के लिए इस्तेमाल किए गए आईसीएमपी पैकेट का समर्थन नहीं कर सकता है (https:/ /en.wikipedia.org/wiki/Path_MTU_Discovery#Problems_with_PMTUD ) यह एक समस्या हो सकती है यदि आप क्लासिक लिंक के माध्यम से क्लासिक ec2 इंस्टेंस से वीपीसी में आरडीएस या रेडशिफ्ट तक पहुंचने का प्रयास कर रहे हैं। निम्नलिखित के साथ एमटीयू को कम करने का प्रयास करें, फिर दोबारा परीक्षण करें:

sudo ip link show
# take note of the current MTU (likely 1500 or 9001)
sudo ip link set dev eth0 mtu 1400

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

अगर यह काम नहीं करता है, तो अपने एमटीयू को डिफ़ॉल्ट पर वापस सेट करें और आगे की समस्या निवारण के लिए एडब्ल्यूएस समर्थन संलग्न करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट का उपयोग करके संग्रहीत प्रक्रिया के माध्यम से एकाधिक तालिका इकाइयां प्राप्त करने में असमर्थ

  2. MyISAM बनाम InnoDB त्वरित सम्मिलन और एक समग्र अद्वितीय कुंजी के लिए

  3. एक निश्चित तिथि से पहले रिकॉर्ड हटाना

  4. पीडीओ - lastInsertId () एकाधिक पंक्तियों के साथ क्वेरी सम्मिलित करने के लिए

  5. दो तालिकाओं से डेटाटाइम फ़ील्ड की तुलना करने वाला नवीनतम डेटा प्राप्त करें