===== Pretty InnoDB Buffer Pool Stats ===== Now I can quickly see buffer pool stats in the following format: buffer pool size: 27999076352 bytes (27G) used: 16563568640 bytes (16G) (59.00%) modified db pages: 4747952128 bytes (4G) (16.00%) #!/bin/sh # Pretty print InnoDB buffer stats. # # SHOW INNODB STATUS looks like: # # Buffer pool size 1708928 # Free buffers 1142066 # Database pages 565676 # Modified db pages 123467 pp() { value=$1 if [ $value -gt 1000000000 ]; then value=$(expr $value / 1000000000)G elif [ $value -gt 1000000 ]; then value=$(expr $value / 1000000)M elif [ $value -gt 1000 ]; then value=$(expr $value / 1000)K fi echo $value } perc() { nr=$1 total=$2 echo "scale = 2; ($nr / $total ) * 100" | bc } # donnot let bash screw up multiline parsing (I hate this bug) IFS= stats=$(echo "SHOW ENGINE INNODB STATUS\G" | mysql -N) #echo $stats set -o noglob buffer_pool_size=$(echo $stats | grep -E '^Buffer pool size' | grep -Eo '[0-9]+$') buffer_pool_size=$(expr $buffer_pool_size * 16384) free_pool_size=$(echo $stats | grep -E '^Free buffers' | grep -Eo '[0-9]+$') free_pool_size=$(expr $free_pool_size * 16384) modified_db_pages=$(echo $stats | grep -E '^Modified db pages' | grep -Eo '[0-9]+$') modified_db_pages=$(expr $modified_db_pages * 16384) used=$(expr $buffer_pool_size - $free_pool_size) echo "buffer pool size: $buffer_pool_size bytes ($(pp $buffer_pool_size))" echo "used: $used bytes ($(pp $used)) ($(perc $used $buffer_pool_size)%)" echo -n "modified db pages: $modified_db_pages bytes " echo -n "($(pp $modified_db_pages)) " echo " ($(perc $modified_db_pages $buffer_pool_size)%)" ===== Kill every MySQL SELECT older than X seconds ===== #!/bin/bash SEC=$1 IFS=’|’ if [[ $SEC -lt 1 ]]; then echo “Usage: $0 SECONDS” exit 1 fi mysqladmin proc -v|grep Query|grep -Evi “delete|update|insert|alter table” |while read dummy qid qusr qhost qdb qstat qsec qstat2 query do if [ $qsec -gt $SEC ]; then echo “Killing query $qid…” mysqladmin kill $qid fi done ===== Sniff the MySQL traffic on the fly ===== # tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e ' while(<>) { chomp; next if /^[^ ]+[ ]*$/; if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) { if (defined $q) { print "$q\n"; } $q=$_; } else { $_ =~ s/^[ \t]+//; $q.=" $_"; } }' ===== RESET SLAVE ===== #!/bin/bash HOST=$1 RPASS=$(