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

Daftar Istilah Database DevOps untuk Pemula MySQL

Saat Anda perlu bekerja dengan database yang tidak 100% Anda kenali, Anda bisa kewalahan dengan ratusan metrik yang tersedia. Yang mana yang paling penting? Apa yang harus saya pantau, dan mengapa? Pola metrik apa yang harus membunyikan lonceng alarm? Dalam postingan blog ini, kami akan mencoba memperkenalkan Anda pada beberapa metrik terpenting yang harus diperhatikan saat menjalankan MySQL atau MariaDB dalam produksi.

Com_* Penghitung Status

Kita akan mulai dengan penghitung Com_* - penghitung yang menentukan jumlah dan jenis kueri yang dijalankan MySQL. Kita berbicara di sini tentang jenis kueri seperti SELECT, INSERT, UPDATE, dan banyak lagi. Sangat penting untuk mengawasinya karena lonjakan tiba-tiba atau penurunan tak terduga mungkin menunjukkan ada yang tidak beres dalam sistem.

Sistem manajemen basis data lengkap kami, ClusterControl, menunjukkan kepada Anda data ini terkait dengan jenis kueri paling umum di bagian “Ringkasan”.

Penangan_* Penghitung Status

Kategori metrik yang harus Anda perhatikan adalah penghitung Handler_* di MySQL. Penghitung Com_* memberi tahu Anda jenis kueri apa yang dijalankan oleh instance MySQL Anda, tetapi satu SELECT bisa sangat berbeda dengan yang lain - SELECT bisa menjadi pencarian kunci utama, itu juga bisa menjadi pemindaian tabel jika indeks tidak dapat digunakan. Penangan memberi tahu Anda bagaimana MySQL mengakses data yang disimpan - ini sangat berguna untuk menyelidiki masalah kinerja dan menilai apakah ada kemungkinan keuntungan dalam tinjauan kueri dan pengindeksan tambahan.

Seperti yang Anda lihat dari grafik di atas, ada banyak metrik untuk dilacak (dan grafik ClusterControl adalah yang paling penting) - kami tidak akan membahas semuanya di sini (Anda dapat menemukan deskripsi dalam dokumentasi MySQL) tetapi kami ingin menyoroti yang paling penting.

Handler_read_rnd_next - setiap kali MySQL mengakses baris tanpa pencarian indeks, secara berurutan, penghitung ini akan ditingkatkan. Jika dalam beban kerja Anda handler_read_rnd_next bertanggung jawab atas persentase tinggi dari keseluruhan lalu lintas, itu berarti tabel Anda, kemungkinan besar, dapat menggunakan beberapa indeks tambahan karena MySQL melakukan banyak pemindaian tabel.

Handler_read_next dan handler_read_prev - kedua penghitung tersebut diperbarui setiap kali MySQL melakukan pemindaian indeks - maju atau mundur. Handler_read_first dan handler_read_last mungkin menjelaskan lebih lanjut tentang jenis pemindaian indeks itu - jika kita berbicara tentang pemindaian indeks penuh (maju atau mundur), kedua penghitung itu akan diperbarui.

Handler_read_key - penghitung ini, sebaliknya, jika nilainya tinggi, memberi tahu Anda bahwa tabel Anda diindeks dengan baik karena banyak baris diakses melalui pencarian indeks.

Keterlambatan Replikasi

Jika Anda bekerja dengan replikasi MySQL, jeda replikasi adalah metrik yang pasti ingin Anda pantau. Replikasi lag tidak bisa dihindari dan Anda harus menghadapinya, tetapi untuk mengatasinya Anda perlu memahami mengapa itu terjadi. Untuk itu langkah pertama adalah mengetahui _kapan_ itu muncul.

Setiap kali Anda melihat lonjakan jeda replikasi, Anda ingin memeriksa grafik lain untuk mendapatkan lebih banyak petunjuk - mengapa hal itu terjadi? Apa yang mungkin menyebabkannya? Alasannya bisa berbeda - DML yang panjang dan berat, peningkatan signifikan dalam jumlah DML yang dieksekusi dalam waktu singkat, keterbatasan CPU atau I/O.

I/O InnoDB

Ada sejumlah metrik penting untuk dipantau yang terkait dengan I/O.

Pada grafik di atas, Anda dapat melihat beberapa metrik yang memberi tahu Anda jenis I/O apa yang dilakukan InnoDB - penulisan dan pembacaan data, penulisan ulang log, fsyncs. Metrik tersebut akan membantu Anda memutuskan, misalnya, apakah jeda replikasi disebabkan oleh lonjakan I/O atau mungkin karena alasan lain. Penting juga untuk melacak metrik tersebut dan membandingkannya dengan batasan perangkat keras Anda - jika Anda mendekati batas perangkat keras disk Anda, mungkin inilah saatnya untuk memeriksanya sebelum memiliki efek yang lebih serius pada kinerja basis data Anda.

Panduan Manynines DevOps untuk Manajemen DatabasePelajari tentang apa yang perlu Anda ketahui untuk mengotomatisasi dan mengelola database open source AndaUnduh Gratis

Metrik Galera - Kontrol Aliran dan Antrean

Jika Anda kebetulan menggunakan Galera Cluster (apa pun rasa yang Anda gunakan), ada beberapa metrik lagi yang ingin Anda pantau dengan cermat, ini agak terkait satu sama lain. Yang pertama adalah metrik yang terkait dengan kontrol aliran.

Kontrol aliran, di Galera, adalah sarana untuk menjaga kluster tetap sinkron. Setiap kali sebuah node berhenti dan tidak dapat mengikuti sisa cluster, ia mulai mengirim pesan kontrol aliran yang meminta node cluster yang tersisa untuk melambat. Hal ini memungkinkan untuk mengejar ketinggalan. Ini mengurangi kinerja kluster, jadi penting untuk mengetahui node mana dan kapan mulai mengirim pesan kontrol aliran. Hal ini dapat menjelaskan beberapa pelambatan yang dialami pengguna atau membatasi jangka waktu dan host yang digunakan untuk penyelidikan lebih lanjut.

Kumpulan metrik kedua yang harus dipantau adalah metrik yang terkait dengan antrean kirim dan terima di Galera.

Node Galera dapat meng-cache writeset (transaksi) jika mereka tidak dapat menerapkan semuanya dengan segera. Jika diperlukan, mereka juga dapat men-cache writeset yang akan dikirim ke node lain (jika node tertentu menerima penulisan dari aplikasi). Kedua kasus tersebut merupakan gejala perlambatan yang, kemungkinan besar, akan mengakibatkan pesan kontrol aliran terkirim, dan memerlukan beberapa penyelidikan - mengapa hal itu terjadi, di node mana, pada jam berapa?

Ini, tentu saja, hanya puncak gunung es ketika kami mempertimbangkan semua metrik yang disediakan MySQL - tetap saja, Anda tidak salah jika Anda mulai menonton yang kami bahas di sini, selain metrik OS/perangkat keras biasa seperti CPU , memori, penggunaan disk, dan status layanan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peringatan:mysqli_connect():(HY000/1045):Akses ditolak untuk 'username'@'localhost' pengguna (menggunakan kata sandi:YA)

  2. Temukan gaji tertinggi ke-2 dengan cara terbaik

  3. Haruskah saya menggunakan tipe data datetime atau timestamp di MySQL?

  4. String pesanan SQL sebagai nomor

  5. Kendala MySQL DROP FOREIGN KEY