Czytałem, że serwer MySQL tworzy plik dziennika, w którym przechowuje zapis wszystkich działań - np. Kiedy i jakie zapytania są wykonywane.
Czy ktoś może mi powiedzieć, gdzie istnieje w moim systemie? Jak mogę to przeczytać?
Zasadniczo muszę wykonać kopię zapasową bazy danych z innym wejściem [kopia zapasowa między dwiema datami], więc myślę, że muszę tutaj użyć pliku dziennika, dlatego chcę to zrobić ...
Myślę, że ten dziennik musi być w jakiś sposób zabezpieczony, ponieważ mogą być rejestrowane poufne informacje, takie jak nazwa użytkownika i hasło [jeśli wymaga tego jakiekolwiek zapytanie]; więc czy można go zabezpieczyć, aby nie był łatwo widoczny?
Mam uprawnienia roota do systemu, jak mogę zobaczyć dziennik?
Kiedy próbuję otworzyć /var/log/mysql.log, jest pusty.
To jest mój plik konfiguracyjny:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
log = /var/log/mysql/mysql.log
binlog-do-db=zero
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
general_log_file = /var/log/mysql/mysql.log
general_log = 1
/etc/mysql/conf.d/mysqld_safe_syslog.cnf
tylko wtedy, gdy ma być włączony dziennik błędów. Jednak ta odpowiedź, tak jak jest obecnie napisana, wydaje się sugerować ją dla dowolnego dziennika.slow_query_log = 1;
,slow_query_log_file = /var/log/mysql/mysql-slow-query.log
along_query_time = 60
w [mysqld]. Kiedy próbuję rozpocząć konfigurację, serwer się uruchamia, ale powolnie i z błędami. Wydaje mi się, że wersje się różnią iw późniejszych wersjach wyrocznia chciała ujednolicić nazwy zmiennych. Poza tym: IMHO 2 sekundy to nie tak długo.Musisz aktywować zapytanie logując się do mysql.
edytuj /etc/my.cnf
uruchom ponownie komputer lub usługę mysqld
otwórz phpmyadmin / dowolną aplikację, która używa konsoli mysql / mysql i uruchom zapytanie
cat /tmp/mysql.log
(powinieneś zobaczyć zapytanie)źródło
Dzienniki MySQL są określane przez zmienne globalne, takie jak:
log_error
dla dziennika komunikatów o błędach;general_log_file
dla ogólnego pliku dziennika zapytań (jeśli jest włączony przezgeneral_log
);slow_query_log_file
dla pliku dziennika powolnych zapytań (jeśli jest włączony przezslow_query_log
);Aby zobaczyć ustawienia i ich lokalizację, uruchom to polecenie powłoki:
Aby wydrukować wartość dziennika błędów, uruchom to polecenie w terminalu:
Aby odczytać zawartość pliku dziennika błędów w czasie rzeczywistym, uruchom:
Uwaga: Hit Control- Cpo zakończeniu
Gdy dziennik ogólny jest włączony, spróbuj:
Aby używać
mysql
z hasłem dostępu, dodaj-p
lub-pMYPASS
parametr. Aby go zapamiętać, możesz go skonfigurować w swoim~/.my.cnf
npWięc zostanie to zapamiętane następnym razem.
źródło
W moim (mam zainstalowaną LAMPę ) / etc / mysql /my.cnf znalazłem następujące, skomentowane linie w sekcji [mysqld]:
Musiałem otworzyć ten plik jako superużytkownik z terminalem:
(Wolę używać Geany zamiast gedit lub VI, to nie ma znaczenia)
Po prostu odkomentowałem je i zapisałem plik, a następnie ponownie uruchomiłem mysql z
Uruchom kilka zapytań, otwórz powyższy plik (/var/log/mysql/mysql.log) i dziennik tam był :)
źródło
Z podręcznika MySQL:
Sprawdź
/var/lib/mysql
folder.źródło
sudo -s
a następnie spróbuj przejść do folderu mysql.Aby uzupełnić odpowiedź loyoli , warto wspomnieć, że od wersji MySQL 5.1
log_slow_queries
jest przestarzałe i zastąpione przezslow-query-log
Używanie
log_slow_queries
spowoduje porażkęservice mysql restart
lubservice mysql start
niepowodzenieźródło
źródło
Oprócz powyższych odpowiedzi możesz przekazać parametry wiersza poleceń do procesu mysqld w celu uzyskania opcji logowania zamiast ręcznej edycji pliku conf. Na przykład, aby włączyć rejestrowanie ogólne i określić plik:
Potwierdzając inne odpowiedzi powyżej,
mysqld --help --verbose
podaje wartości z pliku conf (więc uruchomienie z opcjami wiersza poleceń general-log jest FALSE); natomiastmysql -se "SHOW VARIABLES" | grep -e log_error -e general_log
daje:Użyj nieco bardziej zwartej składni dziennika błędów:
źródło