Jak wyświetlić ostatnie zapytania wykonane w MySQL?
Czy Jest jakiś sposób na pokazanie ostatnich zapytań wykonanych na wszystkich serwerach?
10 answers
Dla osób obdarzonych MySQL > = 5.1.12, możesz kontrolować tę opcję globalnie w czasie wykonywania:
- Execute
SET GLOBAL log_output = 'TABLE';
- wykonaj
SET GLOBAL general_log = 'ON';
- spójrz na tabelę
mysql.general_log
Jeśli wolisz wypisać plik 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ę niż edycję .pliki cnf ponieważ:
- nie edytujesz pliku
my.cnf
i możliwość trwałego włączenia logowania - nie łowisz po systemie plików szukając dziennika zapytań - lub co gorsza, rozpraszasz się potrzebą idealnego miejsca docelowego.
/var/log /var/data/log
/opt /home/mysql_savior/var
- ponowne uruchomienie serwera pozostawia cię tam, gdzie rozpocząłeś (dziennik jest domyślnie nadal wyłączony)
- nie musisz ponownie uruchamiać serwera i przerywać żadnych bieżących połączeń z nim.
Aby uzyskać więcej informacji, zobacz MySQL 5.1 Reference Manual - Serwerowe Zmienne Systemowe - general_log
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-12 22:20:41
Możesz włączyć ogólny dziennik zapytań dla tego rodzaju diagnostyki. Generalnie nie rejestrujesz wszystkich zapytań SELECT na serwerze produkcyjnym, jest to zabójca wydajności.
Edytuj konfigurację MySQL, np. /etc / mysql / my.cnf-Wyszukaj lub dodaj taką linię
[mysqld]
log = /var/log/mysql/mysql.log
Uruchom ponownie mysql, aby odebrać tę zmianę, teraz możesz
tail -f /var/log/mysql/mysql.log
Hej presto, możesz obserwować zapytania, gdy przychodzą.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-17 07:33:39
Możesz zrobić płynną rzecz do monitorowania dzienników zapytań mysql.
Otwórz plik konfiguracyjny mysql my.cnf
sudo nano /etc/mysql/my.cnf
Przeszukaj następujące linie pod nagłówkiem [mysqld]
i odkomentuj te linie, aby włączyć log
general_log_file = /var/log/mysql/mysql.log
general_log = 1
Uruchom ponownie serwer mysql dla zmian
sudo service mysql start
Monitoruj dziennik serwera mysql za pomocą następującego polecenia w terminalu
tail -f /var/log/mysql/mysql.log
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-12 22:22:11
SELECT * FROM mysql.general_log WHERE command_type ='Query' LIMIT total;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-18 17:49:01
1) Jeśli ogólne logowanie mysql jest włączone, to możemy sprawdzić zapytania w pliku dziennika lub tabeli na podstawie tego, co wspomnieliśmy w konfiguracji. Sprawdź, co jest włączone za pomocą następującego polecenia
mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';
Jeśli potrzebujemy historii zapytań w tabeli to
Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
Spójrz na tabelę mysql.general_log
Jeśli preferujesz wyjście do pliku:
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
2) możemy również sprawdzić zapytania w .plik mysql_history kot ~/mysql_history
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-26 07:02:31
Jeśli mysql binlog jest włączony możesz sprawdzić polecenia uruchamiane przez użytkownika wykonując wykonując polecenie w konsoli Linuksa, przeglądając katalog mysql binlog
mysqlbinlog binlog.000001 > /tmp/statements.sql
Enabling
[mysqld]
log = /var/log/mysql/mysql.log
Lub ogólny log będzie miał wpływ na wydajność mysql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-01 12:40:08
Może mógłbyś to sprawdzić, patrząc na query log .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-16 12:39:03
Możesz spojrzeć na następujące rzeczy w Linuksie
cd /root
ls -al
vi .mysql_history
może pomóc
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-17 10:22:58
Po przeczytaniu odpowiedzi Pawła, zacząłem kopać po więcej informacji na temat 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 utrzymania tabeli w czystości, co pomoże Ci zmniejszyć rozmiar tabeli. Jak po dniu, będzie około 180K zapytań dziennika. (w pliku byłoby to 30MB na dzień)
Musisz dodać dodatkową kolumnę (event_unix), a następnie możesz użyć tego skryptu, aby utrzymać dziennik w czystości... zaktualizuje znacznik czasu do znacznika czasu Uniksa, usunie dzienniki starsze niż 1 dzień, a następnie zaktualizuje event_time do znacznika czasu z event_unix... brzmi trochę myląco, ale działa świetnie.
Polecenia dla nowej kolumny:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
Skrypt czyszczenia:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
Podziękowania należą się Sebastianowi Kaiserowi (pierwowzorowi kod).
Mam nadzieję, że komuś się przyda, tak jak ja.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-26 17:44:35
Jeśli nie masz ochoty na zmianę konfiguracji MySQL możesz użyć SQL profiler jak "Neor Profile SQL" http://www.profilesql.com .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-12 00:13:21