Computer >> 컴퓨터 >  >> 스마트폰 >> Linux

mytop으로 MySQL 데이터베이스 실시간 모니터링하는 완벽 가이드

MySQL 서버를 운영하다 보면 현재 어떤 쿼리가 실행되고 있는지, 서버 부하는 어느 정도인지 실시간으로 확인해야 할 때가 많습니다. 이 글에서는 무료 명령줄 유틸리티인 mytop을 사용해 MySQL 데이터베이스를 실시간으로 모니터링하는 방법을 소개합니다.

mytop이란 무엇인가?

mytop은 리눅스의 top 명령어와 유사한 방식으로 동작하는 MySQL 전용 실시간 모니터링 도구입니다. Jeremy Zawodny가 개발했으며 무료로 다운로드할 수 있습니다. 대부분의 UNIX 기반 시스템과 리눅스 환경에서 문제없이 실행되며, MySQL 서버를 관리하는 관리자에게 매우 유용한 도구입니다.

mytop 화면에서는 다음과 같은 정보를 한눈에 파악할 수 있습니다.

  • 현재 실행 중인 스레드와 연결 상태
  • 초당 쿼리 처리량(qps) 및 느린 쿼리(Slow Query) 발생 현황
  • Select/Insert/Update/Delete 쿼리 비율
  • 키 버퍼 효율성(Key Efficiency)과 초당 입출력 바이트(Bps)

사전 준비 사항

mytop을 사용하려면 다음 두 가지가 필요합니다.

  1. 정상적으로 작동 중인 MySQL 서버
  2. 필수 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 사이트의 문서 섹션에서 확인할 수 있습니다.