Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 클라이언트 로깅 완벽 이해하기

MySQL 클라이언트 프로그램인 mysql은 대화형(interactive)으로 실행되는 SQL 문장에 대해 다양한 방식의 로깅을 지원합니다. 실행된 문장을 히스토리 파일에 저장하거나 시스템 로깅 기능으로 전송하는 등 여러 로깅 경로를 제공하므로, 이를 잘 이해하면 작업 이력 추적과 감사(audit) 업무에 큰 도움이 됩니다.

UNIX 환경에서의 로깅

Unix 시스템에서 mysql은 실행된 문장을 히스토리 파일(history file)에 기록합니다. 기본 파일 이름은 사용자 홈 디렉터리에 위치한 .mysql_history이며, 다른 파일을 사용하고 싶다면 MYSQL_HISTFILE 환경 변수 값을 설정하면 됩니다.

--syslog 옵션을 지정하면 운영체제와 관계없이 시스템 로깅 기능(logging facility)에 문장이 기록됩니다. Unix에서는 이 시스템 로깅 기능을 syslog라고 부릅니다.

Windows 환경에서의 로깅

Windows에서는 Windows 이벤트 로그(Windows Event Log)가 시스템 로깅 기능에 해당합니다. 로그 메시지가 실제로 어디에 출력되는지는 시스템 설정에 따라 달라집니다. 참고로 Linux에서는 일반적으로 /var/log/messages 파일이 로그 저장 위치로 사용됩니다.

로깅이 수행되는 방식

활성화된 각 로깅 대상(destination)마다 문장 로깅은 아래와 같은 규칙에 따라 수행됩니다.

  • 대화형 실행 시에만 기록: 문장은 대화형으로 실행될 때만 로깅됩니다. 파일이나 파이프(pipe)에서 읽어 들인 문장은 비대화형(noninteractive)으로 간주되며, --batch 또는 --execute 옵션을 사용하면 문장 로깅 자체를 비활성화할 수 있습니다.
  • 'ignore' 패턴 매칭: 무시(ignore) 목록에 등록된 패턴과 일치하는 문장은 기록되지 않고 건너뜁니다.
  • 라인 단위 로깅: mysql은 무시되지 않고 비어 있지 않은 모든 문장 라인을 개별적으로 기록합니다.
  • 여러 줄에 걸친 문장 처리: 종결 구분자(delimiter) 없이 여러 줄에 걸쳐 입력된 문장이 있다면, mysql은 해당 줄들을 하나의 완전한 문장으로 연결하고 줄바꿈 문자를 공백으로 변환한 뒤, 구분자를 덧붙여 결과를 기록합니다.

마무리

MySQL 클라이언트 로깅은 SQL 실행 이력을 체계적으로 남기는 데 유용한 기능입니다. 히스토리 파일의 위치를 변경하거나 syslog 연동 옵션을 활용하면, 조직의 보안 및 감사 요구 사항에 맞는 로깅 환경을 손쉽게 구축할 수 있습니다.