Memecahkan masalah konektivitas di Azure Database for MySQL - Server Fleksibel

BERLAKU UNTUK: Azure Database for MySQL - Server Tunggal Database Azure untuk MySQL - Server Fleksibel

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

MySQL Community Edition mengelola koneksi menggunakan satu utas per koneksi. Hasilnya, setiap koneksi pengguna mendapatkan utas sistem operasi khusus dalam proses mysqld.

Ada potensi masalah yang terkait dengan jenis penanganan koneksi ini. Misalnya, penggunaan memori relatif tinggi jika ada sejumlah besar koneksi pengguna, bahkan jika koneksi diam. Selain itu, ada tingkat ketidakcocokan server internal dan overhead pengalihan konteks yang lebih tinggi saat bekerja dengan ribuan koneksi pengguna.

Mendiagnosis kesalahan konektivitas umum

Setiap kali instans Server fleksibel Azure Database for MySQL Anda mengalami masalah konektivitas, ingatlah bahwa masalah dapat terjadi di salah satu dari tiga lapisan yang terlibat: perangkat klien, jaringan, atau instans server fleksibel Azure Database for MySQL Anda.

Oleh karena itu, setiap kali Anda mendiagnosis kesalahan konektivitas, pastikan untuk mempertimbangkan detail lengkap dari:

  • Klien, termasuk:
    • Konfigurasi (lokal, Azure VM, dll. atau mesin DBA).
    • Sistem operasi.
    • Perangkat lunak dan versi.
  • String koneksi dan parameter apa pun yang disertakan.
  • Topologi jaringan (wilayah yang sama? AZ yang sama? aturan firewall? perutean).
  • Kumpulan koneksi (parameter dan konfigurasi), jika sedang digunakan.

Penting juga untuk menentukan apakah masalah konektivitas database memengaruhi satu perangkat klien atau beberapa perangkat klien. Jika kesalahan hanya memengaruhi salah satu dari beberapa klien, kemungkinan masalahnya adalah dengan klien tersebut. Namun, jika semua klien mengalami kesalahan yang sama, kemungkinan besar masalahnya ada di sisi server database atau dengan jaringan di antaranya.

Pastikan untuk mempertimbangkan potensi kelebihan beban kerja juga, terutama jika aplikasi membuka lonjakan koneksi dalam waktu yang sangat singkat. Anda dapat menggunakan metrik seperti “Total Connections”, “Active Connections”, dan “Aborted Connections” untuk menyelidiki hal ini.

Ketika Anda membangun konektivitas dari perangkat atau aplikasi klien, panggilan penting pertama di mysql adalah getaddrinfo, yang melakukan terjemahan DNS dari titik akhir yang disediakan ke alamat IP. Jika alamat gagal, MySQL menunjukkan pesan kesalahan seperti "ERROR 2005 (HY000): Unknown MySQL server host 'mysql-example.mysql.database.azure.com' (11)" dan angka di akhir (11, 110, dll.).

Kode 2005 kesalahan sisi klien

Catatan referensi cepat untuk beberapa kode kesalahan sisi klien 2005 muncul dalam tabel berikut.

Kode ERROR 2005 Catatan
(11) "EAI_SYSTEM - system error" Ada kesalahan pada resolusi DNS di sisi klien. Bukan masalah server fleksibel Azure Database for MySQL. Gunakan dig/nslookup pada klien untuk memecahkan masalah.
(110) "ETIMEDOUT - Connection timed out" Ada batas waktu yang menghubungkan ke server DNS klien. Bukan masalah server fleksibel Azure Database for MySQL. Gunakan dig/nslookup pada klien untuk memecahkan masalah.
(0) "name unknown" Nama yang ditentukan tidak dapat diselesaikan oleh DNS. Periksa input pada klien. Ini sangat mungkin bukan masalah dengan server fleksibel Azure Database for MySQL.

Panggilan kedua di mysql adalah dengan konektivitas soket dan ketika melihat pesan kesalahan seperti "KESALAHAN 2003 (HY000): Tidak dapat tersambung ke server fleksibel Azure Database for MySQL di 'mysql-example.mysql.database.azure.com' (111)", nomor pada akhirnya (99, 110, 111, 113, dll.).

Kode 2003 kesalahan sisi klien

Catatan referensi cepat untuk beberapa kode 2003 kesalahan sisi klien muncul dalam tabel berikut.

Kode ERROR 2003 Catatan
(99) "EADDRNOTAVAIL - Cannot assign requested address" Kesalahan ini tidak disebabkan oleh server fleksibel Azure Database for MySQL, melainkan berada di sisi klien.
(110) "ETIMEDOUT - Connection timed out" Ada batas waktu koneksi ke alamat IP yang diberikan. Kemungkinan masalah keamanan (aturan firewall) atau jaringan (perutean). Biasanya, ini bukan masalah dengan server fleksibel Azure Database for MySQL. Gunakan nc/telnet/TCPtraceroute pada perangkat klien untuk memecahkan masalah.
(111) "ECONNREFUSED - Connection refused" Sementara paket mencapai server target, server menolak koneksi. Ini mungkin merupakan upaya untuk tersambung ke server yang salah atau port yang salah. Ini juga mungkin terkait dengan layanan target (server fleksibel Azure Database for MySQL) sedang tidak berfungsi, pulih dari failover, atau melalui pemulihan crash, dan belum menerima koneksi. Masalah ini bisa berada di sisi klien atau sisi server. Gunakan nc/telnet/TCPtraceroute pada perangkat klien untuk memecahkan masalah.
(113) "EHOSTUNREACH - Host unreachable" Tabel perutean perangkat klien tidak menyertakan jalur ke jaringan tempat server database berada. Periksa konfigurasi jaringan perangkat klien.

Kode kesalahan lainnya

Catatan referensi cepat untuk beberapa kode kesalahan lain yang terkait dengan masalah yang terjadi setelah koneksi jaringan dengan server database berhasil dibuat muncul dalam tabel berikut.

Kode Galat Catatan
ERROR 2013 "Lost connection to MySQL server" Koneksi dibuat, tetapi hilang setelahnya. Hal ini dapat terjadi jika koneksi dicoba terhadap sesuatu yang bukan MySQL (seperti menggunakan klien MySQL untuk terhubung ke SSH pada port 22 misalnya). Ini juga dapat terjadi jika super user mematikan sesi. Ini juga dapat terjadi jika database kehabisan waktu sesi. Atau dapat merujuk ke masalah di server database, setelah koneksi dibuat. Hal ini dapat terjadi kapan saja selama masa pakai koneksi klien. Ini dapat menunjukkan bahwa database memiliki masalah serius.
ERROR 1040 "Terlalu banyak koneksi" Jumlah klien database yang tersambung sudah berada di angka maksimum yang dikonfigurasi. Perlu mengevaluasi mengapa begitu banyak koneksi dibuat terhadap database.
ERROR 1045 "Akses ditolak untuk pengguna" Klien memberikan nama pengguna atau kata sandi yang salah, sehingga database telah menolak akses.
ERROR 2006 "Server MySQL telah hilang" Mirip dengan entri ERROR 2013 "Koneksi hilang ke server MySQL" di tabel sebelumnya.
ERROR 1317 "Eksekusi kueri terganggu" Kesalahan yang diterima klien ketika pengguna utama menghentikan kueri, bukan koneksi.
ERROR 1129 "Host '1.2.3.4' diblokir karena banyak kesalahan koneksi” Buka blokir dengan 'mysqladmin flush-hosts'" - semua klien dalam satu komputer akan diblokir jika satu klien mesin tersebut mencoba beberapa kali menggunakan protokol yang salah untuk terhubung dengan MySQL (telnetting ke port MySQL adalah salah satu contoh). Seperti yang dikatakan pesan kesalahan, pengguna admin database harus menjalankan FLUSH HOSTS; untuk memecahkan masalah.

Catatan

Untuk informasi selengkapnya tentang kesalahan konektivitas, lihat posting blog Menyelidiki masalah koneksi dengan server fleksibel Azure Database for MySQL.

Langkah berikutnya

Untuk menemukan jawaban serekan atas pertanyaan Anda yang paling penting atau memposting atau menjawab pertanyaan, kunjungi Stack Overflow.