Apakah ada kueri / cara untuk menampilkan kueri terakhir yang dijalankan pada SEMUA server?
471
Bagi mereka yang diberkati dengan MySQL> = 5.1.12, Anda dapat mengontrol opsi ini secara global saat runtime:
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
mysql.general_log
Jika Anda lebih memilih untuk menampilkan file daripada tabel:
SET GLOBAL log_output = "FILE";
default .SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Saya lebih suka metode ini daripada mengedit file .cnf karena:
my.cnf
file dan berpotensi mengaktifkan pencatatan secara permanen/var/log /var/data/log
/opt /home/mysql_savior/var
Untuk informasi lebih lanjut, lihat Manual Referensi MySQL 5.1 - Variabel Sistem Server - general_log
Anda dapat mengaktifkan log kueri umum untuk diagnostik semacam itu. Namun, umumnya Anda tidak mencatat semua kueri SELECT pada server produksi, itu adalah pembunuh kinerja.
Edit konfigurasi MySQL Anda, mis. /Etc/mysql/my.cnf - cari, atau tambahkan, baris seperti ini
Mulai ulang mysql untuk mengambil perubahan itu, sekarang Anda bisa
Hai presto, Anda dapat menonton pertanyaan saat mereka masuk.
sumber
Anda dapat melakukan hal yang mengalir untuk memantau log kueri mysql.
Buka file konfigurasi mysql my.cnf
Cari baris berikut di bawah
[mysqld]
judul dan batalkan komentar pada baris ini untuk mengaktifkan logMulai ulang server mysql Anda untuk mencerminkan perubahan
Pantau log server mysql dengan perintah berikut di terminal
sumber
sumber
1) Jika logging mysql umum diaktifkan maka kita dapat memeriksa pertanyaan dalam file log atau tabel berdasarkan apa yang telah kita sebutkan dalam konfigurasi. Periksa apa yang diaktifkan dengan perintah berikut
Jika kita membutuhkan histori query dalam tabel maka
Lihatlah tabel mysql.general_log
Jika Anda lebih memilih untuk menghasilkan file:
2) Kami juga dapat memeriksa kueri di file .mysql_history cat ~ / .mysql_history
sumber
Mungkin Anda bisa mengetahuinya dengan melihat log kueri .
sumber
Jika mysql binlog diaktifkan, Anda dapat memeriksa perintah yang dijalankan oleh pengguna dengan menjalankan perintah berikut di konsol linux dengan menelusuri ke direktori mysql binlog
memungkinkan
atau log umum akan berpengaruh pada kinerja mysql
sumber
Jika Anda tidak ingin mengubah konfigurasi MySQL, Anda dapat menggunakan profiler SQL seperti "Neor Profile SQL" http://www.profilesql.com .
sumber
Setelah membaca jawaban Paul, saya terus menggali informasi lebih lanjut tentang https://dev.mysql.com/doc/refman/5.7/en/query-log.html
Saya menemukan kode yang sangat berguna oleh seseorang. Inilah ringkasan konteksnya.
(Catatan: Kode berikut bukan milik saya)
Script ini adalah contoh untuk menjaga tabel tetap bersih yang akan membantu Anda mengurangi ukuran tabel Anda. Seperti setelah sehari, akan ada sekitar 180 ribu permintaan log. (dalam file, itu akan menjadi 30MB per hari)
Anda perlu menambahkan kolom tambahan (event_unix) dan kemudian Anda dapat menggunakan skrip ini untuk menjaga log tetap bersih ... itu akan memperbarui timestamp menjadi timest-Unix, menghapus log lebih tua dari 1 hari dan kemudian memperbarui event_time ke Timestamp dari event_unix ... kedengarannya agak membingungkan, tapi ini bekerja dengan baik.
Perintah untuk kolom baru:
Skrip pembersihan:
Penghargaan diberikan kepada Sebastian Kaiser (Penulis asli kode).
Semoga seseorang akan merasakan manfaatnya seperti saya.
sumber
Anda dapat melihat yang berikut ini di linux
vi .mysql_history
Ini mungkin membantusumber