konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Od razu zaznaczam nie jestem jakimś zaawansowanym administratorem bazy danych.

Mam sobie serwer bazy, w niej kilkudziesięciu użytkowników przypisanych do kilkunastu hostów.

Czy istnieje możliwość sprawdzenia aktywności tych użytkowników? Chodzi tylko o to jak często się łącza, ewentualnie kiedy było ostatnie połączenie z bazą danego użytkownika.

Sytuacja dotyczy sporej bazy, w której siedzą dane, które nie są już od dawna wykorzystywane. Powiązane jest to z kilkoma maszynami, które odpalają skrypty coś robiące albo kiedyś robiły na tejże bazie, ale z czasem ich funkcjonalność została zastąpiona lub wyłączona, a użytkownik którego używały pozostał.

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Spróbuj http://www.dobreprogramy.pl/MySQL-GUI-Tools-Bundle-for...

Możesz monitorować userów oraz z jakich ip w danej chwili siedzą i jakie zapytania są przetwarzane od nich.

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Czy ta aplikacja pracuje tylko w trybie graficznym?

Maszyna serwerowa jest z linuxem tylko w konsoli.

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Sebastian Zaborowski:
Czy ta aplikacja pracuje tylko w trybie graficznym?

Maszyna serwerowa jest z linuxem tylko w konsoli.

odpalasz jakiegoś GUI klienta np. Toad For MySQL i się logujesz
masz podgląd do stanu sesji itp. itd klient ten akurat jest dla Windows i jest darmowy

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Jest też i pod linuxa (na stronie producenta). Pytam tylko czy jest wyłącznie jako GUI?

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Sebastian Zaborowski:
Jest też i pod linuxa (na stronie producenta). Pytam tylko czy jest wyłącznie jako GUI?


SHOW PROCESSLIST
SHOW FULL PROCESSLIST

http://dev.mysql.com/doc/refman/5.0/en/show-processlis...

odpytaj czym chcesz :)

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Owszem jest to idealne rozwiązanie, ale dla aktualnie aktywnych połączeń.

Co jednak z analizą logów, jeśli MySQL Tools łączy się z zewnętrznym hostem, nie localhost (tak jest w moim przypadku).
Analiza logów jest niezbędna, bo jakaś maszyna może łączyć się codziennie, np. o 01.00 czy wręcz o 4.00 nad ranem. Trudno, żebym siedział wtedy w pracy i patrzył czy dany użytkownik bazy wykazuje jakąś aktywność ;)

Czy istnieją jakieś narzędzia do analizy logów?Sebastian Zaborowski edytował(a) ten post dnia 20.05.10 o godzinie 11:52

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

MySQL Tools jak najbardziej, tylko uważaj przy ściąganiu, gdyż:
 SQL Development (replacing MySQL Query Browser) (Version 5.2 or later)
# Database Administration (replacing MySQL Administrator) (Version 5.2 or later)

jak zainstalujesz 5.1 to szybko się zrazisz do tego narzędzia ;)
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: [MySQL] - aktywność użytkowników db

Rafał ma chyba MySQL Workbench na myśli ;)

Nie jestem pewien, czy te informacje są w ogóle w jakichkolwiek logach zapisywane. No bo w jakich? W binarnym nie, w slow_query albo query też nie. Mamy jakieś jeszcze?

Podpowiadałem Ci na innym forum, że możesz postawić jakieś proxy między MySQL a aplikacjami, które będzie notować userów.

Inny pomysł jaki mi przyszedł do głowy, to że możesz z event schedulera odpytywać processlist i wyniki zapisywać w jakiejś tabeli.
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: [MySQL] - aktywność użytkowników db

takie informacje mógłbyś uzyskać z general query log ale włączenie tego na produkcji to porażka maksymalna bo logujesz WSZYSTKO CO SIĘ DZIEJE NA SERWERZE więc obciążenie serwera jest dużo większe.
Sensowne jest napisanie eventu uruchamianego cyklicznie tylko to też nie daje wszystkich informacji, więc proxy jest tu najsensowniejsze i najlepiej jakby dane były odkładane do pliku lub na inną maszynę.

konto usunięte

Temat: [MySQL] - aktywność użytkowników db

Sebastian Zaborowski:
Czy istnieje możliwość sprawdzenia aktywności tych użytkowników? Chodzi tylko o to jak często się łącza, ewentualnie kiedy było ostatnie połączenie z bazą danego użytkownika.

Napewno jest kilka możliwości, choć żadna nie jest natywną samej bazy.

1. Utworzenie procedury rejestrującej logowanie do bazy do jednej tabeli i umieszczenie wywołania w init-connect. Tabela prosta, coś typu:

CREATE TABLE user_login_audit (
user varchar(64) NOT NULL,
login_time timestamp NOT NULL,
INDEX (user, login_time)
) ENGINE=InnoDB DEFAULT

Jednak w przypadku dużej liczby połączeń na sekundę trochę kosztowne, przy stosunkowo już niedużej odpada możliwość wykorzystania tabeli MyISAM z uwagi na powstającą serializację.

2. Jak już ktoś wspomniał - slow log lub general log.

3. Podsłuchanie tcpdumpem ruchu i wyłuskanie nazw użytkowników?

4. Wykorzystanie userstats i sprawdzenie jacy użytkownicy logowali się do bazy od czasu włączenia zbierania statystyk.

mysql> SET GLOBAL userstat_running=ON;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM INFORMATION_SCHEMA.USER_STATISTICS\G
*************************** 1. row ***************************
USER: root
TOTAL_CONNECTIONS: 1
CONCURRENT_CONNECTIONS: 0
CONNECTED_TIME: 0
...

Jeśli jakiegoś użytkownika na liście nie ma, to znaczy, że nie podłączał się do bazy. User stats nie ma w MySQL, jest dostępne jako patch od Google do własnoręcznego wkompilowania w bazę lub w Percona Server.

W każdym z tych przypadków tak naprawdę chodzi o zbieranie informacji przez jakiś czas - zwykle jeden dzień, kilka dni co najwyżej.

Maciek



Wyślij zaproszenie do