리눅스

Total 331
Today 0
profile_image
슈퍼아이피
13-06-08 20:01 0개 16회
일반문서
MySQL 모니터링 - MYTOP자료
mytop - a top clone for MySQL

요구사항: Perl, DBI, DBD Mysql Module, Term::ReadKey
mytop은 기본적으로 show status와 show processlist를 CLI로 보여주는 프로그램입니다.
간단하게 인스톨 하는법
★ CentOS 5.3(32bit)에서 인스톨 했을때는 밑에예제를 사용했음
yum --enablerepo=rpmforge install mytop
안될시는 밑에 순번대로 해 주시면 됩니다.
============================================================
 CentOS 5.3(64bit)에서 인스톨 했을때는 밑에예제를 사용했음
I recently installed mytop on a new 64-bit Red Hat Enterprise Linux 5.4 server. Here are my notes.
The mytop program requires two Perl modules. So let's make sure those are installed first. The perl-DBI package is usually installed as a dependency already. Check if it's there:

# yum list installed *DBI
Loaded plugins: rhnplugin, security
Installed Packages
perl-DBI.x86_64 1.52-2.el5 installed
Install TermReadKey module, also known as Term::ReadKey. I am installing this from the EPEL repository, which I regard as very safe (in terms of compatibility, longevity and maintenance). If you're not set up with EPEL, you can do
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
Anyway, installing Term::ReadKey from EPEL:

# yum install perl-TermReadKey
Loaded plugins: rhnplugin, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package perl-TermReadKey.x86_64 0:2.30-4.el5 set to be updated
--> Finished Dependency Resolution
...
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-TermReadKey 1/1
Installed:
perl-TermReadKey.x86_64 0:2.30-4.el5
Now it's time to get mytop.

# wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.6.tar.gz
# tar zxvf mytop-1.6.tar.gz
# cd mytop-1.6
# perl Makefile.PL
Writing Makefile for mytop
# make test
cp mytop blib/script/mytop
/usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/mytop
PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl
1..1
ok 1
# make
Manifying blib/man1/mytop.1
# make install
Installing /usr/share/man/man1/mytop.1
Installing /usr/bin/mytop
Writing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/mytop/.packlist
Appending installation info to /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod
# which mytop
/usr/bin/mytop

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
여기부터는 32bit에서 또 다른 방법
--------------------------------------
1. DBI Install
# tar xvzf DBI-1.37.tar.gz
# cd DBI-1.37
# perl Makefile.PL
# make
# make install
--------------------------------------
2. DBD-Mysql Install
# tar xvzf DBD-Mysql-2.9003.tar.gz
# cd DBD-Mysql-2.9003
# perl Makefile.PL
# make
# make install
--------------------------------------
3. Term::ReadKey Install
# tar xvzf TermReadKey-2.21.tar.gz
# cd TermReadKey-2.21
# perl Makefile.PL
# make
# make install
--------------------------------------
4. mytop Install
# tar xvzf mytop-1.2.tar.gz
# cd mytop-1.2
# perl Makefile.PL
# make
# make install
-------------------------------------
mytop을 편리하게 사용할려면 홈디렉터리에 다음 파일을 만들어두면 좋습니다.
# vi .mytop
-------------------------------------
user=root
pass=password  반드시 필요함
-------------------------------------
host=localhost
db=test
delay=3   사용자 정의함
-------------------------------------
----------<옵션 키>---------------
d - 특정 디비에 대해서만 보는 경우
f - 지정된 쓰레드가 실행중인 쿼리를 모두 출력
h - 간단히 보기
i - 쉬고있는 쓰레드는 리스트에서 제외
k - 쓰레드 연결을 종료
m - 초당 실행 쿼리수 보기
p - 화면 정지
q - mytop 종료
r - FLUSH STATUS 실행
s - 화면 갱신 시간 설정
u - 특정 사용자의 쓰레드만 보기
---------------------------------------

mytop http://jeremy.zawodny.com/mysql/mytop/
DBI http://search.cpan.org/
DBD-Mysql http://search.cpan.org/
Term::ReadKey http://search.cpan.org/

※실행화면
# mytop -u root -p ?????? (???는 mysql DB root PW)
mytop.png

부분별 의미를 알아보자.

=============================  ==========================  =======================
표    시                       의    미                    관련 show status 변수명
==============================  ==========================  =======================
MySQL on localhost (3.23.49a)   호스트명과 MySQL 버전
------------------------------  --------------------------  -----------------------
up 11+23:04:23 [17:17:46]       MySQL uptime과 현재 시간    Uptime
==============================  ==========================  =======================
Queries: 947.4k                 uptime중의 총 쿼리 개수     Questions
qps:    1 Slow:     0.0         초당 쿼리 수 평균과         Questions
                                slow 쿼리 수                Slow_queries

※ Slow_queries이란 MySQL 서버 설정값인 long_query_time(default는 10초)보다 더 긴
   시간동안 질의된 쿼리 수를 의미한다.
------------------------------  --------------------------  -----------------------
Se/In/Up/De(%):    70/21/04/00  총 쿼리 중 각각 Select,     Com_select
                                Insert+Replace,             Com_insert, Com_replace
                                Update,                     Com_update
                                Delete 비율                 Com_delete
==============================  ==========================  =======================
qps now:    2 Slow qps: 0.0     현재 쿼리 수와              Questions
                                현재 slow 쿼리 수           Slow_queries
※ Slow qps가 자주 나오면 SQL문 최적화가 필요
------------------------------  --------------------------  -----------------------
Threads:   11 (   3/   0)       11은 쓰레드 총 개수         Threads_connected
                                3은 동작중인 쓰레드         Threads_running
                                0은 캐시된 쓰레드           Threads_cached
------------------------------  --------------------------  -----------------------
62/12/00/00                     각각 현재의 Select,.. 비율  Com_select, ...
==============================  ==========================  =======================
Key Efficiency: 100.0%          Key 캐시 히트율             Key_reads, Key_read_requests

※ Key Efficiency 높을 수록 키 버퍼에서 읽어들인 것임.
   수치가 99%보다 낮다면 key_buffer_size 조정 필요
------------------------------  --------------------------  -----------------------
Bps in/out:  77.0/537.7         초당 주고받은 평균 bytes    Bytes_received
                                                            Bytes_send
------------------------------  --------------------------  -----------------------
Now in/out:   8.4/569.6         현재 주고받은 bytes         Bytes_received
                                                            Bytes_send
==============================  ==========================  =======================


다양한 실행 옵셥은 man페이지를 통해 확인하기 바란다. 
또한 실행중 사용하는 키는 ? 를 누르면 도움말을 볼 수 있다.
c(command별 사용 비율과 건수), p(일시 정지), s(화면 업데이트간격 변경),
q(종료), i(sleeping 상태의 쓰레드 표시 여부 변경) 등 다양하다.

c를 눌러 command별(select, insert, update 등) 사용 비율과 건수를 보자.
mytop_comview.png
 
3) ~/.mytop 환경 설정

mytop -u ??? -p ??? 처럼 실행했을 땐 패스워드 유출 가능성도 있고 매번 실행하기도
불편할 수 있다. 이럴 땐 홈디렉토리의 ~/.mytop에 설정해두면 된다.

-------------------------------------------
user=root
pass=???????
host=localhost
db=test
port=3306
socket=
-------------------------------------------

댓글목록

등록된 댓글이 없습니다.