目錄php
MySQL常規巡檢node
巡檢腳本包括三個文件inspection.conf、inspection_mysql.sh、mysqltuner.plmysql
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
Github:mysql_inspection.zipgit
使用說明:配置mysql登陸帳號信息以及mysql的標準配置github
#============================================================================================================ #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
inspection_mysql.shsql
腳本簡述 :主腳本經過讀取inspection.conf 配置文件來執行,調用perl來執行 mysqltuner.pl來提供優化建議docker
#!/bin/bash # line: V1.4 # mail: gczheng@139.com # 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-------------------------------------------------------#"
腳本簡述:這是mysql調優工具,給出一些基本的建議shell
./mysqltuner.pl --user=xxxxxx --pass='xxxxxx'數據庫
或者bash
./mysqltuner.pl 按照提示輸入帳號祕密
[root@node05 inspection]# ./mysqltuner.pl >> MySQLTuner 1.7.13 - Major Hayden <major@mhtx.net> >> 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-------------------------------------------------------#