소소하게 적기 위한 카테고리!?ㅎ
MySQL의 부하원인을 찾기에는 정말 애매애매 할 때가 많습니다.
그래서 crontab을 통해서 1분단위로 부하체크 하는 shell을 간단히 짜보았는데요.
#!/bin/sh
### Made in Chung
############################# Base Setting
HOME_DIR="/raid/usr/local/mysql"
LOG_DIR="/root/uptime_logs"
CHUNG_DATE=`date +'%Y%m%d'`
LOG_FILE_NAME=uptime_$CHUNG_DATE.log
##############################
master_password=`cat $HOME_DIR/data/master.info | head -n 6 | tail -n 1`
`echo "date : \`date +'%Y-%m-%d %H:%M:%S'\`" >> $LOG_DIR/$LOG_FILE_NAME`
`echo "\`$HOME_DIR/bin/mysql -uroot --password=$master_password -e \"show slave status\\G;\" | grep Relay_Master_Log_File\`" >> $LOG_DIR/$LOG_FILE_NAME`
`echo "\`$HOME_DIR/bin/mysql -uroot --password=$master_password -e \"show slave status\\G;\" | grep Exec_Master_Log_Pos\`" >> $LOG_DIR/$LOG_FILE_NAME`
`echo "\`$HOME_DIR/bin/mysql -uroot --password=$master_password -e \"show slave status\\G;\" | grep Seconds_Behind_Master\`" >> $LOG_DIR/$LOG_FILE_NAME`
`echo "uptime : \`uptime\`" >> $LOG_DIR/$LOG_FILE_NAME`
`free | grep -Ev -v buffers/ >> $LOG_DIR/$LOG_FILE_NAME`
`echo "iostat : \`iostat -x -c -t 1 2\`" >> $LOG_DIR/$LOG_FILE_NAME`
`echo "mysqladmin status : \`$HOME_DIR/bin/mysqladmin -uroot --password=$master_password status\`" >> $LOG_DIR/$LOG_FILE_NAME`
`echo "###############################################################################" >> $LOG_DIR/$LOG_FILE_NAME`
--
위에 대해 설명을 간단히 하면
기본인 변수에 directory 설정을 해 줍니다. 기본 mysql 디렉터리라던가 날짜, log 위치 등 ㅎ
제가 보려고 하는 부분은 master-slave의 replication 구조에서 분단위로 seconds_behind_master가 얼마나 밀리는지
또 log file은 어떤 것이고 position은 어떤것인지에 대해 보려고 하는 것입니다.
그리고 현재 서버의 uptime은 얼마나 걸리고 있는지, iostat은 얼마나 걸리고 있는지도 보기 위해서 찍어 놓은 것이구욤 ㅎ
마지막으로 mysql의 현재 상태는 어떤지..ㅎ
###############################################################################
date : 2015-11-03 15:33:01
Relay_Master_Log_File: mysql-bin.003532
Exec_Master_Log_Pos: 126879121
Seconds_Behind_Master: 0
uptime : 15:33:01 up 174 days, 21:08, 3 users, load average: 0.51, 0.78, 0.78
total used free shared buffers cached
Mem: 65865912 60967156 4898756 0 144388 22595400
Swap: 8388604 1152836 7235768
iostat : Linux 2.6.32-504.16.2.el6.x86_64 () 11/03/2015 _x86_64_ (24 CPU)
11/03/2015 03:33:01 PM
avg-cpu: %user %nice %system %iowait %steal %idle
0.99 0.00 0.44 0.61 0.00 97.96
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.13 12.85 0.28 0.75 55.84 108.81 159.71 0.02 15.90 0.46 0.05
sdf 0.00 0.00 7.47 122.44 252.31 14707.28 115.15 0.22 1.71 1.15 14.90
sdg 0.00 0.00 7.46 121.24 251.92 14410.52 113.93 0.22 1.72 1.15 14.78
sdi 0.00 0.00 7.48 118.70 252.61 13697.90 110.55 0.22 1.72 1.15 14.49
sdh 0.00 0.00 7.46 119.54 251.74 14074.35 112.81 0.22 1.72 1.15 14.62
sdd 0.00 0.00 0.00 0.00 0.00 0.00 8.51 0.00 0.31 0.31 0.00
sde 0.00 0.00 0.00 0.00 0.00 0.00 8.51 0.00 0.30 0.30 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 8.51 0.00 0.32 0.31 0.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 8.51 0.00 0.32 0.31 0.00
dm-0 0.03 0.36 7.47 122.44 252.31 14707.28 115.15 0.24 1.83 1.15 14.99
dm-1 0.03 0.36 7.46 121.24 251.92 14410.52 113.93 0.23 1.83 1.16 14.87
dm-2 0.00 0.00 7.50 122.80 252.31 14707.28 114.81 0.02 0.16 1.15 15.00
dm-3 0.03 0.35 7.48 118.70 252.61 13697.90 110.55 0.23 1.82 1.15 14.57
dm-4 0.00 0.00 7.49 121.60 251.92 14410.52 113.59 0.01 0.11 1.15 14.88
dm-5 0.03 0.38 7.46 119.54 251.74 14074.35 112.81 0.23 1.83 1.16 14.71
dm-6 0.00 0.00 7.51 119.05 252.61 13697.90 110.23 0.00 0.03 1.15 14.58
dm-7 0.00 0.00 7.48 119.92 251.74 14074.35 112.45 0.01 0.08 1.16 14.72
dm-8 0.00 0.00 29.98 483.38 1008.58 56890.05 112.78 0.05 0.10 0.38 19.39
11/03/2015 03:33:02 PM
avg-cpu: %user %nice %system %iowait %steal %idle
0.42 0.00 0.42 0.25 0.00 98.91
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdf 0.00 0.00 3.00 36.00 96.00 9216.00 238.77 0.07 1.85 1.85 7.20
sdg 0.00 0.00 2.00 37.00 64.00 9224.00 238.15 0.07 1.82 1.59 6.20
sdi 0.00 0.00 7.00 179.00 224.00 10544.00 57.89 0.17 0.90 0.78 14.60
sdh 0.00 0.00 3.00 36.00 96.00 9216.00 238.77 0.07 1.82 1.77 6.90
sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sde 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 3.00 36.00 96.00 9216.00 238.77 0.07 1.85 1.85 7.20
dm-1 0.00 0.00 2.00 36.00 64.00 8968.00 237.68 0.07 1.84 1.61 6.10
dm-2 0.00 0.00 3.00 36.00 96.00 9216.00 238.77 0.07 1.85 1.85 7.20
dm-3 0.00 0.00 7.00 179.00 224.00 10544.00 57.89 0.17 0.91 0.80 14.80
dm-4 0.00 0.00 2.00 36.00 64.00 8968.00 237.68 0.07 1.87 1.61 6.10
dm-5 0.00 0.00 3.00 36.00 96.00 9216.00 238.77 0.07 1.82 1.77 6.90
dm-6 0.00 0.00 7.00 179.00 224.00 10544.00 57.89 0.17 0.91 0.80 14.80
dm-7 0.00 0.00 3.00 36.00 96.00 9216.00 238.77 0.07 1.85 1.79 7.00
dm-8 0.00 0.00 15.00 287.00 480.00 37944.00 127.23 0.39 1.28 1.08 32.50
mysqladmin status : Uptime: 14337955 Threads: 7 Questions: 7120459308 Slow queries: 29540 Opens: 22815 Flush tables: 1 Open tables: 1024 Queries per second avg: 496.616
###############################################################################
이처럼 나오게 됩니다.
iostat을 두번찍은 이유는 첫번째 나오는 값은 부팅 후 여태까지의 total 평균값이므로 현재는 부정확 한 값이겠죠.
그래서 두번째 값을 보기 위해 이렇게 해 놓은 것입니다.
iostat, free, mysqladmin status는 다음 글에서!