본문 바로가기

DB/Mysql(MariaDB)

MariaDB - DB 로그 파일 관리하기

728x90

MariaDB (Mysql도 포함)는 다양한 종류의 로그 파일을 관리하여 서버 운영에 필수적인 정보를 제공합니다.

로그파일로 DB 상태 모니터링, 문제진단, 보안 감사를 수행할 수 있습니다.

1. 기본 로그 파일 종류

  1. 에러 로그 (Error Log)
    • MariaDB의 에러 로그는 서버에서 발생하는 문제들을 기록합니다. 이 로그에는 서버 시작 및 중지에 관한 정보, 서버 실행 중 발생하는 문제점들이 포함됩니다.
    • 기본 경로: /var/log/mysql/error.log (시스템에 따라 다를 수 있음)
  2. 일반 쿼리 로그 (General Query Log)
    • 모든 클라이언트와 서버 간의 통신을 기록합니다. 이 로그는 시스템에 대한 진단 정보, 오류 검사, 성능 분석 등에 유용합니다.
    • 기본적으로 비활성화되어 있으며, 성능 저하의 원인이 될 수 있습니다.
  3. 이진 로그 (Binary Log)
    • 데이터 변경(INSERT, UPDATE, DELETE 등)에 대한 정보를 기록합니다. 주로 복제(Replication) 및 데이터 복구에 사용됩니다.
    • 로그는 'mysql-bin.xxxxxx' 형식의 파일에 순차적으로 저장됩니다.
  4. 슬로우 쿼리 로그 (Slow Query Log)
    • 설정된 임계값보다 오래 걸리는 쿼리를 기록합니다. 성능 최적화 시 유용하게 사용할 수 있습니다.
    • 일반적으로 10초 이상 걸리는 쿼리를 기록합니다.
  5. 감사 로그 (Audit Log)
    • 보안 감사를 위해 특정 데이터베이스 활동을 기록합니다. 플러그인을 통해 활성화될 수 있습니다.

2. 로그 파일 경로 변경 방법 (설정 파일 변경 - 영구)

MariaDB의 로그 파일 위치는 설정 파일(my.cnf 또는 my.ini)을 통해 변경할 수 있습니다. 일반적으로 설정 파일은 /etc/mysql/ 디렉토리에 위치합니다. 각 로그 파일의 경로를 변경하려면 해당 옵션을 수정하면 됩니다.

  • 에러 로그 변경 예시
[mysqld]
log_error = 변경할 경로/error.log
  • 일반 쿼리 로그 활성화 및 경로 변경 예시
[mysqld]
general_log = 1
general_log_file = 변경할 경로/general.log

 

  • 이진 로그 경로 변경 예시
[mysqld]
log_bin = 변경할 경로/mysql-bin
  • 슬로우 쿼리 로그 활성화 및 경로 변경 예시
[mysqld]
slow_query_log = 1
slow_query_log_file = 변경할 경로/slow.log
  • 감사 로그 활성화 및 설정 예시 (플러그인 사용)
[mysqld]
plugin_load_add = server_audit
server_audit_logging = ON
server_audit_events = QUERY,TABLE
server_audit_output_type = FILE
server_audit_file_path = 변경할 경로/audit.log

설정 파일에서 값을 변경한 후, MariaDB 서버를 재시작해야 설정이 적용됩니다. 

 

3. 로그 파일 활성화/비활성화 방법

MariaDB에서 로그를 임시로 활성화하는 방법은 운영 중에 서버를 재시작하지 않고 빠른 진단이 필요할 때 사용합니다.

  • 일반 쿼리 로그 활성화/비활성화 방법
set global general_log='on';  // 활성화
set global general_log='off';  // 비활성화
set global general_log_file = '변경할 경로/general.log';  // 저장 경로 변경
  • 슬로우 쿼리 로그 활성화/비활성화 방법
set global slow_query_log='on';  // 활성화
set global slow_query_log='off';  // 비활성화
set global slow_query_log_file = '변경할 경로/slow.log';  // 저장 경로 변경
set global long_query_time=2;  // 임계값 변경
  • 감사 로그 활성화/비활성화 방법 (플러그인이 활성화되어 있어야 함)
set global server_audit_logging = ON;  // 활성화
set global server_audit_events = 'QUERY,TABLE,LOGIN';  // 로깅 할 이벤트 설정
set global server_audit_output_type = 'FILE';  // 로그 저장 형식 설정
set global server_audit_file_path = '저장할 경로/audit.log';  // 로그 저장 경로 설정
  • 로그 활성화 상태 확인
SHOW VARIABLES LIKE 'general_log';  // 일반 쿼리 로그 상태 확인
SHOW VARIABLES LIKE 'slow_query_log';  // 슬로우 쿼리 로그 상태 확인
SHOW VARIABLES LIKE 'server_audit%';  // 감사 로그 상태 확인

 

반응형

 

4. 감사 로그 플러그인 설치 및 활성화

MariaDB에서 일반적으로 사용되는 것은 server_audit 플러그인입니다. 이 플러그인을 사용하면 사용자, 테이블, 쿼리 유형 등을 기준으로 상세한 감사 로그를 생성할 수 있습니다.

 

1. 플러그인 활성화

  • MariaDB 서버에서 플러그인을 활성화하려면 my.cnf (Linux) 나 my.ini (Windows) 파일에 설정을 추가합니다.
[mysqld]
plugin_load_add = server_audit

 

2. 감사 로그 옵션 설정

  • 로깅할 이벤트 유형, 로그 파일 경로 등을 설정합니다.
[mysqld]
server_audit_logging = ON
server_audit_events = QUERY,TABLE,LOGIN
server_audit_output_type = FILE
server_audit_file_path = 로그경로/audit.log

 

3. 서버 재시작

  • 플러그인을 활성화 시키려면 재시작이 필요합니다.
systemctl restart mariadb

5. 감사 로그 이벤트 유형

1. CONNECT

  • 사용자가 MariaDB 서버에 연결할 때마다 로깅합니다. (사용자 로그인 시도 및 성공 체크)

2. QUERY

  • MariaDB 데이터베이스의 SQL 쿼리 실행을 로깅합니다. (성능 분석이나 보안 감사에 유용)

3. TABLE

  • 특정 테이블에 대한 쿼리 실행을 로깅합니다. (특정 테이블 데이터 변경 사항 체크)
[mysqld]
server_audit_incl_tables = 'samsodb.table1,samsodb.table2' // 특정 테이블만 로깅
server_audit_excl_tables = 'samsodb.table555,samsodb.table666' // 특정 테이블 로깅 제외

 

4. QUERY_DDL

  • 데이터 정의 언어(DDL)에 대한 쿼리 실행을 로깅합니다. (스키마 변경 사항 체크)

5. QUERY_DML

  • 데이터 조작 언어(DML)에 대한 쿼리 실행을 로깅합니다. (데이터 변경 사항 체크)

6. QUERY_DCL

  • 데이터 제어 언어(DCL)에 대한 쿼리 실행을 로깅합니다. (사용자 권한 변경 사항 체크)

7. FAILED_LOGIN

  • 로그인 시도 실패를 로깅합니다. (비인가 접근 시도 등 보안 감사에 유용)

 

 

 

 

728x90
반응형