MySQL için Azure Veritabanı - Esnek Sunucu'da bağlantı sorunlarını giderme
MySQL Community Edition, bağlantıları her bağlantı için bir iş parçacığı kullanarak yönetir. Sonuç olarak, her kullanıcı bağlantısı mysqld işleminde ayrılmış bir işletim sistemi iş parçacığı alır.
Bu tür bağlantı işlemeyle ilgili olası sorunlar vardır. Örneğin, boşta bağlantılar olsalar bile çok sayıda kullanıcı bağlantısı varsa bellek kullanımı görece yüksektir. Ayrıca, binlerce kullanıcı bağlantısıyla çalışırken daha yüksek düzeyde iç sunucu çekişmesi ve bağlam değiştirme yükü vardır.
Yaygın bağlantı hatalarını tanılama
MySQL için Azure Veritabanı Esnek Sunucu örneğiniz bağlantı sorunları yaşadığında, ilgili üç katmandan herhangi birinde sorunlar olabileceğini unutmayın: istemci cihazı, ağ veya MySQL için Azure Veritabanı Esnek Sunucu örneğiniz.
Sonuç olarak, bağlantı hatalarını her tanılarken aşağıdakilerin tüm ayrıntılarını göz önünde bulundurmayı unutmayın:
- aşağıdakiler dahil olmak üzere istemci:
- Yapılandırma (şirket içi, Azure VM vb.) veya DBA makinesi).
- İşletim Sistemi.
- Yazılım ve sürümler.
- Bağlantı dizesi ve dahil edilen parametreler.
- Ağ topolojisi (aynı bölge? aynı AZ? güvenlik duvarı kuralları? yönlendirme).
- Kullanımdaysa bağlantı havuzu (parametreler ve yapılandırma).
Veritabanı bağlantı sorununun tek bir istemci cihazını mı yoksa birkaç istemci cihazını mı etkilediğini belirlemek de önemlidir. Hatalar birkaç istemciden yalnızca birini etkiliyorsa, sorun büyük olasılıkla bu istemcidedir. Ancak, tüm istemciler aynı hatayla karşılaşıyorsa, sorunun veritabanı sunucusu tarafında veya arasında ağ olması daha olasıdır.
Özellikle bir uygulama kısa bir süre içinde bağlantı dalgalanması açarsa, iş yükü aşırı yükleme olasılığını da göz önünde bulundurmayı unutmayın. Bunu araştırmak için "Toplam Bağlantılar", "Etkin Bağlantılar" ve "Durdurulan Bağlantılar" gibi ölçümleri kullanabilirsiniz.
bir istemci cihazından veya uygulamadan bağlantı kurduğunuzda, mysql'deki ilk önemli çağrı, IP adresine sağlanan uç noktadan DNS çevirisi gerçekleştiren getaddrinfo'ya yöneliktir. Adres alınamazsa, MySQL "HATA 2005 (HY000): Bilinmeyen MySQL sunucu konağı 'mysql-example.mysql.database.azure.com' (11)" ve sonundaki sayı (11, 110 vb.) gibi bir hata iletisi gösterir.
İstemci tarafı hatası 2.005 kodları
Aşağıdaki tabloda bazı istemci tarafı hata 2.005 kodları için hızlı başvuru notları görüntülenir.
ERROR 2005 kodu | Notlar |
---|---|
(11) "EAI_SYSTEM - sistem hatası" | İstemci tarafındaki DNS çözümlemesinde bir hata var. MySQL için Azure Veritabanı Esnek Sunucu sorunu değil. Sorun gidermek için istemci üzerinde dig/nslookup komutunu kullanın. |
(110) "ETIMEDOUT - Bağlantı zaman aşımına uğradı" | İstemcinin DNS sunucusuna bağlanırken zaman aşımı oluştu. MySQL için Azure Veritabanı Esnek Sunucu sorunu değil. Sorun gidermek için istemci üzerinde dig/nslookup komutunu kullanın. |
(0) "ad bilinmiyor" | Belirtilen ad, DNS tarafından çözümlenemedi. İstemcideki girişi denetleyin. Bu büyük olasılıkla MySQL için Azure Veritabanı Esnek Sunucu ile ilgili bir sorun değildir. |
mysql'deki ikinci çağrı yuva bağlantısıdır ve "HATA 2003 (HY000): 'mysql-example.mysql.database.azure.com' (111)" üzerindeki MySQL için Azure Veritabanı Esnek Sunucu'ya bağlanılamıyor, sonundaki numara (99, 110, 111, 113 vb.) gibi bir hata iletisine bakılır.
İstemci tarafı hatası 2.003 kodları
Aşağıdaki tabloda bazı istemci tarafı hata 2.003 kodları için hızlı başvuru notları görüntülenir.
ERROR 2003 kodu | Notlar |
---|---|
(99) "EADDRNOTAVAIL - İstenen adres atanamıyor" | Bu hata, istemci tarafında değil MySQL için Azure Veritabanı Esnek Sunucudan kaynaklanır. |
(110) "ETIMEDOUT - Bağlantı zaman aşımına uğradı" | Sağlanan IP adresine bağlanırken zaman aşımı oluştu. Büyük olasılıkla bir güvenlik (güvenlik duvarı kuralları) veya ağ (yönlendirme) sorunudur. Bu genellikle MySQL için Azure Veritabanı Esnek Sunucu ile ilgili bir sorun değildir. Sorun gidermek için istemci cihazında nc/telnet/TCPtraceroute komutunu kullanın. |
(111) "ECONNREFUSED - Bağlantı reddedildi" | Paketler hedef sunucuya ulaştı ancak sunucu bağlantıyı reddetti. Yanlış sunucuya veya yanlış bağlantı noktasına bağlanma girişimi yapılmış olabilir. Bu durum, hedef hizmetin (MySQL için Azure Veritabanı Esnek Sunucu) devre dışı kalması, yük devretmeden kurtarılması veya kilitlenme kurtarmasından geçmesi ve henüz bağlantıları kabul etmemesi ile de ilgili olabilir. Bu sorun istemci tarafında veya sunucu tarafında olabilir. Sorun gidermek için istemci cihazında nc/telnet/TCPtraceroute komutunu kullanın. |
(113) "EHOSTUNREACH - Ana bilgisayara ulaşılamıyor" | İstemci cihazının yönlendirme tablosu, veritabanı sunucusunun bulunduğu ağın yolunu içermez. İstemci cihazının ağ yapılandırmasını denetleyin. |
Diğer hata kodları
Veritabanı sunucusuyla ağ bağlantısı başarıyla kurulduktan sonra oluşan sorunlarla ilgili diğer bazı hata kodlarının hızlı başvuru notları aşağıdaki tabloda gösterilmektedir.
Hata Kodu | Notlar |
---|---|
HATA 2013: "MySQL sunucusuyla bağlantı kesildi" | Bağlantı kuruldu ancak daha sonra kesildi. MySQL olmayan bir şeye bağlantı denenirse (örneğin, bağlantı noktası 22'de SSH'ye bağlanmak için bir MySQL istemcisi kullanmak gibi) bu durum oluşabilir. Süper kullanıcı oturumu sonlandırırsa da bu durum oluşabilir. Veritabanı oturumu zaman aşımına uğradıysa da oluşabilir. Veya bağlantı kurulduktan sonra veritabanı sunucusundaki sorunları belirtebilir. Bu hata, istemci bağlantısının kullanım ömrü boyunca herhangi bir zamanda gerçekleşebilir. Veritabanında ciddi bir sorun olduğunu gösterebilir. |
HATA 1040 "Çok fazla bağlantı var" | Bağlı veritabanı istemcilerinin sayısı zaten yapılandırılan en fazla sayıda. Veritabanında neden bu kadar çok bağlantı kurulduğunun değerlendirmesi gerekir. |
HATA 1045 "Kullanıcı için erişim reddedildi" | İstemci yanlış bir kullanıcı adı veya parola sağladığından veritabanı erişimi reddetti. |
HATA 2006 "MySQL sunucusu kayboldu" | Önceki tabloda yer alan HATA 2013 "MySQL sunucusuyla bağlantı kesildi" girişine benzer. |
HATA 1317 "Sorgu yürütmesi kesintiye uğradı" | Birincil kullanıcı bağlantıyı değil sorguyu durdurduğunda istemcinin aldığı hata. |
HATA 1129 "'1.2.3.4' ana bilgisayarı çok sayıda bağlantı hatası nedeniyle engellendi" | 'mysqladmin flush-hosts' ile engellemeyi kaldırın" - Tek bir makinedeki tüm istemciler, bu makinenin bir istemcisi MySQL'e bağlanmak için birkaç kez yanlış protokolü kullanmayı denerse engellenir (MySQL bağlantı noktasına telneing bir örnektir). Hata iletisinde de belirtildiği gibi, sorunu temizlemek için veritabanının yönetici kullanıcısının çalışması FLUSH HOSTS; gerekir. |
Not
Bağlantı hataları hakkında daha fazla bilgi için MySQL için Azure Veritabanı Esnek Sunucu ile ilgili bağlantı sorunlarını araştırma blog gönderisine bakın.