Chcę używać syslog do logowania MySQL (5.1.41) na Ubuntu (10.04 LTS). Znalazłem informacje, które wysyłają dziennik błędów do syslog.
[mysqld_safe]
syslog
Ale chcę używać syslog do rejestrowania dzienników ogólnych i dzienników powolnych zapytań. Proszę mi doradzić, jak napisać plik konfiguracyjny?
Nie mogłem znaleźć tego w podręczniku referencyjnym.
http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html
log_syslog
.Odpowiedzi:
Jest to DUŻO prościej zrobione w ten sposób:
cd do folderów mysql:
w my.cnf powiedz:
Następnie skonfiguruj swój syslog / syslog-ng, aby czytał potok FIFO i robił z nim, jak to będzie ...
W moim przypadku przesyłam go przez sieć do scentralizowanego serwera zawierającego tylko dzienniki błędów i dzienniki wolnych zapytań.
W sytuacjach, w których chcesz również zachować kopię lokalną, ustaw ją tak, aby wyświetlała dane wyjściowe w tabeli i pliku, jak opisano powyżej.
źródło
Ten mechanizm jest zupełnie inny niż syslog systemu operacyjnego.
Ustawienie log-output można ustawić na TABLE, FILE (domyślnie) lub NONE
jeśli tego użyjesz
Spowoduje to, że rejestrowanie dziennika ogólnego i / lub dziennika powolnego przejdzie do pliku CSV. Możesz przekonwertować ten CSV na MyISAM w następujący sposób:
Następnie możesz pozwolić, aby ten plik ogromnie urósł i będziesz musiał co jakiś czas czyścić tabelę. Oto jak wyczyścić tabelę general_log i zachować ostatnie 3 dni:
Co z syslog (var / log / messages)? Musisz sam to napisać. Po pierwsze potrzebujesz tego:
jeśli chcesz zebrać ogólny log w obu formatach lub
tylko dla formatu pliku.
Teraz stwórz skrypt do zbierania zmian w /var/log/general.log. Skrypt powinien wyglądać podobnie do tego:
Uruchom ten skrypt co minutę. Zalecam obcinanie dziennika ogólnego o takiej północy
Spróbuj !!!
źródło
Ustaw /etc/my.cnf.
Edytuj plik /etc/rsyslog.conf (RHEL / CentOS) i włącz imfile modułu, aby odczytał /path/to/mysql/dir/mysql-general.log, a następnie wyślij go do zdalnego serwera syslog, przestrzegając interwału skonfigurowanego w Parametr PollingInterval .
Ta sekcja powinna wyglądać tak:
Odkomentuj linię z WorkDirectory
I skonfiguruj go, aby wysyłał wszystkie dzienniki zdalnie
Lub
źródło