目录
MySQL常规巡检
一、巡检脚本
巡检脚本包括三个文件inspection.conf、inspection_mysql.sh、mysqltuner.pl
bash>ll
-rw-r--r-- 1 root root 994 Nov 1 16:33 inspection.conf
-rwxr-xr-x 1 root root 39221 Nov 1 15:26 inspection_mysql_v4.sh
-rwxr-xr-x 1 root root 219803 Nov 1 11:32 mysqltuner.pl
二、下载巡检脚本
- 下载地址:
三、脚本执行说明
1、inspection.conf 使用说明
使用说明:配置mysql登录账号信息以及mysql的标准配置
#============================================================================================================
#MySQL巡检配置
#============================================================================================================
#mysql用户名
MYSQL_USER=root
#mysql用户密码
MYSQL_PASS='xxxxxxx'
#mysql客户端
MYSQL_COMM=mysql
#备份路径
BAK_PATH=/r2/bak_sql
#mysql全局日志
GLOBAL_LOG=`hostname`_global_`date +%Y%m%d`.txt
#mycnf内容输出
MYCNF=`hostname`_mycnf_`date +%Y%m%d`.txt
#mysqltuner输出日志
MYSQLTUNER_LOG=`hostname`_mysqltuner_`date +%Y%m%d`.txt
#检查mysql标准配置日志
#TANDARD_MYSQL_CONF=`hostname`_standard_`date +%Y%m%d`.txt
#检查mysql标准配置
standard_basedir=/usr/
standard_datadir=/r2/mysqldata/
standard_plugin=/usr/lib64/mysql/plugin/
standard_osmysqluser=mysql
standard_log_error=/r2/mysqldata/error.log
standard_pid=/r2/mysqldata/`hostname`.pid
standard_socket=/r2/mysqldata/mysql.sock
2、inspection_mysql.sh 使用说明
inspection_mysql.sh
脚本简述 :主脚本通过读取inspection.conf 配置文件来执行,调用perl来执行 mysqltuner.pl来提供优化建议
#!/bin/bash
# line: V1.4
# mail: [email protected]
# data: 2018-11-01
# script_name: inspection_mysql.sh
# Function: MySQL巡检包含(mysqltuner.pl、inspection.conf)与inspection_mysql.sh放在同一目录下
#============================================================================================================
#定义颜色的变量
#============================================================================================================
. ./inspection.conf
echo_color(){
color=${1} && shift
case ${color} in
black)
echo -e "\e[0;30m${@}\e[0m"
;;
red)
echo -e "\e[0;31m${@}\e[0m"
;;
green)
echo -e "\e[0;32m${@}\e[0m"
;;
yellow)
echo -e "\e[0;33m${@}\e[0m"
;;
blue)
echo -e "\e[0;34m${@}\e[0m"
;;
purple)
echo -e "\e[0;35m${@}\e[0m"
;;
cyan)
echo -e "\e[0;36m${@}\e[0m"
;;
*)
echo -e "\e[0;37m${@}\e[0m"
;;
esac # --- end of case ---
}
#============================================================================================================
#设置MySQL配置信息
#============================================================================================================
#MYSQL_USER=root #mysql的用户名
#MYSQL_PASS=iforgot #mysql的登录用户密码
MYSQL_HOST="localhost" #mysql的主机IP
#MYSQL_COMM=mysql
DATE=`date -d today +"%Y-%m-%d %T"`
#BAK_PATH=/r2/bak_sql
TIME_INTERVAL=3 #等待时间
#GLOBAL_LOG=`hostname`_global_`date +%Y%m%d`.txt
#MYCNF=`hostname`_mycnf_`date +%Y%m%d`.txt
#MYSQLTUNER_LOG=`hostname`_mysqltuner_`date +%Y%m%d`.txt
#STANDARD_MYSQL_CONF=`hostname`_standard_`date +%Y%m%d`.txt
HOSTNAME=`hostname` #主机名
#============================================================================================================
# 判断mysql账号密码是否存在,不存在请输入密码
#============================================================================================================
echo_color green "#>>>>>>>>>>>>>>>>>>>>>>>>> ${HOSTNAME} ------ ${DATE} <<<<<<<<<<<<<<<<<<<<<<<#"
if [[ ! -n ${MYSQL_USER} && ! -n ${MYSQL_PASS} ]]; then
read -s -p "Enter your MySQL user:" MYSQL_USER
echo
echo_color green "User name is ${MYSQL_USER} "
echo
read -s -p "Enter your MySQL password:" MYSQL_PASS
echo
fi
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "select version();"
if [ $? -ne 0 ]
then
echo_color red "mysql login failure, please check mysql process or the username and password match or mysql service no running!" > ${GLOBAL_LOG}
err_exit=`cat ${GLOBAL_LOG}`
echo_color red ${err_exit}
exit 0
else
echo_color green "MySQL is Running" > ${GLOBAL_LOG}
fi
#============================================================================================================
#设置主机配置信息
#============================================================================================================
hostname=`hostname` #主机名
ipaddress=`ip route | awk '/src/ && !/docker/{for(i=1;i<=NF;++i)if($i == "src"){print $(i+1)}}' ` #IP地址
cpuinfo=`cat /proc/cpuinfo|grep "name"|cut -d: -f2 |awk '{print "*"$1,$2,$3,$4}'|uniq -c` #cpu
phmem=`dmidecode | grep -A 16 "Memory Device$" |grep Size:|grep -v "No Module Installed"|awk '{print "*" $2,$3}'|uniq -c` #物理内存数量
server_versions=`cat /etc/redhat-release ` #系统版本
kernel_versions=`uname -a |awk '{print $3}'` #内核版本
product_name=`dmidecode | grep "Product Name" | awk 'NR==1'`
cpuload=`cat /proc/loadavg | awk '{print $1,$2,$3}'`
MYSQL_HOST="localhost" #mysql的主机IP
#MYSQL_COMM=mysql
DATE=`date -d today +"%Y-%m-%d %T"`
#BAK_PATH=/r2/bak_sql
TIME_INTERVAL=3 #等待时间
#============================================================================================================
#内存情况
#============================================================================================================
mem_total=$(free -m |grep Mem|awk '{print $2}')
mem_used=$(free -m |grep Mem|awk '{print $3}')
mem_rate=`expr $mem_used/$mem_total*100|bc -l`
#============================================================================================================
#内存使用量
#============================================================================================================
mem_sum=`free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}' \
| awk -F":" 'BEGIN{print " FREE / TOTAL " } {print $2 }'`
#============================================================================================================
#硬盘容量
#============================================================================================================
dk_usage=`df -H |awk -F '\t' '{ print $1,$2,$3,$4,$5,$6}'`
#============================================================================================================
# MySQL original state
#============================================================================================================
# cat >> $STANDARD_MYSQL_CONF <<EOF
# standard_basedir=/usr
# standard_datadir=/r2/mysqldata/
# standard_plugin=/usr/lib64/mysql/plugin/
# standard_osmysqluser=mysql
# standard_log_error=/r2/mysqldata/${hostname}.err
# standard_pid=/r2/mysqldata/${hostname}.pid
# standard_socket=/r2/mysqldata/mysql.sock
# EOF
osmysqluser=`ps -ef|grep -w mysqld |grep -v grep |awk '{print $1}'`
#============================================================================================================
# 1.1主机基本信息
#============================================================================================================
echo
echo_color yellow "#===========================================================================================================#"
echo_color yellow "# 1 The system basic infomation #"
echo_color yellow "#===========================================================================================================#"
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.0 server product name is:"
echo
echo ${product_name}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.1 server cpuinfo is: "
echo
echo ${cpuinfo}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.2 server physical memory number is: "
echo
echo ${phmem}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.3 server hd disk info is: "
echo
echo -e "${dk_usage}"
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.4 server hostname is:"
echo
echo ${hostname}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.5 server ipaddree is: "
echo
echo -e "${ipaddress}"
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.6 server version is: "
echo
echo ${server_versions}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.7 server system kernel version is: "
echo
echo ${kernel_versions}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.8 server CPU load average is: "
echo
echo ${cpuload}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.9 server memory Summary is: "
echo
echo ${mem_sum}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.10 server top task status is: "
echo
top -c -n 1 |grep Tasks
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.11 server top cpu status is: "
echo
top -c -n 1 |grep Cpu
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.12 server top mem status is: "
echo
top -c -n 1|grep Mem
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.13 server top swap status is: "
echo
top -c -n 1|grep Swap
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.14 mysqld services active is: "
echo
version=$(uname -r |awk -F '.' '{ print $(NF-1) }')
if [ "${version}" != "el7" ];then
chkconfig --list | grep mysql
else
#systemctl -a |grep mysql
systemctl -a |grep mysql |awk '{sub(/[[:blank:]]*$/,"",$1);print $1 " " $2 " " $3 " " $4 " "}'
fi
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.15 mysqld number is: "
echo
ps -ef | grep "mysqld_safe" | grep -v "grep" | wc -l
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "1.16 server ESTABLISHED TCP connect number is: "
echo
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
echo
#============================================================================================================
#MySQL信息
#============================================================================================================
echo
echo_color yellow "#===========================================================================================================#"
echo_color yellow "# 2.1 MySQL basic infomation #"
echo_color yellow "#===========================================================================================================#"
echo
vs_file="variables_status_`date +%Y%m%d%H%M%S`.txt"
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show variables" 1>${vs_file}
echo_color cyan "Import variables "
gs_file="global_status_`date +%Y%m%d%H%M%S`.txt"
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show global status" 1>${gs_file}
echo_color cyan "Import global status "
echo
#============================================================================================================
#MySQL版本和端口
#============================================================================================================
mysql_version=`grep -w "version" $vs_file |awk '{print $2}';`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.1 mysql runing version is: ${mysql_version} "
echo
mysql_port=`grep -w "port" $vs_file |awk '{print $2}'; `
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.2 mysql port is: ${mysql_port} "
echo
#============================================================================================================
#客户端连接的MySQL进程连接数
#============================================================================================================
client_conn_num=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e'show full processlist' |grep -v Id |wc -l`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3 mysql client connect number is: ${client_conn_num} "
echo
#============================================================================================================
#QPS(每秒事务量)
#============================================================================================================
qps_sql="show global status like 'Questions';"
qps1=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "${qps_sql}" |grep -v Variable_name |cut -f 2 `
sleep "${TIME_INTERVAL}"
qps2=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "${qps_sql}" |grep -v Variable_name |cut -f 2`
qps=`awk 'BEGIN{print ('${qps2}'-'${qps1}') / '${TIME_INTERVAL}'}'` #shell默认不支持浮点运算
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.4 current mysql server QPS is: ${qps} "
echo
rm -rf ${qps_re}
#============================================================================================================
#TPS(每秒事务量)
#============================================================================================================
tps_commit_sql="show status where Variable_name in('Com_commit'); "
tps_rollback_sql="show status where Variable_name in('Com_rollback'); "
tps1_commit=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_commit_sql}" |grep -v Variable_name |cut -f 2`
tps1_rollback=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_rollback_sql}" |grep -v Variable_name |cut -f 2 `
tps1=`awk 'BEGIN{print '${tps1_commit}' + '${tps1_rollback}'}'`
sleep "${TIME_INTERVAL}"
tps2_commit=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_commit_sql}" |grep -v Variable_name |cut -f 2`
tps2_rollback=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${tps_rollback_sql}" |grep -v Variable_name |cut -f 2 `
tps2=`awk 'BEGIN{print '${tps2_commit}' + '${tps2_rollback}'}'` #shell默认不支持浮点运算
tps_nums=`awk 'BEGIN{print '${tps2}' - '${tps1}'}'`
tps_avg=`awk 'BEGIN{print '${tps_nums}' / '${TIME_INTERVAL}'}'` #shell默认不支持浮点运算
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.5 current mysql server TPS is: ${tps_avg} "
echo
#============================================================================================================
#key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
#============================================================================================================
kbwd_01="show status like 'Key_writes'; "
kbwd_02="show status like 'Key_write_requests'; "
kbwd_re01="kbwd01_`date +%Y%m%d%H%M%S`.txt"
kbwd_re02="kbwd02_`date +%Y%m%d%H%M%S`.txt"
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${kbwd_01}" |grep -v Variable_name \
|cut -f 2 >${kbwd_re01}
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${kbwd_02}" |grep -v Variable_name \
|cut -f 2 >${kbwd_re02}
kbwd_03=`cat ${kbwd_re01}`
kbwd_04=`cat ${kbwd_re02}`
if [ "${kbwd_03}" -eq 0 ] ;then
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.6 there is no any value!"
echo
else
kbwd_05=`awk 'BEGIN{print '${kbwd_03}' / '${kbwd_04}'}'` #shell默认不支持浮点运算
kbwd_06=`awk 'BEGIN{print '1-${kbwd_05}'}'` #shell默认不支持浮点运算
key_buffer_write_hits=`awk 'BEGIN{print '${kbwd_06}' * 100}'`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.6 current mysql key_buffer_write_hits is: ${key_buffer_write_hits:0:5}% "
echo
fi
rm -rf ${kbwd_re01}
rm -rf ${kbwd_re02}
#============================================================================================================
#InnoDB Buffer命中率
#Innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
#============================================================================================================
innob_01="show status like 'Innodb_buffer_pool_reads'; "
innob_02="show status like 'Innodb_buffer_pool_read_requests'; "
innob_re01="innob_re01_`date +%Y%m%d%H%M%S`.txt"
innob_re02="innob_re02_`date +%Y%m%d%H%M%S`.txt"
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${innob_01}" |grep -v Variable_name \
|cut -f 2 >${innob_re01}
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${innob_02}" |grep -v Variable_name \
|cut -f 2 >${innob_re02}
innob_03=`cat ${innob_re01}`
innob_04=`cat ${innob_re02}`
if [ "${innob_03}" -eq 0 ] ;then
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.7 there is no any value!"
echo
else
innob_05=`awk 'BEGIN{print '${innob_03}' / '${innob_04}'}'` #shell默认不支持浮点运算
innob_06=`awk 'BEGIN{print '1-${innob_05}'}'` #shell默认不支持浮点运算
innodb_buffer_read_hits=`awk 'BEGIN{print '${innob_06}' * 100}'`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.7 current mysql Innodb_buffer_read_hits is: ${innodb_buffer_read_hits:0:5}% "
echo
fi
rm -rf ${innob_re01}
rm -rf ${innob_re02}
#============================================================================================================
#Query Cache命中率
#Query_cache_hits =((Qcache_hits/(Qcache_hits+Qcache_inserts+Qcache_not_cached))*100)
#============================================================================================================
qc_01="show status like 'Qcache_hits'; "
qc_02="show status like 'Qcache_inserts'; "
qc_03="show status like 'Qcache_not_cached'; "
qc_re01="qc_re01_`date +%Y%m%d%H%M%S`.txt"
qc_re02="qc_re02_`date +%Y%m%d%H%M%S`.txt"
qc_re03="qc_re03_`date +%Y%m%d%H%M%S`.txt"
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${qc_01}" |grep -v Variable_name \
|cut -f 2 >${qc_re01}
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${qc_02}" |grep -v Variable_name \
|cut -f 2 >${qc_re02}
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${qc_03}" |grep -v Variable_name \
|cut -f 2 >${qc_re03}
qc_04=`cat ${qc_re01}`
qc_05=`cat ${qc_re02}`
qc_06=`cat ${qc_re03}`
if [ "${qc_04}" -eq 0 ] ;then
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.8 there is no any value!"
echo
else
qc_07=`awk 'BEGIN{print '${qc_04}' + '${qc_05}' + '${qc_06}' }'`
qc_08=`awk 'BEGIN{print '${qc_04}'/'${qc_07}'}'`
query_cache_hits=`awk 'BEGIN{print '${qc_08}' * 100}'`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.8 current mysql query_cache_hits is: ${query_cache_hits:0:5}% "
echo
fi
rm -rf ${qc_re01}
rm -rf ${qc_re02}
rm -rf ${qc_re03}
#============================================================================================================
#索引请求命中率
#key_cache_miss_rate = Key_reads / Key_read_requests * 100% 保持 key_cache_miss_rate < 0.1%
#============================================================================================================
Key_reads=`grep -w "Key_reads" $gs_file |awk '{print $2}'`
Key_read_requests=`grep -w "Key_read_requests" $gs_file |awk '{print $2}' `
if [ "${Key_reads}" -eq 0 ] ;then
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.9 there is no any value!"
echo
else
kr_01=`awk 'BEGIN{print '${Key_reads}' / '${Key_read_requests}'}'` #shell默认不支持浮点运算
# kr_02=`awk 'BEGIN{print '1-${kr_01}'}'` #shell默认不支持浮点运算
key_cache_miss_rate=`awk 'BEGIN{print '${kr_01}' * 100}'`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.9 current mysql key_cache_miss_rate is: ${key_cache_miss_rate:0:5}% "
echo
fi
#============================================================================================================
#binlog日志保留天数
#============================================================================================================
expire_logs_days=`grep "expire_logs_days" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.10 mysql expire_logs_days is: "
echo
echo ${expire_logs_days}
echo
#============================================================================================================
# mysql 3306端口响应时间(毫秒)
#============================================================================================================
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.11 mysql 3306 statistical response time(tcprstat)"
echo
tcprstat -p 3306 -t 1 -n 10
echo
#============================================================================================================
#MySQL 只读状态
#============================================================================================================
read_only_status=`grep "read_only" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.12 mysql read_only status is: "
echo
echo "${read_only_status} "
echo
#============================================================================================================
#MySQL redo log刷新策略
#============================================================================================================
innodb_flush_log_at_trx_commit=`grep "innodb_flush_log_at_trx_commit" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.13 mysql innodb_flush_log_at_trx_commit conf is: "
echo
echo "${innodb_flush_log_at_trx_commit}"
echo
#============================================================================================================
#MySQL binlog刷新策略
#============================================================================================================
sync_binlog=`grep "sync_binlog" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.14 mysql sync_binlog conf is: "
echo
echo "${sync_binlog}"
echo
#============================================================================================================
#MySQL 慢查询配置信息
#============================================================================================================
slow_conf=`grep "slow" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.15 mysql slow conf is: "
echo
echo "${slow_conf}"
echo
#============================================================================================================
#MySQL 慢查询时间
#============================================================================================================
long_query_time=`grep "long_query_time" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.16 mysql long_query_time conf is: "
echo
echo "${long_query_time}"
echo
#============================================================================================================
#MySQL 慢查询状态
#============================================================================================================
Slows=`grep "Slow" $gs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.17 mysql slow status is: "
echo
echo "${Slows}"
echo
#============================================================================================================
#MySQL 最大连接数
#============================================================================================================
max_connections=`grep "max_connections" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.18 mysql max_connections is: "
echo
echo ${max_connections}
echo
#============================================================================================================
#MySQL 最大用户连接数
#============================================================================================================
Max_used_connections=`grep "Max_used_connections" $gs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.19 mysql Max_used_connections is: "
echo
echo ${Max_used_connections}
echo
#============================================================================================================
#MySQL 线程创建情况
#============================================================================================================
Thread=`grep "Thread" ${gs_file}`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.20 mysql thread status is: "
echo
echo "${Thread}"
echo
#============================================================================================================
#MySQL Innodb刷新磁盘方式
#============================================================================================================
innodb_flush_method=`grep "innodb_flush_method" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.21 mysql innodb_flush_method is: "
echo
echo ${innodb_flush_method}
echo
#============================================================================================================
#MySQL Abort 连接情况
#============================================================================================================
abort=`grep "Aborted" $gs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.22 mysql abort status is: "
echo
echo "${abort}"
echo
#============================================================================================================
#MySQL 日志报警级别
#============================================================================================================
log_warnings=`grep -w "log_warnings" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.23 mysql log_warnings status is: "
echo
echo ${log_warnings}
echo
#============================================================================================================
#MySQL binlog 状态
#============================================================================================================
log_bin=`grep -w "log_bin" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.24 mysql log_bin status is: "
echo
echo ${log_bin}
echo
#============================================================================================================
#MySQL binlog_format 日志格式
#============================================================================================================
binlog_format=`grep "binlog_format" $vs_file`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.25 mysql binlog_format is: "
echo
echo ${binlog_format}
echo
echo_color yellow "#===========================================================================================================#"
echo_color yellow "# 2.2 MySQL static parameter #"
echo_color yellow "#===========================================================================================================#"
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.1 mysql basedir is: "
echo
grep -w "basedir" $vs_file |cut -f 2
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.2 mysql datadir is: "
echo
grep -w "datadir" $vs_file |cut -f 2
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.3 mysql plugindir is: "
echo
grep -w "plugin" $vs_file |cut -f 2
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.4 mysql error log is: "
echo
grep -w "log_error" $vs_file |cut -f 2
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.5 mysql pid-file is: "
echo
grep -w "pid" $vs_file |cut -f 2
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.6 mysql socket is: "
echo
grep -w "socket" $vs_file |cut -f 2
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.7 mysql port log is: "
echo
grep -w "port" $vs_file |cut -f 2
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "2.3.8 mysql static parameter check : "
echo
chk_parameter="basedir datadir plugin log_error pid socket "
if [ -s $vs_file ];then
for parameter in $chk_parameter
do
S1=`grep -w "${parameter}" $vs_file |cut -f 2`
S2=standard_${parameter}
eval S3=$(echo \$$S2)
#S3=`echo ${S2}`
#S3=`grep -w ${S2} $STANDARD_MYSQL_CONF |cut -d "=" -f 2`
#S3=`grep -w ${S2} $STANDARD_MYSQL_CONF |cut -d "=" -f 2`
if [ "${S1}" == "${S3}" ];then
echo_color green "mysql $parameter is OK!"
else
echo_color red "WARNING:The $parameter configure is error,Please check " |tee -a ${GLOBAL_LOG}
continue
fi
done
fi
echo
echo_color yellow "#===========================================================================================================#"
echo_color yellow "# 4 MySQL Replication and Statistics #"
echo_color yellow "#===========================================================================================================#"
#============================================================================================================
#MySQL 主从状态
#============================================================================================================
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.1 mysql slave_status is: "
echo
slave_hosts=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -BN -e "show slave hosts" |wc -l`
if [ ${slave_hosts} == '0' ]
then
slave_status=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show slave status\G;" | grep -i "Running" `
master_host=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show slave status\G;" | grep -i "Master_Host"|cut -f 2 -d ":" |sed 's/^[ \t]*//g'`
IO_env=`echo ${slave_status} | grep IO | awk ' {print $2}'`
SQL_env=`echo ${slave_status} | grep SQL | awk ' {print $2}'`
if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
then
echo_color green "MySQL Slave is running!"
else
echo_color red "WARNING:The mysql master-slave is failure or not configure,Please check" |tee -a ${GLOBAL_LOG}
fi
else
echo_color green "This host is master!"
fi
echo
#============================================================================================================
#MySQL Master_Host
#============================================================================================================
#master_host=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show slave status\G;" | grep -i "Master_Host"|cut -f 2 -d ":" |sed 's/^[ \t]*//g'`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.2 mysql master_host is:"
echo
if [ ${slave_hosts} == 0 ];then
echo "${master_host}"
fi
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.3 MySQL master 信息"
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show master status \G "
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.4 MySQL slave 信息"
if [ ${slave_hosts} == 0 ];then
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show slave status \G"
fi
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.5 MySQL slave user信息"
if [ ${slave_hosts} == 0 ];then
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show full processlist \G" |grep Binlog
fi
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.6 MySQL 账号信息"
VERSTON=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -Bse "select @@version" |cut -b 1-3`
if [ $VERSTON = "5.5" ];then
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "SELECT user,host,password FROM mysql.user;"
else
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "SELECT user,host,authentication_string FROM mysql.user;"
fi
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.7 MySQL 数据量信息"
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "SELECT ENGINE AS 引擎类型,count(ENGINE) AS 表的数量,concat(round(sum((data_length+index_length)/1024/1024),2),'MB') AS 总数据量大小,concat(round(sum(data_length)/1024/1024,2),'MB') AS 数据的总大小,concat(round(sum(index_length)/1024/1024,2),'MB') AS 索引的总大小 FROM information_schema.TABLES WHERE table_schema NOT IN ('information_schema','performance_schema','mysql','sys') AND ENGINE IS NOT NULL GROUP BY ENGINE ORDER BY ENGINE ASC"
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.8 MySQL 各个库数据库量"
echo
${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "SELECT ENGINE AS 引擎类型,table_schema AS 库名,count(ENGINE) AS 表的数量,concat(round(sum((data_length+index_length)/1024/1024),2),'MB') AS 总数据量大小,concat(round(sum(data_length)/1024/1024,2),'MB') AS 数据的总大小,concat(round(sum(index_length)/1024/1024,2),'MB') AS 索引的总大小,concat( round( sum( data_free) / 1024 / 1024 , 2 ), 'MB' ) AS 碎片空间 FROM information_schema.TABLES WHERE table_schema NOT IN ('information_schema','performance_schema','mysql','sys') AND ENGINE IS NOT NULL GROUP BY table_schema ORDER BY table_schema ASC;"
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.9 执行mysqltuner.pl 脚本"
echo
/usr/bin/perl mysqltuner.pl --user ${MYSQL_USER} --pass ${MYSQL_PASS} > ${MYSQLTUNER_LOG}
echo_color cyan "execute mysqltuner "
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "3.10 MySQL 显示my.cnf 信息"
echo
egrep -v "^$|^#" /etc/my.cnf >${MYCNF}
echo_color cyan "Import my.cnf "
echo
echo_color yellow "#===========================================================================================================#"
echo_color yellow "# 4 MySQL backup and error.log #"
echo_color yellow "#===========================================================================================================#"
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "4.1 mysql bakcup list: "
echo
bkinfo_01="bakinfo_`date +%Y%m%d%H%M%S`.txt"
if [ ! -d $BAK_PATH ]; then
echo "WARNING:The mysql bakup directory ${BAK_PATH} is not existed,Please check." > ${bkinfo_01} |tee -a ${GLOBAL_LOG}
else
ls -l $BAK_PATH > ${bkinfo_01}
fi
bkinfo_02=`cat ${bkinfo_01}`
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "mysql backup_status is: "
echo
echo -e "${bkinfo_02}"
echo
rm -rf ${bkinfo_01}
echo
echo_color blue "#-----------------------------------------------------------------------------------------------------------#"
echo -e "4.2 mysql error log : "
mysql_error_log=`${MYSQL_COMM} -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e "show variables" | grep -w "log_error" |cut -f 2`
grep -I err $mysql_error_log | tail -n 10
echo
echo
echo_color yellow "#===========================================================================================================#"
echo_color yellow "# 5 WARNING...... #"
echo_color yellow "#===========================================================================================================#"
echo
cat ${GLOBAL_LOG}
echo
rm -rf ${STANDARD_MYSQL_CONF}
rm -rf ${GLOBAL_LOG}
rm -rf ${vs_file}
rm -rf ${gs_file}
echo
echo_color yellow "#------------------------------------------------Done-------------------------------------------------------#"
3、mysqltuner.pl 使用说明
脚本简述:这是mysql调优工具,给出一些基本的建议
- 单独运行
./mysqltuner.pl --user=xxxxxx --pass='xxxxxx'
或者
./mysqltuner.pl 按照提示输入账号秘密
[root@node05 inspection]# ./mysqltuner.pl
>> MySQLTuner 1.7.13 - Major Hayden <[email protected]>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password: [OK] Currently running supported MySQL version 5.7.18-log
[OK] Operating on 64-bit architecture
-------- Log file Recommendations ------------------------------------------------------------------
[--] Log file: /r2/mysqldata/error.log(15M)
[OK] Log file /r2/mysqldata/error.log exists
[OK] Log file /r2/mysqldata/error.log is readable.
[OK] Log file /r2/mysqldata/error.log is not empty
[OK] Log file /r2/mysqldata/error.log is smaller than 32 Mb
[!!] /r2/mysqldata/error.log contains 199 warning(s).
[!!] /r2/mysqldata/error.log contains 48 error(s).
[--] 13 start(s) detected in /r2/mysqldata/error.log
[--] 1) 2018-09-23T11:30:44.421380+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 2) 2018-09-08T14:02:24.419793+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 3) 2018-08-28T14:22:13.766952+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 4) 2018-08-28T14:19:05.843599+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 5) 2018-08-28T13:36:32.106335+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 6) 2018-08-28T12:09:18.446973+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 7) 2018-08-28T11:51:36.883974+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 8) 2018-08-06T17:45:10.958564+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 9) 2018-04-14T12:31:03.915754+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 10) 2018-04-03T09:28:06.695373+08:00 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
[--] 11 shutdown(s) detected in /r2/mysqldata/error.log
[--] 1) 2018-08-28T14:21:14.925010+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 2) 2018-08-28T13:39:34.139421+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 3) 2018-08-28T12:13:11.415338+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 4) 2018-08-28T12:05:50.779021+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 5) 2018-08-06T17:45:39.133446+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 6) 2018-04-14T12:45:53.671195+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 7) 2018-04-03T10:00:19.702983+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 8) 2018-04-03T09:24:02.192051+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 9) 2018-03-30T15:31:22.754077+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
[--] 10) 2018-03-30T15:26:57.967712+08:00 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA
[--] Data in InnoDB tables: 1.7G (Tables: 14)
[OK] Total fragmented tables: 0
-------- Analysis Performance Metrics --------------------------------------------------------------
[--] innodb_stats_on_metadata: OFF
[OK] No stat updates during querying INFORMATION_SCHEMA.
-------- Security Recommendations ------------------------------------------------------------------
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[!!] User 'dbbackup@localhost' has user name as password.
[!!] User 'monitor@%' has user name as password.
[!!] User 'repl@%' has user name as password.
[!!] User 'gcdb@%' does not specify hostname restrictions.
[!!] User 'monitor@%' does not specify hostname restrictions.
[!!] User 'repl@%' does not specify hostname restrictions.
[!!] There is no basic password file list!
-------- CVE Security Recommendations --------------------------------------------------------------
[--] Skipped due to --cvefile option undefined
-------- Performance Metrics -----------------------------------------------------------------------
[--] Up for: 39d 5h 25m 12s (6M q [2.059 qps], 309K conn, TX: 2G, RX: 553M)
[--] Reads / Writes: 21% / 79%
[--] Binary logging is enabled (GTID MODE: ON)
[--] Physical Memory : 3.7G
[--] Max MySQL memory : 280.9G
[--] Other process memory: 39.2M
[--] Total buffers: 5.0G global + 28.2M per thread (10000 max threads)
[--] P_S Max memory usage: 72B
[--] Galera GCache Max memory usage: 0B
[!!] Maximum reached memory usage: 5.3G (143.80% of installed RAM)
[!!] Maximum possible memory usage: 280.9G (7589.63% of installed RAM)
[!!] Overall possible memory usage with other process exceeded memory
[OK] Slow queries: 0% (31/6M)
[OK] Highest usage of available connections: 0% (10/10000)
[!!] Aborted connections: 49.33% (152905/309937)
[OK] Query cache is disabled by default due to mutex contention on multiprocessor machines.
[OK] Sorts requiring temporary tables: 0% (1 temp sorts / 216 sorts)
[OK] No joins without indexes
[!!] Temporary tables created on disk: 26% (140K on disk / 526K total)
[OK] Thread cache hit rate: 99% (10 created / 309K connections)
[!!] Table cache hit rate: 3% (1K open / 28K opened)
[OK] Open file limit used: 0% (70/50K)
[OK] Table locks acquired immediately: 100% (331K immediate / 331K locks)
[OK] Binlog cache memory access: 100.00% (2414856 Memory / 2414858 Total)
-------- Performance schema ------------------------------------------------------------------------
[--] Memory used by P_S: 72B
[--] Sys schema is installed.
-------- ThreadPool Metrics ------------------------------------------------------------------------
[--] ThreadPool stat is disabled.
-------- MyISAM Metrics ----------------------------------------------------------------------------
[!!] Key buffer used: 18.2% (195M used / 1B cache)
[OK] Key buffer size / total MyISAM indexes: 1.0G/43.0K
[OK] Read Key buffer hit rate: 99.9% (5K cached / 7 reads)
-------- InnoDB Metrics ----------------------------------------------------------------------------
[--] InnoDB is enabled.
[--] InnoDB Thread Concurrency: 64
[OK] InnoDB File per table is activated
[OK] InnoDB buffer pool / data size: 4.0G/1.7G
[!!] Ratio InnoDB log file size / InnoDB Buffer pool size (100 %): 2.0G * 2/4.0G should be equal 25%
[!!] InnoDB buffer pool instances: 8
[--] Number of InnoDB Buffer Pool Chunk : 32 for 8 Buffer Pool Instance(s)
[OK] Innodb_buffer_pool_size aligned with Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances
[OK] InnoDB Read buffer efficiency: 99.99% (545706828 hits/ 545736823 total)
[!!] InnoDB Write Log efficiency: 73.85% (6832250 hits/ 9251110 total)
[OK] InnoDB log waits: 0.00% (0 waits / 2418860 writes)
-------- AriaDB Metrics ----------------------------------------------------------------------------
[--] AriaDB is disabled.
-------- TokuDB Metrics ----------------------------------------------------------------------------
[--] TokuDB is disabled.
-------- XtraDB Metrics ----------------------------------------------------------------------------
[--] XtraDB is disabled.
-------- Galera Metrics ----------------------------------------------------------------------------
[--] Galera is disabled.
-------- Replication Metrics -----------------------------------------------------------------------
[--] Galera Synchronous replication: NO
[--] No replication slave(s) for this server.
[--] Binlog format: ROW
[--] XA support enabled: ON
[--] Semi synchronous replication Master: Not Activated
[--] Semi synchronous replication Slave: Not Activated
[--] This is a standalone server
-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
Control warning line(s) into /r2/mysqldata/error.log file
Control error line(s) into /r2/mysqldata/error.log file
Set up a Secure Password for user@host ( SET PASSWORD FOR 'user'@'SpecificDNSorIp' = PASSWORD('secure_password'); )
Restrict Host for user@% to user@SpecificDNSorIp
Reduce your overall MySQL memory footprint for system stability
Dedicate this server to your database for highest performance.
Reduce or eliminate unclosed connections and network issues
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries which have no LIMIT clause
Increase table_open_cache gradually to avoid file descriptor limits
Read this before increasing table_open_cache over 64: http://bit.ly/1mi7c4C
Read this before increasing for MariaDB https://mariadb.com/kb/en/library/optimizing-table_open_cache/
This is MyISAM only table_cache scalability problem, InnoDB not affected.
See more details here: https://bugs.mysql.com/bug.php?id=49177
This bug already fixed in MySQL 5.7.9 and newer MySQL versions.
Beware that open_files_limit (50000) variable
should be greater than table_open_cache (1024)
Before changing innodb_log_file_size and/or innodb_log_files_in_group read this: http://bit.ly/2wgkDvS
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
tmp_table_size (> 32M)
max_heap_table_size (> 32M)
table_open_cache (> 1024)
innodb_log_file_size should be (=512M) if possible, so InnoDB total log files size equals to 25% of buffer pool size.
innodb_buffer_pool_instances(=4)
四、执行结果
inspection_mysql_v4.sh mysqltuner.pl 需要执行权限,mysql需要root权限
[root@slave1 inspection]# chmod -x inspection_mysql_v4.sh mysqltuner.pl
[root@slave1 inspection]# ./inspection_mysql_v4.sh 2>/dev/null
#>>>>>>>>>>>>>>>>>>>>>>>>> slave1 ------ 2018-11-01 16:35:58 <<<<<<<<<<<<<<<<<<<<<<<#
+------------+
| version() |
+------------+
| 5.7.18-log |
+------------+
#===========================================================================================================#
# 1 The system basic infomation #
#===========================================================================================================#
#-----------------------------------------------------------------------------------------------------------#
1.0 server product name is:
Product Name: PowerEdge R720xd
#-----------------------------------------------------------------------------------------------------------#
1.1 server cpuinfo is:
24 *Intel(R) Xeon(R) CPU E5-2620
#-----------------------------------------------------------------------------------------------------------#
1.2 server physical memory number is:
1 *16384 MB 2 *8192 MB 1 *16384 MB 2 *8192 MB
#-----------------------------------------------------------------------------------------------------------#
1.3 server hd disk info is:
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda6 53G 8.6G 42G 18% /
devtmpfs 34G 0 34G 0% /dev
tmpfs 34G 0 34G 0% /dev/shm
tmpfs 34G 2.7G 31G 8% /run
tmpfs 34G 0 34G 0% /sys/fs/cgroup
/dev/sdg1 1.2T 310G 800G 28% /data5
/dev/sdc1 975G 370G 555G 41% /data1
/dev/sdd1 975G 317G 608G 35% /data2
/dev/sdb1 1.0T 726G 224G 77% /r2
/dev/sdh1 1.2T 311G 799G 28% /data6
/dev/sde1 975G 328G 598G 36% /data3
/dev/sdf1 975G 333G 593G 36% /data4
/dev/sdj1 1.2T 313G 797G 29% /data7
/dev/sdi1 1.2T 315G 796G 29% /data8
/dev/sda3 1.1G 106M 848M 12% /boot
/dev/sda5 205G 5.4G 189G 3% /usr/local
#-----------------------------------------------------------------------------------------------------------#
1.4 server hostname is:
slave1
#-----------------------------------------------------------------------------------------------------------#
1.5 server ipaddree is:
192.168.102.131
#-----------------------------------------------------------------------------------------------------------#
1.6 server version is:
CentOS Linux release 7.3.1611 (Core)
#-----------------------------------------------------------------------------------------------------------#
1.7 server system kernel version is:
3.10.0-514.el7.x86_64
#-----------------------------------------------------------------------------------------------------------#
1.8 server CPU load average is:
3.42 2.45 2.22
#-----------------------------------------------------------------------------------------------------------#
1.9 server memory Summary is:
FREE / TOTAL 32765 / 64217 MB
#-----------------------------------------------------------------------------------------------------------#
1.10 server top task status is:
Tasks: 367 total, 1 running, 364 sleeping, 0 stopped, 2 zombie
#-----------------------------------------------------------------------------------------------------------#
1.11 server top cpu status is:
%Cpu(s): 5.5 us, 2.6 sy, 0.0 ni, 91.7 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
#-----------------------------------------------------------------------------------------------------------#
1.12 server top mem status is:
KiB Mem : 65758324 total, 12051048 free, 47868896 used, 5838380 buff/cache
KiB Swap: 33553404 total, 33551392 free, 2012 used. 11977532 avail Mem
#-----------------------------------------------------------------------------------------------------------#
1.13 server top swap status is:
KiB Swap: 33553404 total, 33551392 free, 2012 used. 11966972 avail Mem
#-----------------------------------------------------------------------------------------------------------#
1.14 mysqld services active is:
mysql.service loaded active running
pmm-mysql-metrics-42002.service loaded active running
pmm-mysql-queries-0.service loaded active running
#-----------------------------------------------------------------------------------------------------------#
1.15 mysqld number is:
1
#-----------------------------------------------------------------------------------------------------------#
1.16 server ESTABLISHED TCP connect number is:
ESTABLISHED 457
TIME_WAIT 942
#===========================================================================================================#
# 2.1 MySQL basic infomation #
#===========================================================================================================#
Import variables
Import global status
#-----------------------------------------------------------------------------------------------------------#
2.1 mysql runing version is: 5.7.18-log
#-----------------------------------------------------------------------------------------------------------#
2.2 mysql port is: 3306
#-----------------------------------------------------------------------------------------------------------#
2.3 mysql client connect number is: 3
#-----------------------------------------------------------------------------------------------------------#
2.4 current mysql server QPS is: 23.3333
#-----------------------------------------------------------------------------------------------------------#
2.5 current mysql server TPS is: 0
#-----------------------------------------------------------------------------------------------------------#
2.6 current mysql key_buffer_write_hits is: 92.26%
#-----------------------------------------------------------------------------------------------------------#
2.7 current mysql Innodb_buffer_read_hits is: 99.99%
#-----------------------------------------------------------------------------------------------------------#
2.8 there is no any value!
#-----------------------------------------------------------------------------------------------------------#
2.9 current mysql key_cache_miss_rate is: 2.387%
#-----------------------------------------------------------------------------------------------------------#
2.10 mysql expire_logs_days is:
expire_logs_days 30
#-----------------------------------------------------------------------------------------------------------#
2.11 mysql 3306 statistical response time(tcprstat)
timestamp count max min avg med stddev 95_max 95_avg 95_std 99_max 99_avg 99_std
1541061367 0 0 0 0 0 0 0 0 0 0 0 0
1541061368 8 619 106 254 189 171 443 202 109 443 202 109
1541061369 0 0 0 0 0 0 0 0 0 0 0 0
1541061370 0 0 0 0 0 0 0 0 0 0 0 0
1541061371 8 715 138 290 230 178 398 230 81 398 230 81
1541061372 0 0 0 0 0 0 0 0 0 0 0 0
1541061373 0 0 0 0 0 0 0 0 0 0 0 0
1541061374 8 479 83 208 169 133 371 170 90 371 170 90
1541061375 0 0 0 0 0 0 0 0 0 0 0 0
1541061376 0 0 0 0 0 0 0 0 0 0 0 0
#-----------------------------------------------------------------------------------------------------------#
2.12 mysql read_only status is:
innodb_read_only OFF
read_only OFF
super_read_only OFF
tx_read_only OFF
#-----------------------------------------------------------------------------------------------------------#
2.13 mysql innodb_flush_log_at_trx_commit conf is:
innodb_flush_log_at_trx_commit 2
#-----------------------------------------------------------------------------------------------------------#
2.14 mysql sync_binlog conf is:
sync_binlog 0
#-----------------------------------------------------------------------------------------------------------#
2.15 mysql slow conf is:
log_slow_admin_statements OFF
log_slow_slave_statements OFF
slow_launch_time 2
slow_query_log ON
slow_query_log_file /r2/mysqldata/slow.log
#-----------------------------------------------------------------------------------------------------------#
2.16 mysql long_query_time conf is:
long_query_time 10.000000
#-----------------------------------------------------------------------------------------------------------#
2.17 mysql slow status is:
Slow_launch_threads 0
Slow_queries 157
#-----------------------------------------------------------------------------------------------------------#
2.18 mysql max_connections is:
max_connections 10000
#-----------------------------------------------------------------------------------------------------------#
2.19 mysql Max_used_connections is:
Max_used_connections 8 Max_used_connections_time 2018-09-27 04:00:11
#-----------------------------------------------------------------------------------------------------------#
2.20 mysql thread status is:
Threads_cached 7
Threads_connected 1
Threads_created 8
Threads_running 1
#-----------------------------------------------------------------------------------------------------------#
2.21 mysql innodb_flush_method is:
innodb_flush_method O_DIRECT
#-----------------------------------------------------------------------------------------------------------#
2.22 mysql abort status is:
Aborted_clients 2
Aborted_connects 2
#-----------------------------------------------------------------------------------------------------------#
2.23 mysql log_warnings status is:
log_warnings 2
#-----------------------------------------------------------------------------------------------------------#
2.24 mysql log_bin status is:
log_bin ON
#-----------------------------------------------------------------------------------------------------------#
2.25 mysql binlog_format is:
binlog_format MIXED
#===========================================================================================================#
# 2.2 MySQL static parameter #
#===========================================================================================================#
#-----------------------------------------------------------------------------------------------------------#
2.3.1 mysql basedir is:
/usr/
#-----------------------------------------------------------------------------------------------------------#
2.3.2 mysql datadir is:
/r2/mysqldata/
#-----------------------------------------------------------------------------------------------------------#
2.3.3 mysql plugindir is:
/usr/lib64/mysql/plugin/
#-----------------------------------------------------------------------------------------------------------#
2.3.4 mysql error log is:
/r2/mysqldata/error.log
#-----------------------------------------------------------------------------------------------------------#
2.3.5 mysql pid-file is:
/r2/mysqldata/slave1.pid
#-----------------------------------------------------------------------------------------------------------#
2.3.6 mysql socket is:
/r2/mysqldata/mysql.sock
#-----------------------------------------------------------------------------------------------------------#
2.3.7 mysql port log is:
3306
#-----------------------------------------------------------------------------------------------------------#
2.3.8 mysql static parameter check :
mysql basedir is OK!
mysql datadir is OK!
mysql plugin is OK!
mysql log_error is OK!
mysql pid is OK!
mysql socket is OK!
#===========================================================================================================#
# 4 MySQL Replication and Statistics #
#===========================================================================================================#
#-----------------------------------------------------------------------------------------------------------#
3.1 mysql slave_status is:
MySQL Slave is running!
#-----------------------------------------------------------------------------------------------------------#
3.2 mysql master_host is:
192.168.102.130
#-----------------------------------------------------------------------------------------------------------#
3.3 MySQL master 信息
*************************** 1. row ***************************
File: slave1-bin.000958
Position: 699382221
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 746122da-663e-11e7-9de1-b8ca3a6567c4:1-19119,
a57cd625-663e-11e7-9ba9-b8ca3a64d66c:18606-190213162:190249486-190252207:190327015-207860771:207860811-244861160:244862559-1116656470
#-----------------------------------------------------------------------------------------------------------#
3.4 MySQL slave 信息
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.102.130
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: slave1-bin.000757
Read_Master_Log_Pos: 977018627
Relay_Log_File: slave1-relay-bin.000966
Relay_Log_Pos: 977018842
Relay_Master_Log_File: slave1-bin.000757
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 977018627
Relay_Log_Space: 977019138
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: a57cd625-663e-11e7-9ba9-b8ca3a64d66c
Master_Info_File: /r2/mysqldata/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: a57cd625-663e-11e7-9ba9-b8ca3a64d66c:739182758-1116656470
Executed_Gtid_Set: 746122da-663e-11e7-9de1-b8ca3a6567c4:1-19119,
a57cd625-663e-11e7-9ba9-b8ca3a64d66c:18606-190213162:190249486-190252207:190327015-207860771:207860811-244861160:244862559-1116656470
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
#-----------------------------------------------------------------------------------------------------------#
3.5 MySQL slave user信息
#-----------------------------------------------------------------------------------------------------------#
3.6 MySQL 账号信息
+--------------+-----------+
| user | host |
+--------------+-----------+
| monitor | % |
| repl | % |
| root | % |
| root | localhost |
+--------------+-----------+
#-----------------------------------------------------------------------------------------------------------#
3.7 MySQL 数据量信息
+--------------+--------------+--------------------+--------------------+--------------------+
| 引擎类型 | 表的数量 | 总数据量大小 | 数据的总大小 | 索引的总大小 |
+--------------+--------------+--------------------+--------------------+--------------------+
| InnoDB | 1475 | 8555.11MB | 6741.61MB | 1813.50MB |
| MyISAM | 815 | 462.22MB | 375.53MB | 86.69MB |
+--------------+--------------+--------------------+--------------------+--------------------+
#-----------------------------------------------------------------------------------------------------------#
3.8 MySQL 各个库数据库量
+--------------+-----------------+--------------+--------------------+--------------------+--------------------+--------------+
| 引擎类型 | 库名 | 表的数量 | 总数据量大小 | 数据的总大小 | 索引的总大小 | 碎片空间 |
+--------------+-----------------+--------------+--------------------+--------------------+--------------------+--------------+
| InnoDB | adbcd_data | 7 | 231.38MB | 231.38MB | 0.00MB | 32.00MB |
| InnoDB | adbss_dtss | 182 | 1417.19MB | 1156.67MB | 260.52MB | 796.00MB |
+--------------+-----------------+--------------+--------------------+--------------------+--------------------+--------------+
#-----------------------------------------------------------------------------------------------------------#
3.9 执行mysqltuner.pl 脚本
execute mysqltuner
#-----------------------------------------------------------------------------------------------------------#
3.10 MySQL 显示my.cnf 信息
Import my.cnf
#===========================================================================================================#
# 4 MySQL backup and error.log #
#===========================================================================================================#
#-----------------------------------------------------------------------------------------------------------#
4.1 mysql bakcup list:
#-----------------------------------------------------------------------------------------------------------#
mysql backup_status is:
WARNING:The mysql bakup directory /r2/bak_sql is not existed,Please check.
#-----------------------------------------------------------------------------------------------------------#
4.2 mysql error log :
2018-09-08T14:31:12.555799+08:00 0 [Warning] Using pre 5.5 semantics to load error messages from /usr/share/.
2018-09-08T14:31:18.596139+08:00 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2018-09-23T11:22:29.289013+08:00 0 [Warning] Using pre 5.5 semantics to load error messages from /usr/share/.
2018-09-23T11:22:59.916567+08:00 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
#===========================================================================================================#
# 5 WARNING...... #
#===========================================================================================================#
MySQL is Running
#------------------------------------------------Done-------------------------------------------------------#