MySQL ialah salah satu pangkalan data hubungan sumber terbuka yang paling banyak digunakan pada masa ini. Ia mempunyai ciri yang sangat baik seperti kecekapan, kebolehpercayaan dan kestabilan, jadi ia disukai oleh lebih ramai orang. Walau bagaimanapun, apabila skala aplikasi terus berkembang, pemantauan dan pengoptimuman MySQL yang sepadan telah menjadi tugas yang tidak boleh diabaikan oleh pengurus.
Pemantauan data MySQL terutamanya termasuk analisis pertanyaan, statistik dan pemantauan pelaksanaan MySQL. Tujuan tugasan ini adalah untuk memahami status pangkalan data, menemui dan menyelesaikan masalah tepat pada masanya, meningkatkan prestasi dan kestabilan pangkalan data, dan memastikan operasi perniagaan berjalan lancar. Seterusnya, kami akan memperkenalkan cara melaksanakan tugas-tugas pemantauan ini satu persatu.
1. Analisis pertanyaan
Pengoptimuman prestasi MySQL tidak dapat dipisahkan daripada pengoptimuman pertanyaan SQL. Cara mencari kesesakan pertanyaan dan ruang pengoptimuman memerlukan bergantung pada teknologi analisis pertanyaan.
1 Gunakan log pertanyaan perlahan
MySQL disertakan dengan fungsi log pertanyaan perlahan boleh merekodkan SQL yang masa pelaksanaannya melebihi ambang masa tertentu, yang memudahkan kami. untuk mencari penyata Long SQL pelaksanaan.
Langkah-langkahnya adalah seperti berikut:
(1) Hidupkan fungsi log pertanyaan lambat MySQL dan edit fail konfigurasi MySQL:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
Cari dua baris berikut dan tetapkan 'slow_query_log' kepada 'hidup', Dan nyatakan ambang masa pelaksanaan pertanyaan perlahan (dalam saat), di sini ia ditetapkan kepada 5s:
slow_query_log=ON slow_query_log_file=/var/log/mysql/mysql-slow.log long_query_time=5
(2) Mulakan semula perkhidmatan MySQL:
sudo service mysql restart
(3) Lihat log pertanyaan perlahan:
sudo tail -f /var/log/mysql/mysql-slow.log
2 Gunakan explain untuk menganalisis rancangan pelaksanaan pertanyaan
Apabila didapati kecekapan pelaksanaan pertanyaan SQL tertentu tidak cukup tinggi, ia perlu dioptimumkan. Cara mengoptimumkan memerlukan pemahaman pelan pelaksanaan pertanyaan.
MySQL menyediakan fungsi menganalisis rancangan pelaksanaan pertanyaan melalui 'terangkan', yang boleh membantu kami mencari kesesakan pertanyaan dengan lebih mudah.
Sintaks adalah seperti berikut:
EXPLAIN SELECT ...
Selepas melaksanakan pernyataan ini, MySQL akan mengembalikan set hasil, yang mengandungi pelan pelaksanaan pertanyaan, termasuk indeks yang digunakan, jadual yang digunakan , dan operasi yang dilakukan dan maklumat lain.
Dengan menganalisis pelan pelaksanaan, anda boleh menemui kesesakan pertanyaan yang dilaksanakan secara perlahan, memperbaik pernyataan pertanyaan dan meningkatkan kecekapan pertanyaan.
2. Perangkaan data
Statistik data MySQL ialah pengumpulan, analisis dan paparan pelbagai status berjalan bagi kejadian MySQL, terutamanya termasuk yang berikut:
1 : termasuk bilangan sambungan ke contoh MySQL, bilangan utas, bilangan interaksi IO dengan sistem pengendalian, dsb.
2. Statistik pernyataan SQL: memintas pernyataan SQL yang dijalankan dalam tika MySQL dan mengira beberapa maklumat, seperti bilangan pelaksanaan, purata masa pelaksanaan dan status pelaksanaan.
3. Statistik status jadual: termasuk analisis status jadual, kekerapan penggunaan, kaedah penggunaan, dll. di bawah beban kerja.
Alat statistik data yang biasa digunakan MySQL adalah seperti berikut:
MySQL disertakan dengan arahan status show, yang boleh dikira MySQL cuba meminta keadaan sumber yang berbeza. Contohnya:
show status like "%thread%";
Pernyataan ini akan mengembalikan maklumat tentang semua urutan, termasuk urutan sedang berjalan dan benang tidur tidak berjalan.
MySQL Console menyediakan paparan prestasi sistem, parameter, urutan dan status proses.
mysql -uroot -ppassword -e "show status like '%Threads_connected%';show processlistG"
3. Gunakan pt-stalk untuk diagnosis kesalahan
pt-stalk ialah alat diagnosis kerosakan MySQL yang sangat praktikal Ia boleh menangkap log ralat dan mengumpul data pelayan dalam masa nyata berdasarkan parameter yang ditentukan Maklumat status, dsb., membantu jurutera mencari punca kerosakan dengan cepat.
pt-stalk --function=status --run-time=60 --dest /var/tmp
3. Pemantauan data
Pemantauan data ialah matlamat utama pemantauan MySQL. Memantau status berjalan MySQL termasuk:
Alat pemantauan yang biasa digunakan untuk MySQL adalah seperti berikut:
arahan atas ialah pemantauan proses dalam sistem Linux Alat yang membolehkan pemantauan proses menyeluruh terhadap sistem semasa.
top -b -n 1 | grep -E 'Cpu|Mem|mysql'
Arahan htop menerangkan beberapa maklumat ringkas di bahagian atas yang tidak mudah difahami Ia juga menyokong paparan proses berjalan dalam warna, menjadikannya lebih mudah untuk manusia membaca.
2. Gunakan Nagios untuk pemantauan
Nagios ialah alat pemantauan sumber terbuka yang boleh memantau pelbagai peranti seperti rangkaian dan hos. Dengan memasang pemalam pemantauan Nagios pada setiap nod, anda boleh memantau proses MySQL, CPU, rangkaian dan aspek lain.
3. Gunakan alat mysqladmin
Mysqladmin ialah alat baris arahan yang disediakan secara rasmi oleh MySQL. Ia menyediakan sejumlah besar pilihan dan parameter yang boleh digunakan untuk memantau proses MySQL dan berjalannya status.
mysqladmin -uroot -p -h127.0.0.1 processlist
Jika anda terlalu malas untuk melaksanakan arahan secara manual, anda boleh menggunakan alat pemantauan sumber terbuka Zabbix untuk pemantauan:
4. Ringkasan
Melalui analisis pertanyaan, data statistik, pemantauan data dan cara lain, Anda boleh lebih memahami status berjalan MySQL instans, menemui dan menyelesaikan masalah dalam masa, dan meningkatkan prestasi dan kestabilan MySQL. MySQL sendiri menyediakan banyak alat terbina dalam, dan terdapat juga banyak pilihan untuk alat yang lebih disasarkan Pengurus boleh memilih dan menggunakannya berdasarkan keperluan sebenar dan keupayaan operasi dan penyelenggaraan.
Atas ialah kandungan terperinci Pemantauan data MySql: Bagaimana untuk melaksanakan analisis pertanyaan, statistik dan pemantauan pelaksanaan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!