Czy jest jakieś zapytanie / sposób pokazania ostatnich zapytań wykonanych na WSZYSTKICH serwerach?
471
Dla osób pobłogosławionych MySQL> = 5.1.12 możesz kontrolować tę opcję globalnie w czasie wykonywania:
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
mysql.general_log
Jeśli wolisz wyprowadzać dane do pliku zamiast tabeli:
SET GLOBAL log_output = "FILE";
domyślne .SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Wolę tę metodę od edycji plików .cnf, ponieważ:
my.cnf
pliku i potencjalnie na stałe włączasz rejestrowanie/var/log /var/data/log
/opt /home/mysql_savior/var
Aby uzyskać więcej informacji, zobacz Podręcznik referencyjny MySQL 5.1 - Zmienne systemowe serwera - rejestr_ogólny
Możesz włączyć ogólny dziennik zapytań dla tego rodzaju diagnostyki. Ogólnie jednak nie rejestrujesz wszystkich zapytań SELECT na serwerze produkcyjnym, jest to zabójca wydajności.
Edytuj swoją konfigurację MySQL, np. /Etc/mysql/my.cnf - wyszukaj lub dodaj taką linię
Zrestartuj mysql, aby zmienić tę zmianę, teraz możesz
Hej presto, możesz oglądać zapytania, gdy się pojawiają.
źródło
Możesz zrobić płynną rzecz do monitorowania dzienników zapytań mysql.
Otwórz plik konfiguracyjny mysql my.cnf
Wyszukaj następujące wiersze pod
[mysqld]
nagłówkiem i odkomentuj te wiersze, aby włączyć dziennikUruchom ponownie serwer mysql, aby odzwierciedlić zmiany
Monitoruj dziennik serwera mysql za pomocą następującego polecenia w terminalu
źródło
źródło
1) Jeśli włączone jest ogólne rejestrowanie MySQL, możemy sprawdzić zapytania w pliku dziennika lub tabeli na podstawie tego, o czym wspomnieliśmy w konfiguracji. Sprawdź, co jest włączone za pomocą następującego polecenia
Jeśli potrzebujemy historii zapytań w tabeli, to
Spójrz na tabelę mysql.general_log
Jeśli wolisz wyprowadzać dane do pliku:
2) Możemy również sprawdzić zapytania w pliku .mysql_history cat ~ / .mysql_history
źródło
Być może możesz to sprawdzić, przeglądając dziennik zapytań .
źródło
Jeśli mysql binlog jest włączony, możesz sprawdzić polecenia uruchamiane przez użytkownika, wykonując następujące polecenie w konsoli Linux, przechodząc do katalogu binlog mysql
włączanie
lub ogólny dziennik będzie miał wpływ na wydajność mysql
źródło
Jeśli nie masz ochoty zmieniać konfiguracji MySQL, możesz użyć narzędzia do profilowania SQL, takiego jak „Neor Profile SQL” http://www.profilesql.com .
źródło
Po przeczytaniu odpowiedzi Paula zacząłem szukać więcej informacji na https://dev.mysql.com/doc/refman/5.7/en/query-log.html
Znalazłem naprawdę przydatny kod przez osobę. Oto podsumowanie kontekstu.
(Uwaga: poniższy kod nie jest mój)
Ten skrypt jest przykładem utrzymywania tabeli w czystości, co pomoże ci zmniejszyć jej rozmiar. Podobnie jak po dniu, będzie około 180 000 zapytań o log. (w pliku byłoby to 30 MB dziennie)
Musisz dodać dodatkową kolumnę (event_unix), a następnie możesz użyć tego skryptu, aby utrzymać dziennik w czystości ... zaktualizuje on znacznik czasu w uniksowy znacznik czasu, usunie dzienniki starsze niż 1 dzień, a następnie zaktualizuje czas zdarzenia w znacznik czasu z event_unix ... brzmi trochę myląco, ale działa świetnie.
Polecenia dla nowej kolumny:
Skrypt czyszczenia:
Podziękowania należą się Sebastianowi Kaiserowi (autorowi kodu).
Mam nadzieję, że ktoś uzna to za przydatne tak jak ja.
źródło
W Linuksie możesz spojrzeć na następujące elementy
vi .mysql_history
To może pomócźródło