Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pemantauan MySQL yang Efektif Dengan Dasbor SCUMM:Bagian Satu

Kami menambahkan sejumlah dasbor baru untuk MySQL dalam rilis terbaru ClusterControl 1.7.0. - dan di blog kami sebelumnya, kami menunjukkan Cara Memantau ProxySQL Anda dengan Prometheus dan ClusterControl.

Di blog ini, kita akan melihat dasbor Ikhtisar MySQL.

Jadi, kami telah mengaktifkan Pemantauan Berbasis Agen di bawah tab Dasbor untuk mulai mengumpulkan metrik ke node. Perhatikan bahwa saat mengaktifkan Pemantauan Berbasis Agen, Anda memiliki opsi untuk menyetel “Interval Pengikisan (detik) ” dan “Retensi data (hari) ”. Scraping Interval adalah saat Anda ingin mengatur seberapa agresif Prometheus akan mengumpulkan data dari target dan Retensi Data adalah berapa lama Anda ingin menyimpan data yang dikumpulkan oleh Prometheus sebelum dihapus.

Saat diaktifkan, Anda dapat mengidentifikasi cluster mana yang memiliki agen dan mana yang memiliki pemantauan tanpa agen.

Dibandingkan dengan pendekatan tanpa agen, perincian data Anda dalam grafik akan lebih tinggi dengan agen.

Grafik MySQL

Versi terbaru dari ClusterControl 1.7.0 (yang dapat Anda unduh secara gratis - Komunitas ClusterControl) memiliki Dasbor MySQL berikut yang dapat Anda gunakan untuk mengumpulkan informasi untuk server MySQL Anda. Ini adalah Ikhtisar MySQL, Metrik InnoDB MySQL, Skema Kinerja MySQL, dan Replikasi MySQL.

Kami akan membahas secara detail grafik yang tersedia di dasbor Ikhtisar MySQL.

Dasbor Ikhtisar MySQL

Dasbor ini berisi variabel atau informasi penting yang biasa mengenai kesehatan node MySQL Anda. Grafik yang terdapat pada dasbor ini khusus untuk simpul yang dipilih saat melihat dasbor seperti yang terlihat di bawah ini:

Ini terdiri dari 26 grafik, tetapi Anda mungkin tidak memerlukan semua ini saat mendiagnosis masalah. Namun, grafik ini memberikan representasi penting dari metrik keseluruhan untuk server MySQL Anda. Mari kita bahas yang dasar, karena ini mungkin hal paling umum yang akan dilihat oleh DBA secara rutin.

Empat grafik pertama yang ditunjukkan di atas bersama dengan waktu aktif MySQL, kueri per detik, dan informasi kumpulan buffer adalah petunjuk paling dasar yang mungkin kita perlukan. Dari grafik yang ditampilkan di atas, berikut adalah representasinya:

  • Koneksi MySQL
    Di sinilah Anda ingin memeriksa total koneksi klien Anda sejauh ini dialokasikan dalam jangka waktu tertentu.
  • Aktivitas Utas Klien MySQL
    Ada kalanya server MySQL Anda bisa sangat sibuk. Misalnya, mungkin diharapkan menerima lonjakan lalu lintas pada waktu tertentu, dan Anda ingin memantau aktivitas utas yang sedang berjalan. Grafik ini sangat penting untuk dilihat. Ada kalanya kinerja kueri Anda bisa berubah jika, misalnya, pembaruan besar menyebabkan utas lain menunggu untuk mendapatkan kunci. Ini akan menyebabkan peningkatan jumlah utas Anda yang sedang berjalan. Tingkat kesalahan cache dihitung sebagai Threads_created/Connections.
  • Pertanyaan MySQL
    Ini adalah kueri yang berjalan dalam jangka waktu tertentu. Sebuah utas mungkin merupakan transaksi yang terdiri dari beberapa kueri dan ini bisa menjadi grafik yang bagus untuk dilihat.
  • Tembolok Utas MySQL
    Grafik ini menunjukkan nilai thread_cache_size, thread yang di-cache (thread yang digunakan kembali), dan thread yang dibuat (thread baru). Anda dapat memeriksa grafik ini untuk kasus seperti Anda perlu menyetel kueri baca Anda saat melihat jumlah koneksi masuk yang tinggi dan utas yang Anda buat meningkat dengan cepat. Misalnya, jika Threads_running / thread_cache_size> 2 maka meningkatkan thread_cache_size Anda dapat memberikan peningkatan kinerja ke server Anda. Perhatikan bahwa pembuatan dan penghancuran utas itu mahal. Namun, dalam versi MySQL terbaru (>=5.6.8), variabel ini memiliki ukuran otomatis secara default yang mungkin Anda anggap tidak tersentuh.

Empat grafik berikutnya adalah MySQL Temporary Objects, MySQL Select Types, MySQL Sorts, dan MySQL Slow Query. Grafik ini terkait satu sama lain khususnya jika Anda mendiagnosis kueri yang berjalan lama dan kueri besar yang memerlukan pengoptimalan.

  • Objek Sementara MySQL
    Grafik ini akan menjadi sumber yang baik untuk diandalkan jika Anda ingin memantau kueri yang berjalan lama yang akan berakhir dengan menggunakan disk alih-alih tabel atau file sementara yang disimpan di memori. Ini adalah tempat yang baik untuk mulai mencari kemunculan kueri secara berkala yang dapat menambah masalah ruang disk terutama selama waktu-waktu yang tidak biasa.
  • Jenis Pilihan MySQL
    Salah satu sumber kinerja buruk adalah kueri yang menggunakan gabungan penuh, pemindaian tabel, rentang pilih yang tidak menggunakan indeks apa pun. Grafik ini akan menunjukkan bagaimana kinerja kueri Anda dan apa di antara daftar dari gabungan penuh, hingga gabungan penuh, rentang pilih, pemindaian tabel memiliki tren tertinggi.
  • Pengurutan MySQL
    Mendiagnosis kueri yang menggunakan pengurutan, dan kueri yang membutuhkan banyak waktu untuk diselesaikan.
  • Kueri Lambat MySQL
    Tren kueri lambat Anda dikumpulkan di sini dalam grafik ini. Ini sangat berguna terutama dalam mendiagnosis seberapa sering kueri Anda lambat. Apa saja hal-hal yang perlu disetel? Itu bisa berupa kumpulan buffer yang terlalu kecil, tabel yang tidak memiliki indeks dan melakukan pemindaian tabel penuh, pencadangan logis yang berjalan pada jadwal yang tidak terduga, dll. Menggunakan Monitor Kueri kami di ClusterControl bersama dengan grafik ini bermanfaat, karena membantu menentukan kueri yang lambat.

Grafik berikutnya yang kami bahas lebih banyak tentang aktivitas jaringan, penguncian tabel, dan memori internal mendasar yang digunakan MySQL selama aktivitas MySQL.

  • Koneksi Dibatalkan MySQL
    Jumlah koneksi yang dibatalkan akan ditampilkan pada grafik ini. Ini mencakup klien yang dibatalkan seperti di mana jaringan ditutup secara tiba-tiba atau di mana koneksi internet terputus atau terputus. Itu juga mencatat koneksi yang dibatalkan atau upaya seperti kata sandi yang salah atau paket yang buruk saat membuat koneksi dari klien.
  • Penguncian Tabel MySQL
    Tren untuk tabel yang meminta kunci tabel yang telah diberikan segera dan untuk tabel yang meminta kunci yang belum segera diperoleh. Misalnya, jika Anda memiliki kunci tingkat tabel pada tabel MyISAM dan permintaan masuk dari tabel yang sama, ini tidak dapat langsung diberikan.
  • Lalu Lintas Jaringan MySQL
    Grafik ini menunjukkan tren aktivitas jaringan inbound dan outbound di server MySQL. "Inbound" adalah data yang diterima oleh server MySQL sedangkan "Outbound" adalah data yang dikirim atau ditransfer oleh server dari server MySQL. Grafik ini paling baik untuk diperiksa jika Anda ingin memantau lalu lintas jaringan Anda terutama ketika mendiagnosis jika lalu lintas Anda moderat tetapi Anda bertanya-tanya mengapa ia memiliki data transfer keluar yang sangat tinggi, seperti misalnya, data BLOB.
  • Penggunaan Jaringan MySQL Setiap Jam
    Sama seperti trafik jaringan yang menunjukkan data Diterima dan Terkirim. Perhatikan bahwa ini didasarkan pada 'per jam' dan diberi label dengan 'hari terakhir' yang tidak akan mengikuti periode waktu yang Anda pilih di pemilih tanggal.
  • Ikhtisar Memori Internal MySQL
    Grafik ini familiar untuk DBA MySQL berpengalaman. Masing-masing legenda dalam grafik batang ini sangat penting terutama jika Anda ingin memantau penggunaan memori, penggunaan kumpulan buffer, atau ukuran indeks hash adaptif Anda.

Grafik berikut menunjukkan penghitung yang dapat diandalkan oleh DBA seperti memeriksa statistik misalnya, statistik untuk pemilihan, penyisipan, pembaruan, jumlah status master yang telah dieksekusi, jumlah SHOW VARIABLES yang telah dieksekusi, centang jika Anda memiliki kueri yang buruk, lakukan pemindaian tabel atau tabel yang tidak menggunakan indeks dengan melihat ke penghitung read_*, dll.


  • Penghitung Perintah Teratas (Per Jam)
    Ini adalah grafik yang mungkin harus Anda periksa setiap kali Anda ingin melihat statistik untuk sisipan, penghapusan, pembaruan, perintah yang dijalankan seperti mengumpulkan daftar proses, status budak, status pertunjukan (statistik kesehatan server MySQL ), dan masih banyak lagi. Ini adalah tempat yang baik jika Anda ingin memeriksa jenis penghitung perintah MySQL apa yang paling atas dan jika beberapa penyetelan kinerja atau pengoptimalan kueri diperlukan. Ini juga memungkinkan Anda untuk mengidentifikasi perintah mana yang berjalan agresif saat tidak membutuhkannya.
  • Penangan MySQL
    Seringkali, DBA akan memeriksa penangan ini dan memeriksa bagaimana kinerja kueri di server MySQL Anda. Pada dasarnya, grafik ini mencakup penghitung dari Handler API MySQL. Penghitung penangan yang paling umum untuk DBA untuk API penyimpanan di MySQL adalah Handler_read_first, Handler_read_key, Handler_read_last, Handler_read_next, Handler_read_prev, Handler_read_rnd, dan Handler_read_rnd_next. Ada banyak Penangan MySQL untuk diperiksa. Anda dapat membacanya di dokumentasi di sini.
  • Penangan Transaksi MySQL
    Jika server MySQL Anda menggunakan transaksi XA, pernyataan SAVEPOINT, ROLLBACK TO SAVEPOINT. Maka grafik ini adalah referensi yang bagus untuk dilihat. Anda juga dapat menggunakan grafik ini untuk memantau semua komitmen internal server Anda. Perhatikan bahwa penghitung untuk Handler_commit tidak bertambah bahkan untuk pernyataan SELECT tetapi berbeda dengan pernyataan insert/update/delete yang masuk ke log biner selama panggilan ke pernyataan COMMIT.

Grafik berikutnya akan menunjukkan tren tentang status proses dan penggunaan per jamnya. Ada banyak poin penting di sini dalam legenda grafik batang yang akan diperiksa oleh DBA. Menghadapi masalah ruang disk, masalah koneksi, dan melihat apakah kumpulan koneksi Anda berfungsi seperti yang diharapkan, I/O disk tinggi, masalah jaringan, dll.

  • Status Proses/Status Proses Teratas Setiap Jam
    Grafik ini adalah tempat Anda dapat memantau status utas teratas dari kueri Anda yang berjalan di daftar proses. Ini sangat informatif dan membantu untuk tugas DBA semacam itu di mana Anda dapat memeriksa di sini semua status luar biasa yang perlu diselesaikan. Misalnya, membuka tabel keadaan sangat tinggi dan nilai minimumnya hampir mendekati nilai maksimum. Ini bisa menunjukkan bahwa Anda perlu menyesuaikan table_open_cache. Jika statistik tinggi dan Anda melihat server Anda melambat, ini dapat menunjukkan bahwa server Anda terikat pada disk dan Anda mungkin perlu mempertimbangkan untuk meningkatkan kumpulan buffer Anda. Jika Anda memiliki banyak membuat tabel tmp maka Anda mungkin harus memeriksa log lambat Anda dan mengoptimalkan kueri yang menyinggung. Anda dapat memeriksa manual untuk daftar lengkap status utas MySQL di sini.

Grafik berikutnya yang akan kita periksa adalah tentang cache kueri, cache definisi tabel MySQL, seberapa sering MySQL membuka file sistem.


  • Memori/Aktivitas Tembolok Kueri MySQL
    Grafik-grafik ini saling berhubungan. Jika Anda memiliki query_cache_size <> 0 dan query_cache_type <> 0, maka grafik ini dapat membantu. Namun, dalam versi MySQL yang lebih baru, cache kueri telah ditandai sebagai tidak digunakan lagi karena cache kueri MySQL diketahui menyebabkan masalah kinerja. Anda mungkin tidak membutuhkan ini di masa depan. Versi terbaru MySQL 8.0 memiliki peningkatan drastis; cenderung meningkatkan kinerja karena dilengkapi dengan beberapa strategi untuk menangani informasi cache di buffer memori.
  • Pembukaan File MySQL
    Grafik ini menunjukkan tren untuk file yang dibuka sejak server MySQL uptime tetapi tidak termasuk file seperti soket atau pipa. Itu juga tidak termasuk file yang dibuka oleh mesin penyimpanan karena mereka memiliki penghitung sendiri yaitu Innodb_num_open_files.
  • File Buka MySQL
    Grafik ini adalah tempat Anda ingin memeriksa file InnoDB yang saat ini dibuka, file MySQL yang dibuka saat ini, dan variabel open_files_limit Anda.
  • Status Cache Terbuka Tabel MySQL
    Jika Anda memiliki set table_open_cache yang sangat rendah di sini, grafik ini akan memberi tahu Anda tentang tabel-tabel yang gagal dalam cache (tabel yang baru dibuka) atau hilang karena meluap. Jika Anda menemukan jumlah yang tinggi atau terlalu banyak status "Membuka tabel" di daftar proses Anda, grafik ini akan berfungsi sebagai referensi Anda untuk menentukan ini. Ini akan memberi tahu Anda jika ada kebutuhan untuk meningkatkan variabel table_open_cache Anda.
  • Tabel Terbuka MySQL
    Sehubungan dengan Status Open Cache Tabel MySQL, grafik ini berguna pada saat-saat tertentu seperti Anda ingin mengidentifikasi apakah ada kebutuhan untuk menambah table_open_cache Anda atau menurunkannya jika Anda melihat peningkatan tinggi dari tabel terbuka atau variabel status Open_tables . Perhatikan bahwa table_open_cache dapat menghabiskan banyak ruang memori sehingga Anda harus mengaturnya dengan hati-hati terutama di sistem produksi.
  • Tembolok Definisi Tabel MySQL
    Jika Anda ingin memeriksa jumlah variabel status Open_table_definitions dan Opened_table_definitions, maka grafik ini yang Anda butuhkan. Untuk versi MySQL yang lebih baru (>=5.6.8), Anda mungkin tidak perlu mengubah nilai variabel ini dan menggunakan nilai default karena memiliki fitur pengubahan ukuran otomatis.

Kesimpulan

Penambahan SCUMM dalam versi terbaru ClusterControl 1.7.0 memberikan manfaat baru yang signifikan untuk sejumlah tugas utama DBA. Grafik baru dapat membantu dengan mudah menunjukkan penyebab masalah yang biasanya harus ditangani oleh DBA atau sysadmin dan membantu menemukan solusi yang tepat lebih cepat.

Kami akan senang mendengar pengalaman dan pemikiran Anda tentang penggunaan ClusterControl 1.7.0 dengan SCUMM (yang dapat Anda unduh secara gratis - Komunitas ClusterControl).

Pada bagian 2 blog ini, saya akan membahas Monitoring Efektif Replikasi MySQL dengan Dashboard SCUMM.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dalam SQL, bolehkah dua tabel saling merujuk?

  2. UnicodeEncodeError:codec 'latin-1' tidak dapat menyandikan karakter

  3. Tipe data terbaik untuk menyimpan nilai uang di MySQL

  4. Ubah skema MySQL ke Github Wiki?

  5. DROP TABLE JIKA ADA di MySQL