MySQL 서버를 운영하다 보면 현재 어떤 쿼리가 실행되고 있는지, 서버 부하는 어느 정도인지 실시간으로 확인해야 할 때가 많습니다. 이 글에서는 무료 명령줄 유틸리티인 mytop을 사용해 MySQL 데이터베이스를 실시간으로 모니터링하는 방법을 소개합니다.
mytop이란 무엇인가?
mytop은 리눅스의 top 명령어와 유사한 방식으로 동작하는 MySQL 전용 실시간 모니터링 도구입니다. Jeremy Zawodny가 개발했으며 무료로 다운로드할 수 있습니다. 대부분의 UNIX 기반 시스템과 리눅스 환경에서 문제없이 실행되며, MySQL 서버를 관리하는 관리자에게 매우 유용한 도구입니다.
mytop 화면에서는 다음과 같은 정보를 한눈에 파악할 수 있습니다.
- 현재 실행 중인 스레드와 연결 상태
- 초당 쿼리 처리량(qps) 및 느린 쿼리(Slow Query) 발생 현황
- Select/Insert/Update/Delete 쿼리 비율
- 키 버퍼 효율성(Key Efficiency)과 초당 입출력 바이트(Bps)
사전 준비 사항
mytop을 사용하려면 다음 두 가지가 필요합니다.
- 정상적으로 작동 중인 MySQL 서버
- 필수 Perl 모듈: DBI, DBD::mysql, Term::ReadKey, Getopt::Long
mytop 설치하기
mytop은 프로젝트 공식 웹사이트에서 소스 코드를 직접 내려받아 설치할 수도 있고, 배포판별로 제공되는 미리 빌드된 바이너리 패키지를 사용할 수도 있습니다. Fedora/RedHat 계열과 Ubuntu 계열용 패키지가 존재하므로, 각 배포판의 패키지 관리자를 통해 손쉽게 설치할 수 있습니다. 예를 들어 Ubuntu나 Debian에서는 아래와 같이 설치합니다.
# apt-get install mytop
Fedora나 CentOS 같은 RedHat 계열이라면 yum 또는 dnf를 이용해 설치할 수 있습니다.
mytop 실행 및 기본 사용법
설치가 완료되었다면 아래 명령으로 mytop이 정상 작동하는지 확인할 수 있습니다.
# mytop -h dbserver -u dbuser -p dbpassword
dbserver, dbuser, dbpassword는 각각 자신의 MySQL 서버 주소, 접속 계정, 비밀번호로 바꿔 입력하면 됩니다. 실행하면 다음과 같은 화면을 볼 수 있습니다.
MySQL on dbserver (5.0.37) up 50+17:53:46 [13:20:38] Queries: 2.5G qps: 609 Slow: 0.0 Se/In/Up/De(%): 01/00/00/00 Key Efficiency: 99.8% Bps in/out: 0.0/ 0.0 Id User Host/IP DB Time Cmd Query or State -- --- ------ --- ---- --- ------------ 9570443 dbuser 192.168.10.9 appdb 0 Prepar 9575575 dbuser 192.168.10.9 appdb 0 Sleep 9576920 dbuser 192.168.10.9 appdb 0 Sleep 9593343 dbuser 192.168.10.4 appdb 0 Sleep 9601720 dbuser 192.168.10.3 appdb 0 Query show full process 9574728 dbuser 192.168.10.9 appdb 1 Sleep 9575771 dbuser 192.168.10.9 appdb 1 Sleep 9579103 dbuser 192.168.10.9 appdb 1 Sleep 9579962 dbuser 192.168.10.4 appdb 1 Sleep 9581070 dbuser 192.168.10.4 appdb 1 Sleep 9585516 dbuser 192.168.10.4 appdb 1 Sleep 9585518 dbuser 192.168.10.4 appdb 1 Sleep 9597503 dbuser 192.168.10.4 appdb 1 Sleep 9597952 dbuser 192.168.10.4 appdb 1 Sleep 9599442 dbuser 192.168.10.9 appdb 1 Sleep
화면 구성 요소 살펴보기
- 상단 헤더: 서버 가동 시간, 누적 쿼리 수, qps(초당 쿼리 수), Slow 쿼리 수, Select/Insert/Update/Delete 비율 등 핵심 지표를 표시합니다.
- Key Efficiency: 키 버퍼의 효율성을 나타내며, 높을수록 인덱스가 메모리에서 잘 활용되고 있다는 의미입니다.
- 스레드 목록: 각 연결의 ID, 사용자, 호스트/IP, 사용 중인 데이터베이스, 경과 시간, 현재 명령(Query, Sleep, Prepare 등)을 실시간으로 보여줍니다.
마무리
mytop은 별도의 복잡한 설정 없이 터미널 하나로 MySQL 서버의 상태를 실시간으로 진단할 수 있는 강력하고 가벼운 도구입니다. 느린 쿼리 추적, 과부하 원인 분석, 불필요한 연결 확인 등 일상적인 서버 관리 업무에 적극 활용해 보시기 바랍니다. 더 자세한 옵션과 단축키는 mytop 사이트의 문서 섹션에서 확인할 수 있습니다.