MariaDB에는 다양한 로그가 있다.
모든 query log가 나올 수 있는 general log가 있고
느린 쿼리를 수집하는 slow로그
에러로그를 수집하는 에러로그
그중에서 오늘은 general log에 대해서 알아보도록 하자
1. root 권한으로 mysql로 접속
우선 서버에서 root 권한으로 들어가준다.
mysql -u root
mysql -u root -p // 비밀번호 치고 들어가야 할 때
그리고 mysql로 들어가줌!
2. general log에 관한 설정 조회
general log에 관한 설정을 조회 해준다.
MariaDB [(none)]> show variables like 'general%';
+------------------+-------------------------+
| Variable_name | Value |
+------------------+-------------------------+
| general_log | OFF |
| general_log_file | general.log |
+------------------+-------------------------+
3. general log 설정 on
set GLOBAL general_log='ON';
set GLOBAL general_log_file='/data/general.log';
이러면 설정은 끝난다.
그치만 매번 DB를 올리고 내릴때마다 같은 설정을 유지하고 싶으니깐
my.cnf 파일을 수정해준다.
vi /etc/my.cnf
[mysqld]
general_log = 1
general_log_file=/data/general.log
만약, 권한이 없으면 sudo 권한으로 열어준다!
( sudo vi /etc/my.cnf )
default general_log 테이블은 CSV 엔진을 사용하기 때문에 MyIsam 엔진으로 변경한다.
아래와 같은 에러 발생 시 general_log 를 off 시킨 후 수행해야함!
mysql> alter table mysql.general_log engine=MyIsam;
4. 로그 수집 방법 (FILE / TABLE)
로그 수집 방법을 조회 해준다.
MariaDB [(none)]> show variables like 'log_output%';
+---------------+------------+
| Variable_name | Value |
+---------------+------------+
| log_output | FILE |
+---------------+------------+
1 row in set (0.001 sec)
그런데 나는 로그에서 매번 user_host 즉, ip가 나왔으면 했다.
그런데 general-log에서는 FILE 로그에서는 connect 할때는 ip가 나오는데
그 이후, query에서는 나오지 않았다.
그런데 table 에서는 기본적으로 user_host가 있으므로 TABLE로 로그를 수집하기로 하였다.
cf) 이를 대체하는 방법으로 slow log의 시간을 조정해주는 방법이 있다.
왜냐면,, slow 로그는 모든 ip를 수집하기 때문이다.
SET GLOBAL long_query_time = 0.01;
MariaDB [(none)]> show variables like 'long%';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 0.100000 |
+-----------------+----------+
1 row in set (0.001 sec)
잠시 삼천포에 빠졌었는데 다시 !
그럼 TABLE 에 로그를 쌓도록 수정하겠다.
set global log_output='TABLE';
그런데 이러면 slow 로그등 다른 로그들도 영향을 받는다.. 그래서 FILE 도쓰고 TABLE도 쓰겠당!
set global log_output='TABLE,FILE';
그러면 mysql에 general_log라는 테이블이 기본 지원 되기때문에 해당 테이블을 조회 하면 connect , query, 권한 부여등
모든 것이 나온다!
event_time user_host thread_id server_id command_type argument
03:03.8 root[root] @ localhost [] 24 1 Query show variables like '%log%'
'DEVELOP > DB' 카테고리의 다른 글
[DB]Isolation Level 알아보기 (0) | 2020.07.19 |
---|---|
[mySql] 계정 생성 및 권한 설정 (0) | 2020.05.25 |
DB (mysql) 설정 변경 (0) | 2020.03.13 |
NewSql 이란? All in one DBMS (0) | 2019.12.16 |
NoSql DB 종류 (0) | 2019.12.13 |