diff --git a/bin/pt-mysql-summary b/bin/pt-mysql-summary index d682030c..a4783bed 100755 --- a/bin/pt-mysql-summary +++ b/bin/pt-mysql-summary @@ -719,7 +719,7 @@ setup_data_dir () { get_var () { local varname="$1" local file="$2" - echo "$(awk "\$1 ~ /^${varname}$/ { if (length(\$2)) { print substr(\$0, index(\$0,\$2)) } }" "${file}")" + awk -v pattern="${varname}" '$1 == pattern { if (length($2)) { print substr($0, index($0,$2)) } }' "${file}" } # ########################################################################### @@ -741,8 +741,7 @@ CMD_MYSQL="${CMD_MYSQL:-""}" CMD_MYSQLDUMP="${CMD_MYSQLDUMP:-""}" collect_mysqld_instances () { - local file="$1" - local variables_file="$2" + local variables_file="$1" local pids="$(_pidof mysqld)" @@ -756,9 +755,9 @@ collect_mysqld_instances () { done pids="$(echo $pids | sed -e 's/ /,/g')" - ps ww -p "$pids" 2>/dev/null > "$file" + ps ww -p "$pids" 2>/dev/null else - echo "mysqld doesn't appear to be running" > "$file" + echo "mysqld doesn't appear to be running" fi } @@ -792,43 +791,35 @@ find_my_cnf_file() { } collect_mysql_variables () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!40100 GLOBAL*/ VARIABLES' > "$file" + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!40100 GLOBAL*/ VARIABLES' } collect_mysql_status () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!50000 GLOBAL*/ STATUS' > "$file" + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!50000 GLOBAL*/ STATUS' } collect_mysql_databases () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW DATABASES' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW DATABASES' 2>/dev/null } collect_mysql_plugins () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW PLUGINS' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW PLUGINS' 2>/dev/null } collect_mysql_slave_status () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW SLAVE STATUS' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW SLAVE STATUS' 2>/dev/null } collect_mysql_innodb_status () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW /*!50000 ENGINE*/ INNODB STATUS' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW /*!50000 ENGINE*/ INNODB STATUS' 2>/dev/null } collect_mysql_processlist () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW FULL PROCESSLIST' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW FULL PROCESSLIST' 2>/dev/null } collect_mysql_users () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SELECT COUNT(*), SUM(user=""), SUM(password=""), SUM(password NOT LIKE "*%") FROM mysql.user' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ss -e 'SELECT COUNT(*), SUM(user=""), SUM(password=""), SUM(password NOT LIKE "*%") FROM mysql.user' 2>/dev/null } collect_master_logs_status () { @@ -840,14 +831,11 @@ collect_master_logs_status () { collect_mysql_deferred_status () { local status_file="$1" - local defer_file="$2" - collect_mysql_status "$TMPDIR/defer_gatherer" - cat "$TMPDIR/defer_gatherer" | join "$status_file" - > "$defer_file" + collect_mysql_status > "$TMPDIR/defer_gatherer" + join "$status_file" "$TMPDIR/defer_gatherer" } collect_internal_vars () { - local file="$1" - local FNV_64="" if $CMD_MYSQL $EXT_ARGV -e 'SELECT FNV_64("a")' >/dev/null 2>&1; then FNV_64="Enabled"; @@ -860,23 +848,22 @@ collect_internal_vars () { local trigger_count=$($CMD_MYSQL $EXT_ARGV -ss -e "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TRIGGERS" 2>/dev/null) local has_symbols="$(has_symbols "${CMD_MYSQL}")" - echo "pt-summary-internal-mysql_executable $CMD_MYSQL" >> "$file" - echo "pt-summary-internal-now $now" >> "$file" - echo "pt-summary-internal-user $user" >> "$file" - echo "pt-summary-internal-FNV_64 $FNV_64" >> "$file" - echo "pt-summary-internal-trigger_count $trigger_count" >> "$file" - echo "pt-summary-internal-symbols $has_symbols" >> "$file" + echo "pt-summary-internal-mysql_executable $CMD_MYSQL" + echo "pt-summary-internal-now $now" + echo "pt-summary-internal-user $user" + echo "pt-summary-internal-FNV_64 $FNV_64" + echo "pt-summary-internal-trigger_count $trigger_count" + echo "pt-summary-internal-symbols $has_symbols" } get_mysqldump_for () { - local file="$1" - local args="$2" - local dbtodump="${3:-"--all-databases"}" + local args="$1" + local dbtodump="${2:-"--all-databases"}" $CMD_MYSQLDUMP $EXT_ARGV --no-data --skip-comments \ --skip-add-locks --skip-add-drop-table --compact \ --skip-lock-all-tables --skip-lock-tables --skip-set-charset \ - ${args} --databases $( local IFS=,; echo ${dbtodump}) >> "$file" + ${args} --databases $( local IFS=,; echo ${dbtodump}) } get_mysqldump_args () { @@ -900,43 +887,42 @@ get_mysqldump_args () { collect_mysql_info () { local dir="$1" - local prefix="${2:-percona-toolkit}" - collect_mysql_variables "$dir/${prefix}-mysql-variables" - collect_mysql_status "$dir/${prefix}-mysql-status" - collect_mysql_databases "$dir/${prefix}-mysql-databases" - collect_mysql_plugins "$dir/${prefix}-mysql-plugins" - collect_mysql_slave_status "$dir/${prefix}-mysql-slave" - collect_mysql_innodb_status "$dir/${prefix}-innodb-status" - collect_mysql_processlist "$dir/${prefix}-mysql-processlist" - collect_mysql_users "$dir/${prefix}-mysql-users" + collect_mysql_variables > "$dir/mysql-variables" + collect_mysql_status > "$dir/mysql-status" + collect_mysql_databases > "$dir/mysql-databases" + collect_mysql_plugins > "$dir/mysql-plugins" + collect_mysql_slave_status > "$dir/mysql-slave" + collect_mysql_innodb_status > "$dir/innodb-status" + collect_mysql_processlist > "$dir/mysql-processlist" + collect_mysql_users > "$dir/mysql-users" - collect_mysqld_instances "$dir/${prefix}-mysqld-instances" "$dir/${prefix}-mysql-variables" + collect_mysqld_instances "$dir/mysql-variables" > "$dir/mysqld-instances" - local binlog="$(get_var log_bin "$dir/${prefix}-mysql-variables")" + local binlog="$(get_var log_bin "$dir/mysql-variables")" if [ "${binlog}" ]; then - collect_master_logs_status "$dir/${prefix}-mysql-master-logs" "$dir/${prefix}-mysql-master-status" + collect_master_logs_status "$dir/mysql-master-logs" "$dir/mysql-master-status" fi - local uptime="$(get_var Uptime "$dir/${prefix}-mysql-status")" + local uptime="$(get_var Uptime "$dir/mysql-status")" local current_time="$($CMD_MYSQL $EXT_ARGV -ss -e \ "SELECT LEFT(NOW() - INTERVAL ${uptime} SECOND, 16)")" - local port="$(get_var port "$dir/${prefix}-mysql-variables")" - local cnf_file=$(find_my_cnf_file "$dir/${prefix}-mysqld-instances" ${port}); + local port="$(get_var port "$dir/mysql-variables")" + local cnf_file=$(find_my_cnf_file "$dir/mysqld-instances" ${port}); - echo "pt-summary-internal-current_time $current_time" >> "$dir/${prefix}-mysql-variables" - echo "pt-summary-internal-Config_File $cnf_file" >> "$dir/${prefix}-mysql-variables" - collect_internal_vars "$dir/${prefix}-mysql-variables" + echo "pt-summary-internal-current_time $current_time" >> "$dir/mysql-variables" + echo "pt-summary-internal-Config_File $cnf_file" >> "$dir/mysql-variables" + collect_internal_vars >> "$dir/mysql-variables" if [ -n "${OPT_DATABASES}" ]; then - local trg_arg="$( get_mysqldump_args "$dir/${prefix}-mysql-variables" )" - get_mysqldump_for "$dir/${prefix}-mysqldump" "${trg_arg}" "${OPT_DATABASES}" + local trg_arg="$( get_mysqldump_args "$dir/mysql-variables" )" + get_mysqldump_for "${trg_arg}" "${OPT_DATABASES}" > "$dir/mysqldump" fi ( sleep $OPT_SLEEP - collect_mysql_deferred_status "$dir/${prefix}-mysql-status" "$dir/${prefix}-mysql-status-defer" + collect_mysql_deferred_status "$dir/mysql-status" > "$dir/mysql-status-defer" ) & _d "Forked child is $!" } @@ -966,10 +952,10 @@ secs_to_time () { feat_on() { local file="$1" + local varname="$2" + [ -e "$file" ] || return - test ! -e "$file" && return - - if get_var "$2" "${file}" 1>/dev/null 2>&1 ; then + if [ "$( get_var "$varname" "${file}" )" ]; then local var="$(awk "\$1 ~ /^$2$/ { print \$2 }" $file)" if [ "${var}" = "ON" ]; then echo "Enabled" @@ -1000,10 +986,10 @@ feat_on() { get_table_cache () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return local table_cache="" - if get_var table_open_cache "${file}" 1>/dev/null 2>&1; then + if [ "$( get_var table_open_cache "${file}" )" ]; then table_cache="$(get_var table_open_cache "${file}")" else table_cache="$(get_var table_cache "${file}")" @@ -1030,7 +1016,7 @@ parse_mysqld_instances () { local port=${port:-""} local datadir="${datadir:-""}" - test ! -e "$file" && return + [ -e "$file" ] || return echo " Port Data Directory Nice OOM Socket" echo " ===== ========================== ==== === ======" @@ -1061,7 +1047,7 @@ parse_mysqld_instances () { get_mysql_timezone () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return local tz="$(get_var time_zone "${file}")" if [ "${tz}" = "SYSTEM" ]; then @@ -1087,7 +1073,7 @@ get_mysql_uptime () { summarize_binlogs () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return local size="$(awk '{t += $2} END{printf "%0.f\n", t}' "$file")" name_val "Binlogs" $(wc -l "$file") @@ -1097,20 +1083,20 @@ summarize_binlogs () { format_users () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk '{printf "%d users, %d anon, %d w/o pw, %d old pw\n", $1, $2, $3, $4}' "${file}" } format_binlog_filters () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return name_val "binlog_do_db" "$(cut -f3 "$file")" name_val "binlog_ignore_db" "$(cut -f4 "$file")" } format_status_variables () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return utime1="$(awk '/Uptime /{print $2}' "$file")"; utime2="$(awk '/Uptime /{print $3}' "$file")"; @@ -1156,7 +1142,7 @@ format_status_variables () { summarize_processlist () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return for param in Command User Host db State; do echo @@ -1208,7 +1194,7 @@ summarize_processlist () { pretty_print_cnf_file () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' BEGIN { @@ -1257,7 +1243,7 @@ find_checkpoint_age() { find_pending_io_reads() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' /Pending normal aio reads/ { @@ -1282,7 +1268,7 @@ find_pending_io_reads() { find_pending_io_writes() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' /aio writes/ { @@ -1313,7 +1299,7 @@ find_pending_io_writes() { find_pending_io_flushes() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' /Pending flushes/ { @@ -1329,7 +1315,7 @@ find_pending_io_flushes() { summarize_undo_log_entries() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return grep 'undo log entries' "${file}" \ | sed -e 's/^.*undo log entries \([0-9]*\)/\1/' \ @@ -1349,7 +1335,7 @@ summarize_undo_log_entries() { find_max_trx_time() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' BEGIN { @@ -1374,7 +1360,7 @@ find_transation_states () { local file="$1" local tmpfile="$TMPDIR/find_transation_states.tmp" - test ! -e "$file" && return + [ -e "$file" ] || return awk -F, '/^---TRANSACTION/{print $2}' "${file}" \ | sed -e 's/ [0-9]* sec.*//' \ @@ -1386,7 +1372,7 @@ find_transation_states () { format_innodb_status () { local file=$1 - test ! -e "$file" && return + [ -e "$file" ] || return name_val "Checkpoint Age" "$(shorten $(find_checkpoint_age "${file}") 0)" name_val "InnoDB Queue" "$(awk '/queries inside/{print}' "${file}")" @@ -1425,7 +1411,7 @@ format_overall_db_stats () { local file="$1" local tmpfile="$TMPDIR/format_overall_db_stats.tmp" - test ! -e "$file" && return + [ -e "$file" ] || return echo awk ' @@ -1704,7 +1690,7 @@ format_overall_db_stats () { section_percona_server_features () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return name_val "Table & Index Stats" \ "$(feat_on "$file" userstat_running)" @@ -1736,7 +1722,7 @@ section_myisam () { local variables_file="$1" local status_file="$2" - test ! -e "$variables_file" -o ! -e "$status_file" && return + [ -e "$variables_file" -a -e "$status_file" ] || return local buf_size="$(get_var key_buffer_size "$variables_file")" local blk_size="$(get_var key_cache_block_size "$variables_file")" @@ -1755,7 +1741,7 @@ section_innodb () { local variables_file="$1" local status_file="$2" - test ! -e "$variables_file" -o ! -e "$status_file" && return + [ -e "$variables_file" -a -e "$status_file" ] || return local version=$(get_var innodb_version "$variables_file") name_val Version ${version:-default} @@ -1812,7 +1798,7 @@ section_innodb () { section_noteworthy_variables () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return name_val "Auto-Inc Incr/Offset" "$(get_var auto_increment_increment "$file")/$(get_var auto_increment_offset "$file")" for v in \ @@ -1838,7 +1824,7 @@ _semi_sync_stats_for () { local target="$1" local file="$2" - test ! -e "$file" && return + [ -e "$file" ] || return local semisync_status="$(get_var "Rpl_semi_sync_${target}_status" "${file}" )" local semisync_trace="$(get_var "rpl_semi_sync_${target}_trace_level" "${file}")" @@ -1914,7 +1900,6 @@ noncounters_pattern () { report_mysql_summary () { local dir="$1" - local prefix="${2:-percona-toolkit}" local NAME_VAL_LEN=25 @@ -1922,40 +1907,40 @@ report_mysql_summary () { section Percona_Toolkit_MySQL_Summary_Report name_val "System time" "`date -u +'%F %T UTC'` (local TZ: `date +'%Z %z'`)" section Instances - parse_mysqld_instances "$dir/${prefix}-mysqld-instances" "$dir/${prefix}-mysql-variables" + parse_mysqld_instances "$dir/mysqld-instances" "$dir/mysql-variables" section MySQL_Executable - name_val "Path to executable" "$( get_var pt-summary-internal-mysql_executable "$dir/${prefix}-mysql-variables" )" - name_val "Has symbols" "$( get_var "pt-summary-internal-symbols" "$dir/${prefix}-mysql-variables" )" + name_val "Path to executable" "$( get_var pt-summary-internal-mysql_executable "$dir/mysql-variables" )" + name_val "Has symbols" "$( get_var "pt-summary-internal-symbols" "$dir/mysql-variables" )" - local user="$(get_var "pt-summary-internal-user" "$dir/${prefix}-mysql-variables")" - local port="$(get_var port "$dir/${prefix}-mysql-variables")" - local now="$(get_var "pt-summary-internal-now" "$dir/${prefix}-mysql-variables")" + local user="$(get_var "pt-summary-internal-user" "$dir/mysql-variables")" + local port="$(get_var port "$dir/mysql-variables")" + local now="$(get_var "pt-summary-internal-now" "$dir/mysql-variables")" section "Report_On_Port_${port}" name_val User "${user}" - name_val Time "${now} ($(get_mysql_timezone "$dir/${prefix}-mysql-variables"))" - name_val Hostname "$(get_var hostname "$dir/${prefix}-mysql-variables")" - get_mysql_version "$dir/${prefix}-mysql-variables" + name_val Time "${now} ($(get_mysql_timezone "$dir/mysql-variables"))" + name_val Hostname "$(get_var hostname "$dir/mysql-variables")" + get_mysql_version "$dir/mysql-variables" - local uptime="$(get_var Uptime "$dir/${prefix}-mysql-status")" - local current_time="$(get_var "pt-summary-internal-current_time" "$dir/${prefix}-mysql-variables")" + local uptime="$(get_var Uptime "$dir/mysql-status")" + local current_time="$(get_var "pt-summary-internal-current_time" "$dir/mysql-variables")" name_val Started "$(get_mysql_uptime "${uptime}" "${current_time}")" - local num_dbs="$(grep -c . "$dir/${prefix}-mysql-databases")" + local num_dbs="$(grep -c . "$dir/mysql-databases")" name_val Databases "${num_dbs}" - name_val Datadir "$(get_var datadir "$dir/${prefix}-mysql-variables")" + name_val Datadir "$(get_var datadir "$dir/mysql-variables")" - local fuzz_procs=$(fuzz $(get_var Threads_connected "$dir/${prefix}-mysql-status")) - local fuzz_procr=$(fuzz $(get_var Threads_running "$dir/${prefix}-mysql-status")) + local fuzz_procs=$(fuzz $(get_var Threads_connected "$dir/mysql-status")) + local fuzz_procr=$(fuzz $(get_var Threads_running "$dir/mysql-status")) name_val Processes "${fuzz_procs} connected, ${fuzz_procr} running" local slave="" - if [ -s "$dir/${prefix}-mysql-slave" ]; then slave=""; else slave="not "; fi - local slavecount=$(grep -c 'Binlog Dump' "$dir/${prefix}-mysql-processlist") + if [ -s "$dir/mysql-slave" ]; then slave=""; else slave="not "; fi + local slavecount=$(grep -c 'Binlog Dump' "$dir/mysql-processlist") name_val Replication "Is ${slave}a slave, has ${slavecount} slaves connected" - local pid_file="$(get_var pid_file "$dir/${prefix}-mysql-variables")" + local pid_file="$(get_var pid_file "$dir/mysql-variables")" local PID_EXISTS="" if [ -e "${pid_file}" ]; then PID_EXISTS="(exists)" @@ -1965,56 +1950,56 @@ report_mysql_summary () { name_val Pidfile "${pid_file} ${PID_EXISTS}" section Processlist - summarize_processlist "$dir/${prefix}-mysql-processlist" + summarize_processlist "$dir/mysql-processlist" section "Status_Counters_(Wait_${OPT_SLEEP}_Seconds)" wait local noncounters_pattern="$(noncounters_pattern)" - format_status_variables "$dir/${prefix}-mysql-status-defer" | grep -v "${noncounters_pattern}" + format_status_variables "$dir/mysql-status-defer" | grep -v "${noncounters_pattern}" section Table_cache - local open_tables=$(get_var Open_tables "$dir/${prefix}-mysql-status") - local table_cache=$(get_table_cache "$dir/${prefix}-mysql-status") + local open_tables=$(get_var Open_tables "$dir/mysql-status") + local table_cache=$(get_table_cache "$dir/mysql-status") name_val Size $table_cache name_val Usage "$(fuzzy_pct ${open_tables} ${table_cache})" section Key_Percona_Server_features - section_percona_server_features "$dir/${prefix}-mysql-variables" + section_percona_server_features "$dir/mysql-variables" section Plugins - name_val "InnoDB compression" "$(get_plugin_status "$dir/${prefix}-mysql-plugins" "INNODB_CMP")" + name_val "InnoDB compression" "$(get_plugin_status "$dir/mysql-plugins" "INNODB_CMP")" - if [ "$(get_var have_query_cache "$dir/${prefix}-mysql-variables")" ]; then + if [ "$(get_var have_query_cache "$dir/mysql-variables")" ]; then section Query_cache - local query_cache_size=$(get_var query_cache_size "$dir/${prefix}-mysql-variables") - local used=$(( ${query_cache_size} - $(get_var Qcache_free_memory "$dir/${prefix}-mysql-status") )) - local hrat=$(fuzzy_pct $(get_var Qcache_hits "$dir/${prefix}-mysql-status") $(get_var Qcache_inserts "$dir/${prefix}-mysql-status")) - name_val query_cache_type $(get_var query_cache_type "$dir/${prefix}-mysql-variables") + local query_cache_size=$(get_var query_cache_size "$dir/mysql-variables") + local used=$(( ${query_cache_size} - $(get_var Qcache_free_memory "$dir/mysql-status") )) + local hrat=$(fuzzy_pct $(get_var Qcache_hits "$dir/mysql-status") $(get_var Qcache_inserts "$dir/mysql-status")) + name_val query_cache_type $(get_var query_cache_type "$dir/mysql-variables") name_val Size "$(shorten ${query_cache_size} 1)" name_val Usage "$(fuzzy_pct ${used} ${query_cache_size})" name_val HitToInsertRatio "${hrat}" fi - local semisync_enabled_master="$(get_var rpl_semi_sync_master_enabled "$dir/${prefix}-mysql-variables")" + local semisync_enabled_master="$(get_var rpl_semi_sync_master_enabled "$dir/mysql-variables")" if [ -n "${semisync_enabled_master}" ]; then section Semisynchronous_Replication if [ "$semisync_enabled_master" = "OFF" -o "$semisync_enabled_master" = "0" -o -z "$semisync_enabled_master" ]; then name_val "Master" "Disabled" else - _semi_sync_stats_for "master" "$dir/${prefix}-mysql-variables" + _semi_sync_stats_for "master" "$dir/mysql-variables" fi - local semisync_enabled_slave="$(get_var rpl_semi_sync_slave_enabled "$dir/${prefix}-mysql-variables")" + local semisync_enabled_slave="$(get_var rpl_semi_sync_slave_enabled "$dir/mysql-variables")" if [ "$semisync_enabled_slave" = "OFF" -o "$semisync_enabled_slave" = "0" -o -z "$semisync_enabled_slave" ]; then name_val "Slave" "Disabled" else - _semi_sync_stats_for "slave" "$dir/${prefix}-mysql-variables" + _semi_sync_stats_for "slave" "$dir/mysql-variables" fi fi section Schema local reply="n" - if [ -n "${OPT_DATABASES}" ] || [ -n "${OPT_READ_SAMPLES}" ] \ - || [ -e "$dir/${prefix}-mysqldump" -a -s "$dir/${prefix}-mysqldump" ]; then + if [ "${OPT_DATABASES}" ] || [ "${OPT_READ_SAMPLES}" ] \ + || [ -e "$dir/mysqldump" -a -s "$dir/mysqldump" ]; then reply="y" elif [ -t 0 -a -t 1 ]; then echo -n "Would you like to mysqldump -d the schema and analyze it? y/n " @@ -2023,126 +2008,129 @@ report_mysql_summary () { fi if echo "${reply:-n}" | grep -i '^y' > /dev/null ; then if [ -z "${OPT_DATABASES}" ] && [ -z "$OPT_READ_SAMPLES" ] \ - && [ ! -e "$dir/${prefix}-mysqldump" ]; then + && [ ! -e "$dir/mysqldump" ]; then echo "There are ${num_dbs} databases. Would you like to dump all, or just one?" echo -n "Type the name of the database, or press Enter to dump all of them. " local dbtodump="" read dbtodump - local trg_arg="$( get_mysqldump_args "$dir/${prefix}-mysql-variables" )" - get_mysqldump_for "$dir/${prefix}-mysqldump" "${trg_arg}" "${dbtodump}" + local trg_arg="$( get_mysqldump_args "$dir/mysql-variables" )" + get_mysqldump_for "$dir/mysqldump" "${trg_arg}" "${dbtodump}" fi - if [ -e "$dir/${prefix}-mysqldump" -a -s "$dir/${prefix}-mysqldump" ] \ - && grep 'CREATE TABLE' "$dir/${prefix}-mysqldump" >/dev/null 2>&1; then - format_overall_db_stats "$dir/${prefix}-mysqldump" + if [ -e "$dir/mysqldump" -a -s "$dir/mysqldump" ] \ + && grep 'CREATE TABLE' "$dir/mysqldump" >/dev/null 2>&1; then + format_overall_db_stats "$dir/mysqldump" + elif [ ! -e "$dir/mysqldump" -a "$OPT_READ_SAMPLES" ]; then + echo "Skipping schema analysis as the directory passed in" \ + "doesn't have a dump file" else - warn "Skipping schema analysis due to apparent error in dump file" + echo "Skipping schema analysis due to apparent error in dump file" fi else echo "Skipping schema analysis" fi - section Noteworthy_Technologies - if [ -s "$dir/${prefix}-mysqldump" ]; then - if grep FULLTEXT "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Full Text Indexing" Yes + section "Noteworthy_Technologies" + if [ -s "$dir/mysqldump" ]; then + if grep FULLTEXT "$dir/mysqldump" > /dev/null; then + name_val "Full Text Indexing" "Yes" else - name_val "Full Text Indexing" No + name_val "Full Text Indexing" "No" fi - if grep 'GEOMETRY\|POINT\|LINESTRING\|POLYGON' "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Geospatial Types" Yes + if grep 'GEOMETRY\|POINT\|LINESTRING\|POLYGON' "$dir/mysqldump" > /dev/null; then + name_val "Geospatial Types" "Yes" else - name_val "Geospatial Types" No + name_val "Geospatial Types" "No" fi - if grep 'FOREIGN KEY' "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Foreign Keys" Yes + if grep 'FOREIGN KEY' "$dir/mysqldump" > /dev/null; then + name_val "Foreign Keys" "Yes" else - name_val "Foreign Keys" No + name_val "Foreign Keys" "No" fi - if grep 'PARTITION BY' "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Partitioning" Yes + if grep 'PARTITION BY' "$dir/mysqldump" > /dev/null; then + name_val "Partitioning" "Yes" else - name_val "Partitioning" No + name_val "Partitioning" "No" fi fi - local ssl="$(get_var Ssl_accepts "$dir/${prefix}-mysql-status")" + local ssl="$(get_var Ssl_accepts "$dir/mysql-status")" if [ -n "$ssl" -a "${ssl:-0}" -gt 0 ]; then - name_val "SSL" Yes + name_val "SSL" "Yes" else - name_val "SSL" No + name_val "SSL" "No" fi - local lock_tables="$(get_var Com_lock_tables "$dir/${prefix}-mysql-status")" + local lock_tables="$(get_var Com_lock_tables "$dir/mysql-status")" if [ -n "$lock_tables" -a "${lock_tables:-0}" -gt 0 ]; then - name_val "Explicit LOCK TABLES" Yes + name_val "Explicit LOCK TABLES" "Yes" else - name_val "Explicit LOCK TABLES" No + name_val "Explicit LOCK TABLES" "No" fi - local delayed_insert="$(get_var Delayed_writes "$dir/${prefix}-mysql-status")" + local delayed_insert="$(get_var Delayed_writes "$dir/mysql-status")" if [ -n "$delayed_insert" -a "${delayed_insert:-0}" -gt 0 ]; then - name_val "Delayed Insert" Yes + name_val "Delayed Insert" "Yes" else - name_val "Delayed Insert" No + name_val "Delayed Insert" "No" fi - local xat="$(get_var Com_xa_start "$dir/${prefix}-mysql-status")" + local xat="$(get_var Com_xa_start "$dir/mysql-status")" if [ -n "$xat" -a "${xat:-0}" -gt 0 ]; then - name_val "XA Transactions" Yes + name_val "XA Transactions" "Yes" else - name_val "XA Transactions" No + name_val "XA Transactions" "No" fi - local ndb_cluster="$(get_var Ndb_cluster_node_id "$dir/${prefix}-mysql-status")" + local ndb_cluster="$(get_var "Ndb_cluster_node_id" "$dir/mysql-status")" if [ -n "$ndb_cluster" -a "${ndb_cluster:-0}" -gt 0 ]; then - name_val "NDB Cluster" Yes + name_val "NDB Cluster" "Yes" else - name_val "NDB Cluster" No + name_val "NDB Cluster" "No" fi - local prep=$(( $(get_var Com_stmt_prepare "$dir/${prefix}-mysql-status") + $(get_var Com_prepare_sql "$dir/${prefix}-mysql-status") )) + local prep=$(( $(get_var "Com_stmt_prepare" "$dir/mysql-status") + $(get_var "Com_prepare_sql" "$dir/mysql-status") )) if [ "${prep}" -gt 0 ]; then - name_val "Prepared Statements" Yes + name_val "Prepared Statements" "Yes" else - name_val "Prepared Statements" No + name_val "Prepared Statements" "No" fi - local prep_count="$(get_var Prepared_stmt_count "$dir/${prefix}-mysql-status")" + local prep_count="$(get_var Prepared_stmt_count "$dir/mysql-status")" if [ "${prep_count}" ]; then name_val "Prepared statement count" "${prep_count}" fi section InnoDB - local have_innodb="$(get_var have_innodb "$dir/${prefix}-mysql-variables")" + local have_innodb="$(get_var have_innodb "$dir/mysql-variables")" if [ "${have_innodb}" = "YES" ]; then - section_innodb "$dir/${prefix}-mysql-variables" "$dir/${prefix}-mysql-status" + section_innodb "$dir/mysql-variables" "$dir/mysql-status" - if [ -s "$dir/${prefix}-innodb-status" ]; then - format_innodb_status "$dir/${prefix}-innodb-status" + if [ -s "$dir/innodb-status" ]; then + format_innodb_status "$dir/innodb-status" fi fi section MyISAM - section_myisam "$dir/${prefix}-mysql-variables" "$dir/${prefix}-mysql-status" + section_myisam "$dir/mysql-variables" "$dir/mysql-status" section Security - local users="$( format_users "$dir/${prefix}-mysql-users" )" + local users="$( format_users "$dir/mysql-users" )" name_val Users "${users}" - name_val "Old Passwords" "$(get_var old_passwords "$dir/${prefix}-mysql-variables")" + name_val "Old Passwords" "$(get_var old_passwords "$dir/mysql-variables")" section Binary_Logging - if [ -s "$dir/${prefix}-mysql-master-logs" ] \ - || [ -s "$dir/${prefix}-mysql-master-status" ]; then - summarize_binlogs "$dir/${prefix}-mysql-master-logs" - local format="$(get_var binlog_format "$dir/${prefix}-mysql-variables")" + if [ -s "$dir/mysql-master-logs" ] \ + || [ -s "$dir/mysql-master-status" ]; then + summarize_binlogs "$dir/mysql-master-logs" + local format="$(get_var binlog_format "$dir/mysql-variables")" name_val binlog_format "${format:-STATEMENT}" - name_val expire_logs_days "$(get_var expire_logs_days "$dir/${prefix}-mysql-variables")" - name_val sync_binlog "$(get_var sync_binlog "$dir/${prefix}-mysql-variables")" - name_val server_id "$(get_var server_id "$dir/${prefix}-mysql-variables")" - format_binlog_filters "$dir/${prefix}-mysql-master-status" + name_val expire_logs_days "$(get_var expire_logs_days "$dir/mysql-variables")" + name_val sync_binlog "$(get_var sync_binlog "$dir/mysql-variables")" + name_val server_id "$(get_var server_id "$dir/mysql-variables")" + format_binlog_filters "$dir/mysql-master-status" fi section Noteworthy_Variables - section_noteworthy_variables "$dir/${prefix}-mysql-variables" + section_noteworthy_variables "$dir/mysql-variables" section Configuration_File - local cnf_file="$(get_var "pt-summary-internal-Config_File" "$dir/${prefix}-mysql-variables")" + local cnf_file="$(get_var "pt-summary-internal-Config_File" "$dir/mysql-variables")" if [ -n "${cnf_file}" ]; then name_val "Config File" "${cnf_file}" pretty_print_cnf_file "${cnf_file}" diff --git a/bin/pt-summary b/bin/pt-summary index aebf1954..7daae402 100755 --- a/bin/pt-summary +++ b/bin/pt-summary @@ -13,13 +13,6 @@ TOOL="pt-summary" POSIXLY_CORRECT=1 export POSIXLY_CORRECT -# Begin by setting the $PATH to include some common locations that are not -# always in the $PATH, including the "sbin" locations, and some common -# locations for proprietary management software, such as RAID controllers. -export PATH="${PATH}:/usr/local/bin:/usr/bin:/bin:/usr/libexec" -export PATH="${PATH}:/usr/local/sbin:/usr/sbin:/sbin" -export PATH="${PATH}:/usr/StorMan/:/opt/MegaRAID/MegaCli/"; - # ########################################################################### # log_warn_die package # This package is a copy without comments from the original. The original @@ -643,7 +636,7 @@ setup_data_dir () { get_var () { local varname="$1" local file="$2" - echo "$(awk "\$1 ~ /^${varname}$/ { if (length(\$2)) { print substr(\$0, index(\$0,\$2)) } }" "${file}")" + awk -v pattern="${varname}" '$1 == pattern { if (length($2)) { print substr($0, index($0,$2)) } }' "${file}" } # ########################################################################### @@ -753,30 +746,32 @@ group_concat () { set -u -CMD_SYSCTL="$(_which sysctl 2>/dev/null )" -CMD_DMIDECODE="$(_which dmidecode 2>/dev/null )" -CMD_ZONENAME="$(_which zonename 2>/dev/null )" -CMD_DMESG="$(_which dmesg 2>/dev/null )" -CMD_FILE="$(_which file 2>/dev/null )" -CMD_LSPCI="$(_which lspci 2>/dev/null )" -CMD_PRTDIAG="$(_which prtdiag 2>/dev/null )" -CMD_SMBIOS="$(_which smbios 2>/dev/null )" -CMD_GETENFORCE="$(_which getenforce 2>/dev/null )" -CMD_PRTCONF="$(_which prtconf 2>/dev/null )" -CMD_LVS="$(_which lvs 2>/dev/null)" -CMD_VGS="$(_which vgs 2>/dev/null)" -CMD_PRSTAT="$(_which prstat 2>/dev/null)" -CMD_ISAINFO="$(_which isainfo 2>/dev/null)" -CMD_TOP="$(_which top 2>/dev/null)" -CMD_ARCCONF="$( _which arcconf 2>/dev/null )" -CMD_HPACUCLI="$( _which hpacucli 2>/dev/null )" -CMD_MEGACLI64="$( _which MegaCli64 2>/dev/null )" -CMD_VMSTAT="$(_which vmstat 2>/dev/null)" -CMD_IP="$( _which ip 2>/dev/null )" -CMD_NETSTAT="$( _which netstat 2>/dev/null )" -CMD_PSRINFO="$( _which psrinfo 2>/dev/null )" -CMD_SWAPCTL="$( _which swapctl 2>/dev/null )" -CMD_LSB_RELEASE="$( _which lsb_release 2>/dev/null )" +setup_commands () { + CMD_SYSCTL="$(_which sysctl 2>/dev/null )" + CMD_DMIDECODE="$(_which dmidecode 2>/dev/null )" + CMD_ZONENAME="$(_which zonename 2>/dev/null )" + CMD_DMESG="$(_which dmesg 2>/dev/null )" + CMD_FILE="$(_which file 2>/dev/null )" + CMD_LSPCI="$(_which lspci 2>/dev/null )" + CMD_PRTDIAG="$(_which prtdiag 2>/dev/null )" + CMD_SMBIOS="$(_which smbios 2>/dev/null )" + CMD_GETENFORCE="$(_which getenforce 2>/dev/null )" + CMD_PRTCONF="$(_which prtconf 2>/dev/null )" + CMD_LVS="$(_which lvs 2>/dev/null)" + CMD_VGS="$(_which vgs 2>/dev/null)" + CMD_PRSTAT="$(_which prstat 2>/dev/null)" + CMD_ISAINFO="$(_which isainfo 2>/dev/null)" + CMD_TOP="$(_which top 2>/dev/null)" + CMD_ARCCONF="$( _which arcconf 2>/dev/null )" + CMD_HPACUCLI="$( _which hpacucli 2>/dev/null )" + CMD_MEGACLI64="$( _which MegaCli64 2>/dev/null )" + CMD_VMSTAT="$(_which vmstat 2>/dev/null)" + CMD_IP="$( _which ip 2>/dev/null )" + CMD_NETSTAT="$( _which netstat 2>/dev/null )" + CMD_PSRINFO="$( _which psrinfo 2>/dev/null )" + CMD_SWAPCTL="$( _which swapctl 2>/dev/null )" + CMD_LSB_RELEASE="$( _which lsb_release 2>/dev/null )" +} collect_system_data () { local PTFUNCNAME=collect_system_data; local data_dir="$1" @@ -2068,6 +2063,15 @@ main () { local PTFUNCNAME=main; local RAN_WITH="--sleep=$OPT_SLEEP --save-samples=$OPT_SAVE_SAMPLES --read-samples=$OPT_READ_SAMPLES" + # Begin by setting the $PATH to include some common locations that are not + # always in the $PATH, including the "sbin" locations, and some common + # locations for proprietary management software, such as RAID controllers. + export PATH="${PATH}:/usr/local/bin:/usr/bin:/bin:/usr/libexec" + export PATH="${PATH}:/usr/local/sbin:/usr/sbin:/sbin" + export PATH="${PATH}:/usr/StorMan/:/opt/MegaRAID/MegaCli/" + + setup_commands + _d "Starting $0 $RAN_WITH" # Set up temporary files. diff --git a/lib/bash/collect_mysql_info.sh b/lib/bash/collect_mysql_info.sh index a494c71f..8f642534 100644 --- a/lib/bash/collect_mysql_info.sh +++ b/lib/bash/collect_mysql_info.sh @@ -30,8 +30,7 @@ CMD_MYSQLDUMP="${CMD_MYSQLDUMP:-""}" # Simply looks for instances of mysqld in the outof of ps. collect_mysqld_instances () { - local file="$1" - local variables_file="$2" + local variables_file="$1" local pids="$(_pidof mysqld)" @@ -45,9 +44,9 @@ collect_mysqld_instances () { done pids="$(echo $pids | sed -e 's/ /,/g')" - ps ww -p "$pids" 2>/dev/null > "$file" + ps ww -p "$pids" 2>/dev/null else - echo "mysqld doesn't appear to be running" > "$file" + echo "mysqld doesn't appear to be running" fi } @@ -85,43 +84,35 @@ find_my_cnf_file() { } collect_mysql_variables () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!40100 GLOBAL*/ VARIABLES' > "$file" + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!40100 GLOBAL*/ VARIABLES' } collect_mysql_status () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!50000 GLOBAL*/ STATUS' > "$file" + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!50000 GLOBAL*/ STATUS' } collect_mysql_databases () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW DATABASES' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW DATABASES' 2>/dev/null } collect_mysql_plugins () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW PLUGINS' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW PLUGINS' 2>/dev/null } collect_mysql_slave_status () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW SLAVE STATUS' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW SLAVE STATUS' 2>/dev/null } collect_mysql_innodb_status () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW /*!50000 ENGINE*/ INNODB STATUS' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW /*!50000 ENGINE*/ INNODB STATUS' 2>/dev/null } collect_mysql_processlist () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW FULL PROCESSLIST' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ssE -e 'SHOW FULL PROCESSLIST' 2>/dev/null } collect_mysql_users () { - local file="$1" - $CMD_MYSQL $EXT_ARGV -ss -e 'SELECT COUNT(*), SUM(user=""), SUM(password=""), SUM(password NOT LIKE "*%") FROM mysql.user' > "$file" 2>/dev/null + $CMD_MYSQL $EXT_ARGV -ss -e 'SELECT COUNT(*), SUM(user=""), SUM(password=""), SUM(password NOT LIKE "*%") FROM mysql.user' 2>/dev/null } collect_master_logs_status () { @@ -134,14 +125,11 @@ collect_master_logs_status () { # Somewhat different from the others, this one joins the status we got earlier collect_mysql_deferred_status () { local status_file="$1" - local defer_file="$2" - collect_mysql_status "$TMPDIR/defer_gatherer" - cat "$TMPDIR/defer_gatherer" | join "$status_file" - > "$defer_file" + collect_mysql_status > "$TMPDIR/defer_gatherer" + join "$status_file" "$TMPDIR/defer_gatherer" } collect_internal_vars () { - local file="$1" - local FNV_64="" if $CMD_MYSQL $EXT_ARGV -e 'SELECT FNV_64("a")' >/dev/null 2>&1; then FNV_64="Enabled"; @@ -154,25 +142,24 @@ collect_internal_vars () { local trigger_count=$($CMD_MYSQL $EXT_ARGV -ss -e "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TRIGGERS" 2>/dev/null) local has_symbols="$(has_symbols "${CMD_MYSQL}")" - echo "pt-summary-internal-mysql_executable $CMD_MYSQL" >> "$file" - echo "pt-summary-internal-now $now" >> "$file" - echo "pt-summary-internal-user $user" >> "$file" - echo "pt-summary-internal-FNV_64 $FNV_64" >> "$file" - echo "pt-summary-internal-trigger_count $trigger_count" >> "$file" - echo "pt-summary-internal-symbols $has_symbols" >> "$file" + echo "pt-summary-internal-mysql_executable $CMD_MYSQL" + echo "pt-summary-internal-now $now" + echo "pt-summary-internal-user $user" + echo "pt-summary-internal-FNV_64 $FNV_64" + echo "pt-summary-internal-trigger_count $trigger_count" + echo "pt-summary-internal-symbols $has_symbols" } # Uses mysqldump and dumps the results to FILE. # args and dbtodump are passed to mysqldump. get_mysqldump_for () { - local file="$1" - local args="$2" - local dbtodump="${3:-"--all-databases"}" + local args="$1" + local dbtodump="${2:-"--all-databases"}" $CMD_MYSQLDUMP $EXT_ARGV --no-data --skip-comments \ --skip-add-locks --skip-add-drop-table --compact \ --skip-lock-all-tables --skip-lock-tables --skip-set-charset \ - ${args} --databases $( local IFS=,; echo ${dbtodump}) >> "$file" + ${args} --databases $( local IFS=,; echo ${dbtodump}) } # Returns a string with arguments to pass to mysqldump. @@ -203,47 +190,46 @@ get_mysqldump_args () { collect_mysql_info () { local dir="$1" - local prefix="${2:-percona-toolkit}" - collect_mysql_variables "$dir/${prefix}-mysql-variables" - collect_mysql_status "$dir/${prefix}-mysql-status" - collect_mysql_databases "$dir/${prefix}-mysql-databases" - collect_mysql_plugins "$dir/${prefix}-mysql-plugins" - collect_mysql_slave_status "$dir/${prefix}-mysql-slave" - collect_mysql_innodb_status "$dir/${prefix}-innodb-status" - collect_mysql_processlist "$dir/${prefix}-mysql-processlist" - collect_mysql_users "$dir/${prefix}-mysql-users" + collect_mysql_variables > "$dir/mysql-variables" + collect_mysql_status > "$dir/mysql-status" + collect_mysql_databases > "$dir/mysql-databases" + collect_mysql_plugins > "$dir/mysql-plugins" + collect_mysql_slave_status > "$dir/mysql-slave" + collect_mysql_innodb_status > "$dir/innodb-status" + collect_mysql_processlist > "$dir/mysql-processlist" + collect_mysql_users > "$dir/mysql-users" - collect_mysqld_instances "$dir/${prefix}-mysqld-instances" "$dir/${prefix}-mysql-variables" + collect_mysqld_instances "$dir/mysql-variables" > "$dir/mysqld-instances" - local binlog="$(get_var log_bin "$dir/${prefix}-mysql-variables")" + local binlog="$(get_var log_bin "$dir/mysql-variables")" if [ "${binlog}" ]; then # "Got a binlog, going to get MASTER LOGS and MASTER STATUS" - collect_master_logs_status "$dir/${prefix}-mysql-master-logs" "$dir/${prefix}-mysql-master-status" + collect_master_logs_status "$dir/mysql-master-logs" "$dir/mysql-master-status" fi - local uptime="$(get_var Uptime "$dir/${prefix}-mysql-status")" + local uptime="$(get_var Uptime "$dir/mysql-status")" local current_time="$($CMD_MYSQL $EXT_ARGV -ss -e \ "SELECT LEFT(NOW() - INTERVAL ${uptime} SECOND, 16)")" - local port="$(get_var port "$dir/${prefix}-mysql-variables")" - local cnf_file=$(find_my_cnf_file "$dir/${prefix}-mysqld-instances" ${port}); + local port="$(get_var port "$dir/mysql-variables")" + local cnf_file=$(find_my_cnf_file "$dir/mysqld-instances" ${port}); # TODO: Do these require a file of their own? - echo "pt-summary-internal-current_time $current_time" >> "$dir/${prefix}-mysql-variables" - echo "pt-summary-internal-Config_File $cnf_file" >> "$dir/${prefix}-mysql-variables" - collect_internal_vars "$dir/${prefix}-mysql-variables" + echo "pt-summary-internal-current_time $current_time" >> "$dir/mysql-variables" + echo "pt-summary-internal-Config_File $cnf_file" >> "$dir/mysql-variables" + collect_internal_vars >> "$dir/mysql-variables" if [ -n "${OPT_DATABASES}" ]; then # "--dump-schemas passed in, dumping early" - local trg_arg="$( get_mysqldump_args "$dir/${prefix}-mysql-variables" )" - get_mysqldump_for "$dir/${prefix}-mysqldump" "${trg_arg}" "${OPT_DATABASES}" + local trg_arg="$( get_mysqldump_args "$dir/mysql-variables" )" + get_mysqldump_for "${trg_arg}" "${OPT_DATABASES}" > "$dir/mysqldump" fi # TODO: gather this data in the same format as normal: TS line, stats ( sleep $OPT_SLEEP - collect_mysql_deferred_status "$dir/${prefix}-mysql-status" "$dir/${prefix}-mysql-status-defer" + collect_mysql_deferred_status "$dir/mysql-status" > "$dir/mysql-status-defer" ) & _d "Forked child is $!" } diff --git a/lib/bash/collect_system_info.sh b/lib/bash/collect_system_info.sh index e43852c7..93243907 100644 --- a/lib/bash/collect_system_info.sh +++ b/lib/bash/collect_system_info.sh @@ -27,31 +27,34 @@ set -u -# While extremely unwieldly, this allows us to fake the commands when testing. -CMD_SYSCTL="$(_which sysctl 2>/dev/null )" -CMD_DMIDECODE="$(_which dmidecode 2>/dev/null )" -CMD_ZONENAME="$(_which zonename 2>/dev/null )" -CMD_DMESG="$(_which dmesg 2>/dev/null )" -CMD_FILE="$(_which file 2>/dev/null )" -CMD_LSPCI="$(_which lspci 2>/dev/null )" -CMD_PRTDIAG="$(_which prtdiag 2>/dev/null )" -CMD_SMBIOS="$(_which smbios 2>/dev/null )" -CMD_GETENFORCE="$(_which getenforce 2>/dev/null )" -CMD_PRTCONF="$(_which prtconf 2>/dev/null )" -CMD_LVS="$(_which lvs 2>/dev/null)" -CMD_VGS="$(_which vgs 2>/dev/null)" -CMD_PRSTAT="$(_which prstat 2>/dev/null)" -CMD_ISAINFO="$(_which isainfo 2>/dev/null)" -CMD_TOP="$(_which top 2>/dev/null)" -CMD_ARCCONF="$( _which arcconf 2>/dev/null )" -CMD_HPACUCLI="$( _which hpacucli 2>/dev/null )" -CMD_MEGACLI64="$( _which MegaCli64 2>/dev/null )" -CMD_VMSTAT="$(_which vmstat 2>/dev/null)" -CMD_IP="$( _which ip 2>/dev/null )" -CMD_NETSTAT="$( _which netstat 2>/dev/null )" -CMD_PSRINFO="$( _which psrinfo 2>/dev/null )" -CMD_SWAPCTL="$( _which swapctl 2>/dev/null )" -CMD_LSB_RELEASE="$( _which lsb_release 2>/dev/null )" +# This is inside a function so it can take into account our PATH mungling. +setup_commands () { + # While extremely unwieldly, this allows us to fake the commands when testing. + CMD_SYSCTL="$(_which sysctl 2>/dev/null )" + CMD_DMIDECODE="$(_which dmidecode 2>/dev/null )" + CMD_ZONENAME="$(_which zonename 2>/dev/null )" + CMD_DMESG="$(_which dmesg 2>/dev/null )" + CMD_FILE="$(_which file 2>/dev/null )" + CMD_LSPCI="$(_which lspci 2>/dev/null )" + CMD_PRTDIAG="$(_which prtdiag 2>/dev/null )" + CMD_SMBIOS="$(_which smbios 2>/dev/null )" + CMD_GETENFORCE="$(_which getenforce 2>/dev/null )" + CMD_PRTCONF="$(_which prtconf 2>/dev/null )" + CMD_LVS="$(_which lvs 2>/dev/null)" + CMD_VGS="$(_which vgs 2>/dev/null)" + CMD_PRSTAT="$(_which prstat 2>/dev/null)" + CMD_ISAINFO="$(_which isainfo 2>/dev/null)" + CMD_TOP="$(_which top 2>/dev/null)" + CMD_ARCCONF="$( _which arcconf 2>/dev/null )" + CMD_HPACUCLI="$( _which hpacucli 2>/dev/null )" + CMD_MEGACLI64="$( _which MegaCli64 2>/dev/null )" + CMD_VMSTAT="$(_which vmstat 2>/dev/null)" + CMD_IP="$( _which ip 2>/dev/null )" + CMD_NETSTAT="$( _which netstat 2>/dev/null )" + CMD_PSRINFO="$( _which psrinfo 2>/dev/null )" + CMD_SWAPCTL="$( _which swapctl 2>/dev/null )" + CMD_LSB_RELEASE="$( _which lsb_release 2>/dev/null )" +} collect_system_data () { local PTFUNCNAME=collect_system_data; local data_dir="$1" diff --git a/lib/bash/report_mysql_info.sh b/lib/bash/report_mysql_info.sh index 8879af3e..9f803880 100644 --- a/lib/bash/report_mysql_info.sh +++ b/lib/bash/report_mysql_info.sh @@ -37,10 +37,10 @@ secs_to_time () { # (string equal) to some value. feat_on() { local file="$1" + local varname="$2" + [ -e "$file" ] || return - test ! -e "$file" && return - - if get_var "$2" "${file}" 1>/dev/null 2>&1 ; then + if [ "$( get_var "$varname" "${file}" )" ]; then local var="$(awk "\$1 ~ /^$2$/ { print \$2 }" $file)" if [ "${var}" = "ON" ]; then echo "Enabled" @@ -71,10 +71,10 @@ feat_on() { get_table_cache () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return local table_cache="" - if get_var table_open_cache "${file}" 1>/dev/null 2>&1; then + if [ "$( get_var table_open_cache "${file}" )" ]; then table_cache="$(get_var table_open_cache "${file}")" else table_cache="$(get_var table_cache "${file}")" @@ -108,7 +108,7 @@ parse_mysqld_instances () { local port=${port:-""} local datadir="${datadir:-""}" - test ! -e "$file" && return + [ -e "$file" ] || return echo " Port Data Directory Nice OOM Socket" echo " ===== ========================== ==== === ======" @@ -143,7 +143,7 @@ parse_mysqld_instances () { get_mysql_timezone () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return local tz="$(get_var time_zone "${file}")" if [ "${tz}" = "SYSTEM" ]; then @@ -172,7 +172,7 @@ get_mysql_uptime () { summarize_binlogs () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return local size="$(awk '{t += $2} END{printf "%0.f\n", t}' "$file")" name_val "Binlogs" $(wc -l "$file") @@ -182,14 +182,14 @@ summarize_binlogs () { format_users () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk '{printf "%d users, %d anon, %d w/o pw, %d old pw\n", $1, $2, $3, $4}' "${file}" } # Print out binlog_do_db and binlog_ignore_db format_binlog_filters () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return name_val "binlog_do_db" "$(cut -f3 "$file")" name_val "binlog_ignore_db" "$(cut -f4 "$file")" } @@ -200,7 +200,7 @@ format_binlog_filters () { # samples. Omits any rows that are all zeroes. format_status_variables () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return # First, figure out the intervals. utime1="$(awk '/Uptime /{print $2}' "$file")"; @@ -256,7 +256,7 @@ format_status_variables () { summarize_processlist () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return for param in Command User Host db State; do echo @@ -312,7 +312,7 @@ summarize_processlist () { pretty_print_cnf_file () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' BEGIN { @@ -361,7 +361,7 @@ find_checkpoint_age() { find_pending_io_reads() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' /Pending normal aio reads/ { @@ -386,7 +386,7 @@ find_pending_io_reads() { find_pending_io_writes() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' /aio writes/ { @@ -417,7 +417,7 @@ find_pending_io_writes() { find_pending_io_flushes() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' /Pending flushes/ { @@ -433,7 +433,7 @@ find_pending_io_flushes() { summarize_undo_log_entries() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return grep 'undo log entries' "${file}" \ | sed -e 's/^.*undo log entries \([0-9]*\)/\1/' \ @@ -453,7 +453,7 @@ summarize_undo_log_entries() { find_max_trx_time() { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return awk ' BEGIN { @@ -478,7 +478,7 @@ find_transation_states () { local file="$1" local tmpfile="$TMPDIR/find_transation_states.tmp" - test ! -e "$file" && return + [ -e "$file" ] || return awk -F, '/^---TRANSACTION/{print $2}' "${file}" \ | sed -e 's/ [0-9]* sec.*//' \ @@ -491,7 +491,7 @@ find_transation_states () { format_innodb_status () { local file=$1 - test ! -e "$file" && return + [ -e "$file" ] || return name_val "Checkpoint Age" "$(shorten $(find_checkpoint_age "${file}") 0)" name_val "InnoDB Queue" "$(awk '/queries inside/{print}' "${file}")" @@ -533,7 +533,7 @@ format_overall_db_stats () { local file="$1" local tmpfile="$TMPDIR/format_overall_db_stats.tmp" - test ! -e "$file" && return + [ -e "$file" ] || return echo # We keep counts of everything in an associative array keyed by db name, and @@ -827,7 +827,7 @@ format_overall_db_stats () { section_percona_server_features () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return name_val "Table & Index Stats" \ "$(feat_on "$file" userstat_running)" @@ -859,7 +859,7 @@ section_myisam () { local variables_file="$1" local status_file="$2" - test ! -e "$variables_file" -o ! -e "$status_file" && return + [ -e "$variables_file" -a -e "$status_file" ] || return local buf_size="$(get_var key_buffer_size "$variables_file")" local blk_size="$(get_var key_cache_block_size "$variables_file")" @@ -878,7 +878,7 @@ section_innodb () { local variables_file="$1" local status_file="$2" - test ! -e "$variables_file" -o ! -e "$status_file" && return + [ -e "$variables_file" -a -e "$status_file" ] || return # XXX TODO I don't think this is working right. # XXX TODO Should it use data from information_schema.plugins too? @@ -937,7 +937,7 @@ section_innodb () { section_noteworthy_variables () { local file="$1" - test ! -e "$file" && return + [ -e "$file" ] || return name_val "Auto-Inc Incr/Offset" "$(get_var auto_increment_increment "$file")/$(get_var auto_increment_offset "$file")" for v in \ @@ -966,7 +966,7 @@ _semi_sync_stats_for () { local target="$1" local file="$2" - test ! -e "$file" && return + [ -e "$file" ] || return local semisync_status="$(get_var "Rpl_semi_sync_${target}_status" "${file}" )" local semisync_trace="$(get_var "rpl_semi_sync_${target}_trace_level" "${file}")" @@ -1045,7 +1045,6 @@ noncounters_pattern () { report_mysql_summary () { local dir="$1" - local prefix="${2:-percona-toolkit}" # Field width for name_val local NAME_VAL_LEN=25 @@ -1057,45 +1056,45 @@ report_mysql_summary () { section Percona_Toolkit_MySQL_Summary_Report name_val "System time" "`date -u +'%F %T UTC'` (local TZ: `date +'%Z %z'`)" section Instances - parse_mysqld_instances "$dir/${prefix}-mysqld-instances" "$dir/${prefix}-mysql-variables" + parse_mysqld_instances "$dir/mysqld-instances" "$dir/mysql-variables" section MySQL_Executable - name_val "Path to executable" "$( get_var pt-summary-internal-mysql_executable "$dir/${prefix}-mysql-variables" )" - name_val "Has symbols" "$( get_var "pt-summary-internal-symbols" "$dir/${prefix}-mysql-variables" )" + name_val "Path to executable" "$( get_var pt-summary-internal-mysql_executable "$dir/mysql-variables" )" + name_val "Has symbols" "$( get_var "pt-summary-internal-symbols" "$dir/mysql-variables" )" # ######################################################################## # General date, hostname, etc # ######################################################################## - local user="$(get_var "pt-summary-internal-user" "$dir/${prefix}-mysql-variables")" - local port="$(get_var port "$dir/${prefix}-mysql-variables")" - local now="$(get_var "pt-summary-internal-now" "$dir/${prefix}-mysql-variables")" + local user="$(get_var "pt-summary-internal-user" "$dir/mysql-variables")" + local port="$(get_var port "$dir/mysql-variables")" + local now="$(get_var "pt-summary-internal-now" "$dir/mysql-variables")" section "Report_On_Port_${port}" name_val User "${user}" - name_val Time "${now} ($(get_mysql_timezone "$dir/${prefix}-mysql-variables"))" - name_val Hostname "$(get_var hostname "$dir/${prefix}-mysql-variables")" - get_mysql_version "$dir/${prefix}-mysql-variables" + name_val Time "${now} ($(get_mysql_timezone "$dir/mysql-variables"))" + name_val Hostname "$(get_var hostname "$dir/mysql-variables")" + get_mysql_version "$dir/mysql-variables" - local uptime="$(get_var Uptime "$dir/${prefix}-mysql-status")" - local current_time="$(get_var "pt-summary-internal-current_time" "$dir/${prefix}-mysql-variables")" + local uptime="$(get_var Uptime "$dir/mysql-status")" + local current_time="$(get_var "pt-summary-internal-current_time" "$dir/mysql-variables")" name_val Started "$(get_mysql_uptime "${uptime}" "${current_time}")" - local num_dbs="$(grep -c . "$dir/${prefix}-mysql-databases")" + local num_dbs="$(grep -c . "$dir/mysql-databases")" name_val Databases "${num_dbs}" - name_val Datadir "$(get_var datadir "$dir/${prefix}-mysql-variables")" + name_val Datadir "$(get_var datadir "$dir/mysql-variables")" - local fuzz_procs=$(fuzz $(get_var Threads_connected "$dir/${prefix}-mysql-status")) - local fuzz_procr=$(fuzz $(get_var Threads_running "$dir/${prefix}-mysql-status")) + local fuzz_procs=$(fuzz $(get_var Threads_connected "$dir/mysql-status")) + local fuzz_procr=$(fuzz $(get_var Threads_running "$dir/mysql-status")) name_val Processes "${fuzz_procs} connected, ${fuzz_procr} running" local slave="" - if [ -s "$dir/${prefix}-mysql-slave" ]; then slave=""; else slave="not "; fi - local slavecount=$(grep -c 'Binlog Dump' "$dir/${prefix}-mysql-processlist") + if [ -s "$dir/mysql-slave" ]; then slave=""; else slave="not "; fi + local slavecount=$(grep -c 'Binlog Dump' "$dir/mysql-processlist") name_val Replication "Is ${slave}a slave, has ${slavecount} slaves connected" # TODO move this into a section with other files: error log, slow log and # show the sizes - local pid_file="$(get_var pid_file "$dir/${prefix}-mysql-variables")" + local pid_file="$(get_var pid_file "$dir/mysql-variables")" local PID_EXISTS="" if [ -e "${pid_file}" ]; then PID_EXISTS="(exists)" @@ -1108,7 +1107,7 @@ report_mysql_summary () { # Processlist, sliced several different ways # ######################################################################## section Processlist - summarize_processlist "$dir/${prefix}-mysql-processlist" + summarize_processlist "$dir/mysql-processlist" # ######################################################################## # Queries and query plans @@ -1117,14 +1116,14 @@ report_mysql_summary () { # Wait for the child that was forked during collection. wait local noncounters_pattern="$(noncounters_pattern)" - format_status_variables "$dir/${prefix}-mysql-status-defer" | grep -v "${noncounters_pattern}" + format_status_variables "$dir/mysql-status-defer" | grep -v "${noncounters_pattern}" # ######################################################################## # Table cache # ######################################################################## section Table_cache - local open_tables=$(get_var Open_tables "$dir/${prefix}-mysql-status") - local table_cache=$(get_table_cache "$dir/${prefix}-mysql-status") + local open_tables=$(get_var Open_tables "$dir/mysql-status") + local table_cache=$(get_table_cache "$dir/mysql-status") name_val Size $table_cache name_val Usage "$(fuzzy_pct ${open_tables} ${table_cache})" @@ -1132,41 +1131,41 @@ report_mysql_summary () { # Percona Server features # ######################################################################## section Key_Percona_Server_features - section_percona_server_features "$dir/${prefix}-mysql-variables" + section_percona_server_features "$dir/mysql-variables" # ######################################################################## # Plugins # ######################################################################## section Plugins - name_val "InnoDB compression" "$(get_plugin_status "$dir/${prefix}-mysql-plugins" "INNODB_CMP")" + name_val "InnoDB compression" "$(get_plugin_status "$dir/mysql-plugins" "INNODB_CMP")" # ######################################################################## # Query cache # ######################################################################## - if [ "$(get_var have_query_cache "$dir/${prefix}-mysql-variables")" ]; then + if [ "$(get_var have_query_cache "$dir/mysql-variables")" ]; then section Query_cache - local query_cache_size=$(get_var query_cache_size "$dir/${prefix}-mysql-variables") - local used=$(( ${query_cache_size} - $(get_var Qcache_free_memory "$dir/${prefix}-mysql-status") )) - local hrat=$(fuzzy_pct $(get_var Qcache_hits "$dir/${prefix}-mysql-status") $(get_var Qcache_inserts "$dir/${prefix}-mysql-status")) - name_val query_cache_type $(get_var query_cache_type "$dir/${prefix}-mysql-variables") + local query_cache_size=$(get_var query_cache_size "$dir/mysql-variables") + local used=$(( ${query_cache_size} - $(get_var Qcache_free_memory "$dir/mysql-status") )) + local hrat=$(fuzzy_pct $(get_var Qcache_hits "$dir/mysql-status") $(get_var Qcache_inserts "$dir/mysql-status")) + name_val query_cache_type $(get_var query_cache_type "$dir/mysql-variables") name_val Size "$(shorten ${query_cache_size} 1)" name_val Usage "$(fuzzy_pct ${used} ${query_cache_size})" name_val HitToInsertRatio "${hrat}" fi - local semisync_enabled_master="$(get_var rpl_semi_sync_master_enabled "$dir/${prefix}-mysql-variables")" + local semisync_enabled_master="$(get_var rpl_semi_sync_master_enabled "$dir/mysql-variables")" if [ -n "${semisync_enabled_master}" ]; then section Semisynchronous_Replication if [ "$semisync_enabled_master" = "OFF" -o "$semisync_enabled_master" = "0" -o -z "$semisync_enabled_master" ]; then name_val "Master" "Disabled" else - _semi_sync_stats_for "master" "$dir/${prefix}-mysql-variables" + _semi_sync_stats_for "master" "$dir/mysql-variables" fi - local semisync_enabled_slave="$(get_var rpl_semi_sync_slave_enabled "$dir/${prefix}-mysql-variables")" + local semisync_enabled_slave="$(get_var rpl_semi_sync_slave_enabled "$dir/mysql-variables")" if [ "$semisync_enabled_slave" = "OFF" -o "$semisync_enabled_slave" = "0" -o -z "$semisync_enabled_slave" ]; then name_val "Slave" "Disabled" else - _semi_sync_stats_for "slave" "$dir/${prefix}-mysql-variables" + _semi_sync_stats_for "slave" "$dir/mysql-variables" fi fi @@ -1177,10 +1176,10 @@ report_mysql_summary () { # Assume "no" if stdin or stdout is not a terminal, so this can be run and # put into a file, or piped into a pager, or something else like that. local reply="n" - # But dump no matter what if they passed in something through --dump-schemas, + # But dump no matter what if they passed in something through --databases, # OR if --read-samples was set - if [ -n "${OPT_DATABASES}" ] || [ -n "${OPT_READ_SAMPLES}" ] \ - || [ -e "$dir/${prefix}-mysqldump" -a -s "$dir/${prefix}-mysqldump" ]; then + if [ "${OPT_DATABASES}" ] || [ "${OPT_READ_SAMPLES}" ] \ + || [ -e "$dir/mysqldump" -a -s "$dir/mysqldump" ]; then reply="y" elif [ -t 0 -a -t 1 ]; then echo -n "Would you like to mysqldump -d the schema and analyze it? y/n " @@ -1189,24 +1188,27 @@ report_mysql_summary () { fi if echo "${reply:-n}" | grep -i '^y' > /dev/null ; then if [ -z "${OPT_DATABASES}" ] && [ -z "$OPT_READ_SAMPLES" ] \ - && [ ! -e "$dir/${prefix}-mysqldump" ]; then + && [ ! -e "$dir/mysqldump" ]; then # If --dump-schemas wasn't used, ask what they want to dump echo "There are ${num_dbs} databases. Would you like to dump all, or just one?" echo -n "Type the name of the database, or press Enter to dump all of them. " local dbtodump="" read dbtodump - local trg_arg="$( get_mysqldump_args "$dir/${prefix}-mysql-variables" )" - get_mysqldump_for "$dir/${prefix}-mysqldump" "${trg_arg}" "${dbtodump}" + local trg_arg="$( get_mysqldump_args "$dir/mysql-variables" )" + get_mysqldump_for "$dir/mysqldump" "${trg_arg}" "${dbtodump}" fi # Test the result by checking the file, not by the exit status, because we # might get partway through and then die, and the info is worth analyzing # anyway. - if [ -e "$dir/${prefix}-mysqldump" -a -s "$dir/${prefix}-mysqldump" ] \ - && grep 'CREATE TABLE' "$dir/${prefix}-mysqldump" >/dev/null 2>&1; then - format_overall_db_stats "$dir/${prefix}-mysqldump" + if [ -e "$dir/mysqldump" -a -s "$dir/mysqldump" ] \ + && grep 'CREATE TABLE' "$dir/mysqldump" >/dev/null 2>&1; then + format_overall_db_stats "$dir/mysqldump" + elif [ ! -e "$dir/mysqldump" -a "$OPT_READ_SAMPLES" ]; then + echo "Skipping schema analysis as the directory passed in" \ + "doesn't have a dump file" else - warn "Skipping schema analysis due to apparent error in dump file" + echo "Skipping schema analysis due to apparent error in dump file" fi else echo "Skipping schema analysis" @@ -1215,66 +1217,66 @@ report_mysql_summary () { # ######################################################################## # Noteworthy Technologies # ######################################################################## - section Noteworthy_Technologies - if [ -s "$dir/${prefix}-mysqldump" ]; then - if grep FULLTEXT "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Full Text Indexing" Yes + section "Noteworthy_Technologies" + if [ -s "$dir/mysqldump" ]; then + if grep FULLTEXT "$dir/mysqldump" > /dev/null; then + name_val "Full Text Indexing" "Yes" else - name_val "Full Text Indexing" No + name_val "Full Text Indexing" "No" fi - if grep 'GEOMETRY\|POINT\|LINESTRING\|POLYGON' "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Geospatial Types" Yes + if grep 'GEOMETRY\|POINT\|LINESTRING\|POLYGON' "$dir/mysqldump" > /dev/null; then + name_val "Geospatial Types" "Yes" else - name_val "Geospatial Types" No + name_val "Geospatial Types" "No" fi - if grep 'FOREIGN KEY' "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Foreign Keys" Yes + if grep 'FOREIGN KEY' "$dir/mysqldump" > /dev/null; then + name_val "Foreign Keys" "Yes" else - name_val "Foreign Keys" No + name_val "Foreign Keys" "No" fi - if grep 'PARTITION BY' "$dir/${prefix}-mysqldump" > /dev/null; then - name_val "Partitioning" Yes + if grep 'PARTITION BY' "$dir/mysqldump" > /dev/null; then + name_val "Partitioning" "Yes" else - name_val "Partitioning" No + name_val "Partitioning" "No" fi fi - local ssl="$(get_var Ssl_accepts "$dir/${prefix}-mysql-status")" + local ssl="$(get_var Ssl_accepts "$dir/mysql-status")" if [ -n "$ssl" -a "${ssl:-0}" -gt 0 ]; then - name_val "SSL" Yes + name_val "SSL" "Yes" else - name_val "SSL" No + name_val "SSL" "No" fi - local lock_tables="$(get_var Com_lock_tables "$dir/${prefix}-mysql-status")" + local lock_tables="$(get_var Com_lock_tables "$dir/mysql-status")" if [ -n "$lock_tables" -a "${lock_tables:-0}" -gt 0 ]; then - name_val "Explicit LOCK TABLES" Yes + name_val "Explicit LOCK TABLES" "Yes" else - name_val "Explicit LOCK TABLES" No + name_val "Explicit LOCK TABLES" "No" fi - local delayed_insert="$(get_var Delayed_writes "$dir/${prefix}-mysql-status")" + local delayed_insert="$(get_var Delayed_writes "$dir/mysql-status")" if [ -n "$delayed_insert" -a "${delayed_insert:-0}" -gt 0 ]; then - name_val "Delayed Insert" Yes + name_val "Delayed Insert" "Yes" else - name_val "Delayed Insert" No + name_val "Delayed Insert" "No" fi - local xat="$(get_var Com_xa_start "$dir/${prefix}-mysql-status")" + local xat="$(get_var Com_xa_start "$dir/mysql-status")" if [ -n "$xat" -a "${xat:-0}" -gt 0 ]; then - name_val "XA Transactions" Yes + name_val "XA Transactions" "Yes" else - name_val "XA Transactions" No + name_val "XA Transactions" "No" fi - local ndb_cluster="$(get_var Ndb_cluster_node_id "$dir/${prefix}-mysql-status")" + local ndb_cluster="$(get_var "Ndb_cluster_node_id" "$dir/mysql-status")" if [ -n "$ndb_cluster" -a "${ndb_cluster:-0}" -gt 0 ]; then - name_val "NDB Cluster" Yes + name_val "NDB Cluster" "Yes" else - name_val "NDB Cluster" No + name_val "NDB Cluster" "No" fi - local prep=$(( $(get_var Com_stmt_prepare "$dir/${prefix}-mysql-status") + $(get_var Com_prepare_sql "$dir/${prefix}-mysql-status") )) + local prep=$(( $(get_var "Com_stmt_prepare" "$dir/mysql-status") + $(get_var "Com_prepare_sql" "$dir/mysql-status") )) if [ "${prep}" -gt 0 ]; then - name_val "Prepared Statements" Yes + name_val "Prepared Statements" "Yes" else - name_val "Prepared Statements" No + name_val "Prepared Statements" "No" fi - local prep_count="$(get_var Prepared_stmt_count "$dir/${prefix}-mysql-status")" + local prep_count="$(get_var Prepared_stmt_count "$dir/mysql-status")" if [ "${prep_count}" ]; then name_val "Prepared statement count" "${prep_count}" fi @@ -1283,12 +1285,12 @@ report_mysql_summary () { # InnoDB # ######################################################################## section InnoDB - local have_innodb="$(get_var have_innodb "$dir/${prefix}-mysql-variables")" + local have_innodb="$(get_var have_innodb "$dir/mysql-variables")" if [ "${have_innodb}" = "YES" ]; then - section_innodb "$dir/${prefix}-mysql-variables" "$dir/${prefix}-mysql-status" + section_innodb "$dir/mysql-variables" "$dir/mysql-status" - if [ -s "$dir/${prefix}-innodb-status" ]; then - format_innodb_status "$dir/${prefix}-innodb-status" + if [ -s "$dir/innodb-status" ]; then + format_innodb_status "$dir/innodb-status" fi fi @@ -1296,31 +1298,31 @@ report_mysql_summary () { # MyISAM # ######################################################################## section MyISAM - section_myisam "$dir/${prefix}-mysql-variables" "$dir/${prefix}-mysql-status" + section_myisam "$dir/mysql-variables" "$dir/mysql-status" # ######################################################################## # Users & Security # ######################################################################## section Security - local users="$( format_users "$dir/${prefix}-mysql-users" )" + local users="$( format_users "$dir/mysql-users" )" # XXX TODO Give it a different formatting? name_val Users "${users}" - name_val "Old Passwords" "$(get_var old_passwords "$dir/${prefix}-mysql-variables")" + name_val "Old Passwords" "$(get_var old_passwords "$dir/mysql-variables")" # ######################################################################## # Binary Logging # ######################################################################## section Binary_Logging - if [ -s "$dir/${prefix}-mysql-master-logs" ] \ - || [ -s "$dir/${prefix}-mysql-master-status" ]; then - summarize_binlogs "$dir/${prefix}-mysql-master-logs" - local format="$(get_var binlog_format "$dir/${prefix}-mysql-variables")" + if [ -s "$dir/mysql-master-logs" ] \ + || [ -s "$dir/mysql-master-status" ]; then + summarize_binlogs "$dir/mysql-master-logs" + local format="$(get_var binlog_format "$dir/mysql-variables")" name_val binlog_format "${format:-STATEMENT}" - name_val expire_logs_days "$(get_var expire_logs_days "$dir/${prefix}-mysql-variables")" - name_val sync_binlog "$(get_var sync_binlog "$dir/${prefix}-mysql-variables")" - name_val server_id "$(get_var server_id "$dir/${prefix}-mysql-variables")" - format_binlog_filters "$dir/${prefix}-mysql-master-status" + name_val expire_logs_days "$(get_var expire_logs_days "$dir/mysql-variables")" + name_val sync_binlog "$(get_var sync_binlog "$dir/mysql-variables")" + name_val server_id "$(get_var server_id "$dir/mysql-variables")" + format_binlog_filters "$dir/mysql-master-status" fi # Replication: seconds behind, running, filters, skip_slave_start, skip_errors, @@ -1330,13 +1332,13 @@ report_mysql_summary () { # Interesting things that you just ought to know about. # ######################################################################## section Noteworthy_Variables - section_noteworthy_variables "$dir/${prefix}-mysql-variables" + section_noteworthy_variables "$dir/mysql-variables" # ######################################################################## # If there is a my.cnf in a standard location, see if we can pretty-print it. # ######################################################################## section Configuration_File - local cnf_file="$(get_var "pt-summary-internal-Config_File" "$dir/${prefix}-mysql-variables")" + local cnf_file="$(get_var "pt-summary-internal-Config_File" "$dir/mysql-variables")" if [ -n "${cnf_file}" ]; then name_val "Config File" "${cnf_file}" pretty_print_cnf_file "${cnf_file}" diff --git a/lib/bash/summary_common.sh b/lib/bash/summary_common.sh index 41991a9b..dcf8c6bf 100644 --- a/lib/bash/summary_common.sh +++ b/lib/bash/summary_common.sh @@ -145,7 +145,7 @@ setup_data_dir () { get_var () { local varname="$1" local file="$2" - echo "$(awk "\$1 ~ /^${varname}$/ { if (length(\$2)) { print substr(\$0, index(\$0,\$2)) } }" "${file}")" + awk -v pattern="${varname}" '$1 == pattern { if (length($2)) { print substr($0, index($0,$2)) } }' "${file}" } # ########################################################################### diff --git a/t/lib/bash/collect_mysql_info.sh b/t/lib/bash/collect_mysql_info.sh index c18425e3..e24e9c51 100644 --- a/t/lib/bash/collect_mysql_info.sh +++ b/t/lib/bash/collect_mysql_info.sh @@ -30,7 +30,7 @@ file_count=$(ls "$p" | wc -l) is $file_count 12 "Creates the correct number of files (without --databases)" -awk '{print $1}' "$p/percona-toolkit-mysqld-instances" > "$TMPDIR/collect_mysqld_instances1.test" +awk '{print $1}' "$p/mysqld-instances" > "$TMPDIR/collect_mysqld_instances1.test" ps ww -p "$(_pidof mysqld | sed -e "s/ /,/g")" | awk '{print $1}' > "$TMPDIR/collect_mysqld_instances2.test" no_diff \ @@ -38,7 +38,7 @@ no_diff \ "$TMPDIR/collect_mysqld_instances2.test" \ "collect_mysql_info() finds the correct instances" -collect_mysqld_instances "$TMPDIR/collect_mysqld_instances3.test" +collect_mysqld_instances /dev/null > "$TMPDIR/collect_mysqld_instances3.test" awk '{print $1}' "$TMPDIR/collect_mysqld_instances3.test"> "$TMPDIR/collect_mysqld_instances4.test" @@ -52,7 +52,7 @@ $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW /*!50000 GLOBAL*/ STATUS' > "$TMPDIR/collect_m # TODO This is still pretty fragile. -awk '{print $1}' "$p/percona-toolkit-mysql-status" | sort > "$TMPDIR/collect_mysql_status_collect" +awk '{print $1}' "$p/mysql-status" | sort > "$TMPDIR/collect_mysql_status_collect" awk '{print $1}' "$TMPDIR/collect_mysql_status" | sort > "$TMPDIR/collect_mysql_status_manual" no_diff \ @@ -60,7 +60,7 @@ no_diff \ "$TMPDIR/collect_mysql_status_manual" \ "collect_mysql_status works the same than if done manually" -port="$(get_var port "$p/percona-toolkit-mysql-variables")" +port="$(get_var port "$p/mysql-variables")" is \ $port \ @@ -70,14 +70,14 @@ is \ # collect_internal_vars pat='pt-summary-internal-user\|pt-summary-internal-FNV_64\|pt-summary-internal-trigger_count\|pt-summary-internal-symbols' -collect_internal_vars "$TMPDIR/collect_internal_vars" +collect_internal_vars > "$TMPDIR/collect_internal_vars" is \ - "$( grep $pat "$p/percona-toolkit-mysql-variables" )" \ + "$( grep $pat "$p/mysql-variables" )" \ "$( grep $pat "$TMPDIR/collect_internal_vars" )" \ "collect_internal_vars works" # find_my_cnf_file -cnf_file=$(find_my_cnf_file "$p/percona-toolkit-mysqld-instances" ${port}); +cnf_file=$(find_my_cnf_file "$p/mysqld-instances" ${port}); is \ "$cnf_file" \ @@ -101,13 +101,13 @@ is "$res" "/var/lib/mysql/my.cnf" "ps-mysqld-004.txt with port" $CMD_MYSQL $EXT_ARGV -ss -e 'SHOW DATABASES' > "$TMPDIR/mysql_collect_databases" 2>/dev/null no_diff \ - "$p/percona-toolkit-mysql-databases" \ + "$p/mysql-databases" \ "$TMPDIR/mysql_collect_databases" \ "collect_mysql_databases works" $CMD_MYSQL $EXT_ARGV -ss -e 'CREATE DATABASE collect_mysql_databases_test;' 1>/dev/null 2>&1 -collect_mysql_databases "$TMPDIR/mysql_collect_databases" +collect_mysql_databases > "$TMPDIR/mysql_collect_databases" $CMD_MYSQL $EXT_ARGV -ss -e 'DROP DATABASE collect_mysql_databases_test;' @@ -117,12 +117,12 @@ cmd_ok \ # collect_master_logs_status -if [ -n "$(get_var log_bin "$p/percona-toolkit-mysql-variables")" ]; then +if [ -n "$(get_var log_bin "$p/mysql-variables")" ]; then cmd_ok \ - "test -e $p/percona-toolkit-mysql-master-logs" \ + "test -e $p/mysql-master-logs" \ "If we have a binlog, a file with the master logs should exist" cmd_ok \ - "test -e $p/percona-toolkit-mysql-master-status" \ + "test -e $p/mysql-master-status" \ "And likewise for master status" else skip 1 2 "no binlog" @@ -142,13 +142,13 @@ test_get_mysqldump_for () { cat < "$TMPDIR/expected" --defaults-file=/tmp/12345/my.sandbox.cnf --no-data --skip-comments --skip-add-locks --skip-add-drop-table --compact --skip-lock-all-tables --skip-lock-tables --skip-set-charset --databases --all-databases EOF - get_mysqldump_for "$dir/mysqldump_test_1" '' + get_mysqldump_for '' > "$dir/mysqldump_test_1" no_diff \ "$dir/mysqldump_test_1" \ "$TMPDIR/expected" \ "get_mysqldump_for picks a name default" - get_mysqldump_for "$dir/mysqldump_test_2" '' '--all-databases' + get_mysqldump_for '' '--all-databases' > "$dir/mysqldump_test_2" no_diff \ "$dir/mysqldump_test_2" \ "$TMPDIR/expected" \ @@ -157,7 +157,7 @@ EOF cat < "$TMPDIR/expected" --defaults-file=/tmp/12345/my.sandbox.cnf --no-data --skip-comments --skip-add-locks --skip-add-drop-table --compact --skip-lock-all-tables --skip-lock-tables --skip-set-charset --databases a EOF - get_mysqldump_for "$dir/mysqldump_test_3" '' 'a' + get_mysqldump_for '' 'a' > "$dir/mysqldump_test_3" no_diff \ "$dir/mysqldump_test_3" \ "$TMPDIR/expected" \ @@ -166,7 +166,7 @@ EOF cat < "$TMPDIR/expected" --defaults-file=/tmp/12345/my.sandbox.cnf --no-data --skip-comments --skip-add-locks --skip-add-drop-table --compact --skip-lock-all-tables --skip-lock-tables --skip-set-charset --databases a b EOF - get_mysqldump_for "$dir/mysqldump_test_4" '' 'a,b' + get_mysqldump_for '' 'a,b' > "$dir/mysqldump_test_4" no_diff \ "$dir/mysqldump_test_4" \ "$TMPDIR/expected" \ @@ -177,7 +177,7 @@ EOF $CMD_MYSQL $EXT_ARGV -ss -e 'CREATE DATABASE collect_mysql_databases_test1;' 1>/dev/null 2>&1 $CMD_MYSQL $EXT_ARGV -ss -e 'CREATE DATABASE collect_mysql_databases_test2;' 1>/dev/null 2>&1 - get_mysqldump_for "$dir/mysqldump_test_5" '' "collect_mysql_databases_test1,collect_mysql_databases_test2" + get_mysqldump_for '' "collect_mysql_databases_test1,collect_mysql_databases_test2" > "$dir/mysqldump_test_5" like \ "$(cat $dir/mysqldump_test_5)" \ diff --git a/t/lib/bash/report_mysql_info.sh b/t/lib/bash/report_mysql_info.sh index 0844eef7..3aa6737e 100644 --- a/t/lib/bash/report_mysql_info.sh +++ b/t/lib/bash/report_mysql_info.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -plan 30 +plan 32 . "$LIB_DIR/alt_cmds.sh" . "$LIB_DIR/log_warn_die.sh" @@ -312,17 +312,17 @@ no_diff "$TMPDIR/got" "$TMPDIR/expected" "parse_mysqld_instances" # ########################################################################### NAME_VAL_LEN=20 -cp $samples/mysql-variables-001.txt $TMPDIR/percona-toolkit-mysql-variables +cp $samples/mysql-variables-001.txt $TMPDIR/mysql-variables is \ - $(get_mysql_timezone "$TMPDIR/percona-toolkit-mysql-variables") \ + $(get_mysql_timezone "$TMPDIR/mysql-variables") \ "EDT" \ "get_mysql_timezone" cat < $TMPDIR/expected 2010-05-27 11:38 (up 0+02:08:52) EOF -cp $samples/mysql-status-001.txt $TMPDIR/percona-toolkit-mysql-status -uptime="$(get_var Uptime $TMPDIR/percona-toolkit-mysql-status)" +cp $samples/mysql-status-001.txt $TMPDIR/mysql-status +uptime="$(get_var Uptime $TMPDIR/mysql-status)" current_time="$(echo -e "2010-05-27 11:38\n")" get_mysql_uptime "${uptime}" "${current_time}" > $TMPDIR/got no_diff "$TMPDIR/got" "$TMPDIR/expected" "get_mysql_uptime" @@ -331,8 +331,8 @@ cat < $TMPDIR/expected Version | 5.0.51a-24+lenny2 (Debian) Built On | debian-linux-gnu i486 EOF -cp "$samples/mysql-variables-001.txt" "$TMPDIR/percona-toolkit-mysql-variables" -get_mysql_version "$TMPDIR/percona-toolkit-mysql-variables" > "$TMPDIR/got" +cp "$samples/mysql-variables-001.txt" "$TMPDIR/mysql-variables" +get_mysql_version "$TMPDIR/mysql-variables" > "$TMPDIR/got" no_diff "$TMPDIR/got" "$TMPDIR/expected" "get_mysql_version" # ########################################################################### @@ -673,8 +673,8 @@ test_format_innodb () { Adaptive Checkpoint | estimate EOF - section_innodb "$samples/temp001/percona-toolkit-mysql-variables" $samples/temp001/percona-toolkit-mysql-status > $TMPDIR/got - no_diff $TMPDIR/expected $TMPDIR/got + section_innodb "$samples/temp001/mysql-variables" "$samples/temp001/mysql-status" > "$TMPDIR/got" + no_diff "$TMPDIR/expected" "$TMPDIR/got" } test_format_innodb @@ -684,7 +684,7 @@ test_format_innodb # format_innodb_filters # ########################################################################### -format_innodb_filters_test () { +test_format_innodb_filters () { local NAME_VAL_LEN=20 cat < $TMPDIR/expected @@ -692,11 +692,11 @@ format_innodb_filters_test () { binlog_ignore_db | mysql,test EOF - format_binlog_filters "$samples/mysql-show-master-status-001.txt" > $TMPDIR/got + format_binlog_filters "$samples/mysql-show-master-status-001.txt" > "$TMPDIR/got" no_diff "$TMPDIR/got" "$TMPDIR/expected" } -format_innodb_filters_test +test_format_innodb_filters # ########################################################################### # report_mysql_summary @@ -706,13 +706,28 @@ OPT_SLEEP=1 OPT_DATABASES="" OPT_READ_SAMPLES="" NAME_VAL_LEN=25 -_NO_FALSE_NEGATIVES=1 -report_mysql_summary "$samples/tempdir" "percona-toolkit" | tail -n+3 > "$TMPDIR/got" +report_mysql_summary "$samples/tempdir" | tail -n+3 > "$TMPDIR/got" no_diff "$TMPDIR/got" "$samples/expected_result_report_summary.txt" +_NO_FALSE_NEGATIVES="" OPT_SLEEP=10 -report_mysql_summary "$samples/temp002" "percona-toolkit" 2>/dev/null | tail -n+3 > "$TMPDIR/got" -no_diff "$TMPDIR/got" "$samples/expected_output_temp002.txt" +report_mysql_summary "$samples/temp002" 2>/dev/null | tail -n+3 > "$TMPDIR/got" +no_diff \ + "$TMPDIR/got" \ + "$samples/expected_output_temp002.txt" \ + "report_mysql_summary, dir: temp002" + +report_mysql_summary "$samples/temp003" 2>/dev/null | tail -n+3 > "$TMPDIR/got" +no_diff \ + "$TMPDIR/got" \ + "$samples/expected_output_temp003.txt" \ + "report_mysql_summary, dir: temp003" + +report_mysql_summary "$samples/temp004" 2>/dev/null | tail -n+3 > "$TMPDIR/got" +no_diff \ + "$TMPDIR/got" \ + "$samples/expected_output_temp004.txt" \ + "report_mysql_summary, dir: temp004" # ########################################################################### # Done diff --git a/t/pt-mysql-summary/pt-mysql-summary.t b/t/pt-mysql-summary/pt-mysql-summary.t index 44b52130..564dca58 100644 --- a/t/pt-mysql-summary/pt-mysql-summary.t +++ b/t/pt-mysql-summary/pt-mysql-summary.t @@ -14,21 +14,22 @@ use PerconaTest; my ($tool) = $PROGRAM_NAME =~ m/([\w-]+)\.t$/; -use Test::More tests => 3; -use File::Temp qw( tempdir ); +use Test::More tests => 7; +use File::Temp qw( tempfile tempdir ); local $ENV{PTDEBUG} = ""; # -# --save-data +# --save-samples # + my $dir = tempdir( CLEANUP => 1 ); -`$trunk/bin/$tool --sleep 1 --save-data $dir`; +`$trunk/bin/$tool --sleep 1 --save-samples $dir`; ok( -e $dir, - "Using --save-data doesn't mistakenly delete the target dir" + "Using --save-samples doesn't mistakenly delete the target dir" ); my @files = glob("$dir/*"); @@ -39,18 +40,45 @@ is( "And leaves all files in there" ); +`$trunk/bin/$tool --sleep 1 --save-samples $dir`; + +open my $fh, "<", "$dir/mysql-variables" or die "Can't open file: $!"; +my $data = do { local $/; <$fh> }; +unlike( + $data, + qr/pt-summary-internal-symbols.*pt-summary-internal-symbols/s, + "--save-samples doesn't re-use files if they already exist" +); +close $fh; + undef($dir); # -# --dump-schemas +# --databases # -my $out = `$trunk/bin/$tool --sleep 1 --dump-schemas mysql 2>/dev/null`; +my $out = `$trunk/bin/$tool --sleep 1 --databases mysql 2>/dev/null`; like( $out, - qr/Database Tables Views SPs Trigs Funcs FKs Partn\s+\Q{chosen}\E/, - "--dump-schemas works" + qr/Database Tables Views SPs Trigs Funcs FKs Partn\s+\Qmysql\E/, + "--databases works" ); +# --read-samples +for my $i (2..4) { + ok( + no_diff( + sub { + local $ENV{_NO_FALSE_NEGATIVES} = 1; + print `$trunk/bin/$tool --read-samples $trunk/t/pt-mysql-summary/samples/temp00$i | tail -n+3 | perl -wlnpe 's/Skipping schema analysis.*/Skipping schema analysis/'` + }, + "t/pt-mysql-summary/samples/expected_output_temp00$i.txt", + ), + "--read-samples works for t/pt-mysql-summary/temp00$i", + ); + + close $fh; +} + exit; diff --git a/t/pt-mysql-summary/samples/expected_output_temp002.txt b/t/pt-mysql-summary/samples/expected_output_temp002.txt index 67878d4a..fbc406f0 100644 --- a/t/pt-mysql-summary/samples/expected_output_temp002.txt +++ b/t/pt-mysql-summary/samples/expected_output_temp002.txt @@ -173,6 +173,10 @@ Uptime 90000 1 1 performance_schema # Noteworthy Technologies #################################### + Full Text Indexing | No + Geospatial Types | No + Foreign Keys | No + Partitioning | No SSL | No Explicit LOCK TABLES | No Delayed Insert | No diff --git a/t/pt-mysql-summary/samples/expected_output_temp003.txt b/t/pt-mysql-summary/samples/expected_output_temp003.txt new file mode 100644 index 00000000..8a9b96de --- /dev/null +++ b/t/pt-mysql-summary/samples/expected_output_temp003.txt @@ -0,0 +1,222 @@ +# Instances ################################################## + Port Data Directory Nice OOM Socket + ===== ========================== ==== === ====== + 12345 /tmp/12345/data 0 0 /tmp/12345/mysql_sandbox12345.sock +# MySQL Executable ########################################### + Path to executable | /home/vagrant/mysql-5.1.49-barebones/bin/mysql + Has symbols | Yes +# Report On Port 12345 ####################################### + User | msandbox@% + Time | 2012-03-27 16:33:46 (BST) + Hostname | vagrant-debian-squeeze + Version | 5.1.49-log MySQL Community Server (GPL) + Built On | pc-linux-gnu i686 + Started | 2012-03-27 16:15 (up 0+00:18:12) + Databases | 2 + Datadir | /tmp/12345/data/ + Processes | 1 connected, 1 running + Replication | Is not a slave, has 0 slaves connected + Pidfile | /tmp/12345/data/mysql_sandbox12345.pid (exists) +# Processlist ################################################ + + Command COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + Query 1 1 0 0 + + User COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + msandbox 1 1 0 0 + + Host COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + localhost 1 1 0 0 + + db COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + NULL 1 1 0 0 + + State COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + NULL 1 1 0 0 + +# Status Counters (Wait 10 Seconds) ########################## +Variable Per day Per second 10 secs +Bytes_received 250000 2 200 +Bytes_sent 3500000 40 1500 +Com_admin_commands 80 +Com_select 2250 1 +Com_show_binlogs 80 +Com_show_databases 80 +Com_show_engine_status 150 +Com_show_master_status 80 +Com_show_plugins 80 +Com_show_processlist 80 +Com_show_slave_status 80 +Com_show_status 225 +Com_show_variables 150 +Connections 1750 1 +Created_tmp_disk_tables 800 1 +Created_tmp_files 400 +Created_tmp_tables 3000 3 +Flush_commands 80 +Handler_read_first 225 +Handler_read_rnd_next 90000 1 30 +Handler_write 90000 1 30 +Innodb_buffer_pool_pages_flushed 15000 +Innodb_buffer_pool_read_requests 100000 1 +Innodb_buffer_pool_write_requests 90000 1 +Innodb_data_fsyncs 1250 +Innodb_data_writes 3000 +Innodb_data_written 250000000 3000 +Innodb_dblwr_pages_written 1250 +Innodb_dblwr_writes 80 +Innodb_log_write_requests 6000 +Innodb_log_writes 300 +Innodb_os_log_fsyncs 800 +Innodb_os_log_written 3000000 35 +Innodb_pages_created 15000 +Innodb_pages_written 15000 +Open_table_definitions 1750 +Opened_files 10000 4 +Opened_table_definitions 1750 +Opened_tables 2250 +Queries 5000 4 +Questions 5000 4 +Select_scan 700 +Table_locks_immediate 1500 +Threads_created 1750 1 +Uptime 90000 1 1 +# Table cache ################################################ + Size | 0 + Usage | 0% +# Key Percona Server features ################################ + Table & Index Stats | Not Supported + Multiple I/O Threads | Not Supported + Corruption Resilient | Not Supported + Durable Replication | Not Supported + Import InnoDB Tables | Not Supported + Fast Server Restarts | Not Supported + Enhanced Logging | Not Supported + Replica Perf Logging | Not Supported + Response Time Hist. | Not Supported + Smooth Flushing | Not Supported + HandlerSocket NoSQL | Not Supported + Fast Hash UDFs | Unknown +# Plugins #################################################### + InnoDB compression | Not found +# Query cache ################################################ + query_cache_type | ON + Size | 0.0 + Usage | 0% + HitToInsertRatio | 0% +# Schema ##################################################### +Skipping schema analysis +# Noteworthy Technologies #################################### + SSL | No + Explicit LOCK TABLES | No + Delayed Insert | No + XA Transactions | No + NDB Cluster | No + Prepared Statements | No + Prepared statement count | 0 +# InnoDB ##################################################### + Version | default + Buffer Pool Size | 16.0M + Buffer Pool Fill | 15% + Buffer Pool Dirty | 0% + File Per Table | OFF + Page Size | 16k + Log File Size | 2 * 5.0M = 10.0M + Log Buffer Size | 1M + Flush Method | + Flush Log At Commit | 1 + XA Support | ON + Checksums | ON + Doublewrite | ON + R/W I/O Threads | + I/O Capacity | + Thread Concurrency | 8 + Concurrency Tickets | 500 + Commit Concurrency | 0 + Txn Isolation Level | REPEATABLE-READ + Adaptive Flushing | + Adaptive Checkpoint | + Checkpoint Age | 0 + InnoDB Queue | 0 queries inside InnoDB, 0 queries in queue + Oldest Transaction | 0 Seconds + History List Len | 0 + Read Views | 1 + Undo Log Entries | 0 transactions, 0 total undo, 0 max undo + Pending I/O Reads | 0 buf pool reads, 0 normal AIO, 0 ibuf AIO, 0 preads + Pending I/O Writes | 0 buf pool (0 LRU, 0 flush list, 0 page); 0 AIO, 0 sync, 0 log IO (0 log, 0 chkp); 0 pwrites + Pending I/O Flushes | 0 buf pool, 0 log + Transaction States | 1xnot started +# MyISAM ##################################################### + Key Cache | 16.0M + Pct Used | 10% + Unflushed | 0% +# Security ################################################### + Users | 2 users, 0 anon, 0 w/o pw, 0 old pw + Old Passwords | OFF +# Binary Logging ############################################# + Binlogs | 1 + Zero-Sized | 0 + Total Size | 106.0 + binlog_format | STATEMENT + expire_logs_days | 0 + sync_binlog | 0 + server_id | 12345 + binlog_do_db | + binlog_ignore_db | +# Noteworthy Variables ####################################### + Auto-Inc Incr/Offset | 1/1 + default_storage_engine | + flush_time | 0 + init_connect | + init_file | + sql_mode | + join_buffer_size | 128k + sort_buffer_size | 2M + read_buffer_size | 128k + read_rnd_buffer_size | 256k + bulk_insert_buffer | 0.00 + max_heap_table_size | 16M + tmp_table_size | 16M + max_allowed_packet | 1M + thread_stack | 192k + log | OFF + log_error | /tmp/12345/data/mysqld.log + log_warnings | 1 + log_slow_queries | OFF +log_queries_not_using_indexes | OFF + log_slave_updates | ON +# Configuration File ######################################### + Config File | /tmp/12345/my.sandbox.cnf + +[client] +user = msandbox +password = msandbox +port = 12345 +socket = /tmp/12345/mysql_sandbox12345.sock + +[mysqld] +port = 12345 +socket = /tmp/12345/mysql_sandbox12345.sock +pid-file = /tmp/12345/data/mysql_sandbox12345.pid +basedir = /home/hugmeir/mysql5/mysqlbrew/mysqls/Percona-Server-5.1/ +datadir = /tmp/12345/data +key_buffer_size = 16M +innodb_buffer_pool_size = 16M +innodb_data_home_dir = /tmp/12345/data +innodb_log_group_home_dir = /tmp/12345/data +innodb_data_file_path = ibdata1:10M:autoextend +innodb_log_file_size = 5M +log-bin = mysql-bin +relay_log = mysql-relay-bin +log_slave_updates +server-id = 12345 +report-host = 127.0.0.1 +report-port = 12345 +log-error = mysqld.log +innodb_lock_wait_timeout = 3 +# The End #################################################### diff --git a/t/pt-mysql-summary/samples/expected_output_temp004.txt b/t/pt-mysql-summary/samples/expected_output_temp004.txt new file mode 100644 index 00000000..de7d580b --- /dev/null +++ b/t/pt-mysql-summary/samples/expected_output_temp004.txt @@ -0,0 +1,221 @@ +# Instances ################################################## + Port Data Directory Nice OOM Socket + ===== ========================== ==== === ====== + 12345 /tmp/12345/data 0 0 /tmp/12345/mysql_sandbox12345.sock +# MySQL Executable ########################################### + Path to executable | /usr/bin/mysql + Has symbols | No +# Report On Port 12345 ####################################### + User | msandbox@% + Time | 2012-03-27 09:16:44 (CEST) + Hostname | localhost.localdomain + Version | 5.1.49-log MySQL Community Server (GPL) + Built On | pc-linux-gnu i686 + Started | 2012-03-27 09:09 (up 0+00:07:37) + Databases | 3 + Datadir | /tmp/12345/data/ + Processes | 1 connected, 1 running + Replication | Is not a slave, has 0 slaves connected + Pidfile | /tmp/12345/data/mysql_sandbox12345.pid (exists) +# Processlist ################################################ + + Command COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + Query 1 1 0 0 + + User COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + msandbox 1 1 0 0 + + Host COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + localhost 1 1 0 0 + + db COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + NULL 1 1 0 0 + + State COUNT(*) Working SUM(Time) MAX(Time) + ------------------------------ -------- ------- --------- --------- + NULL 1 1 0 0 + +# Status Counters (Wait 10 Seconds) ########################## +Variable Per day Per second 10 secs +Bytes_received 500000 6 200 +Bytes_sent 8000000 90 1500 +Com_admin_commands 200 +Com_select 5000 1 +Com_show_binlogs 200 +Com_show_databases 200 +Com_show_engine_status 200 +Com_show_master_status 200 +Com_show_plugins 200 +Com_show_processlist 200 +Com_show_slave_status 200 +Com_show_status 600 +Com_show_variables 400 +Connections 4000 1 +Created_tmp_disk_tables 2000 1 +Created_tmp_files 900 +Created_tmp_tables 7000 3 +Flush_commands 200 +Handler_read_first 600 +Handler_read_key 2500 +Handler_read_rnd_next 225000 2 30 +Handler_write 225000 2 30 +Innodb_buffer_pool_read_ahead_rnd 600 +Innodb_buffer_pool_read_requests 350000 3 +Innodb_buffer_pool_reads 25000 +Innodb_data_fsyncs 600 +Innodb_data_read 1500000000 17500 +Innodb_data_reads 50000 +Innodb_data_writes 600 +Innodb_data_written 300000 3 +Innodb_log_writes 200 +Innodb_os_log_fsyncs 600 +Innodb_os_log_written 100000 1 +Innodb_pages_read 40000 +Open_table_definitions 9000 +Opened_files 30000 4 +Opened_table_definitions 7000 +Opened_tables 9000 +Queries 12500 4 +Questions 12500 4 +Select_scan 1750 +Table_locks_immediate 3500 +Threads_created 4000 1 +Uptime 90000 1 1 +# Table cache ################################################ + Size | 0 + Usage | 0% +# Key Percona Server features ################################ + Table & Index Stats | Not Supported + Multiple I/O Threads | Not Supported + Corruption Resilient | Not Supported + Durable Replication | Not Supported + Import InnoDB Tables | Not Supported + Fast Server Restarts | Not Supported + Enhanced Logging | Not Supported + Replica Perf Logging | Not Supported + Response Time Hist. | Not Supported + Smooth Flushing | Not Supported + HandlerSocket NoSQL | Not Supported + Fast Hash UDFs | Unknown +# Plugins #################################################### + InnoDB compression | Not found +# Query cache ################################################ + query_cache_type | ON + Size | 0.0 + Usage | 0% + HitToInsertRatio | 0% +# Schema ##################################################### +Skipping schema analysis +# Noteworthy Technologies #################################### + SSL | No + Explicit LOCK TABLES | No + Delayed Insert | No + XA Transactions | No + NDB Cluster | No + Prepared Statements | No + Prepared statement count | 0 +# InnoDB ##################################################### + Version | default + Buffer Pool Size | 16.0M + Buffer Pool Fill | 20% + Buffer Pool Dirty | 0% + File Per Table | OFF + Page Size | 16k + Log File Size | 2 * 5.0M = 10.0M + Log Buffer Size | 1M + Flush Method | + Flush Log At Commit | 1 + XA Support | ON + Checksums | ON + Doublewrite | ON + R/W I/O Threads | + I/O Capacity | + Thread Concurrency | 8 + Concurrency Tickets | 500 + Commit Concurrency | 0 + Txn Isolation Level | REPEATABLE-READ + Adaptive Flushing | + Adaptive Checkpoint | + Checkpoint Age | 0 + InnoDB Queue | 0 queries inside InnoDB, 0 queries in queue + Oldest Transaction | 0 Seconds + History List Len | 0 + Read Views | 1 + Undo Log Entries | 0 transactions, 0 total undo, 0 max undo + Pending I/O Reads | 0 buf pool reads, 0 normal AIO, 0 ibuf AIO, 0 preads + Pending I/O Writes | 0 buf pool (0 LRU, 0 flush list, 0 page); 0 AIO, 0 sync, 0 log IO (0 log, 0 chkp); 0 pwrites + Pending I/O Flushes | 0 buf pool, 0 log + Transaction States | 1xnot started +# MyISAM ##################################################### + Key Cache | 16.0M + Pct Used | 10% + Unflushed | 0% +# Security ################################################### + Users | 2 users, 0 anon, 0 w/o pw, 0 old pw + Old Passwords | OFF +# Binary Logging ############################################# + Binlogs | 2 + Zero-Sized | 0 + Total Size | 3.1M + binlog_format | STATEMENT + expire_logs_days | 0 + sync_binlog | 0 + server_id | 12345 + binlog_do_db | + binlog_ignore_db | +# Noteworthy Variables ####################################### + Auto-Inc Incr/Offset | 1/1 + default_storage_engine | + flush_time | 0 + init_connect | + init_file | + sql_mode | + join_buffer_size | 128k + sort_buffer_size | 2M + read_buffer_size | 128k + read_rnd_buffer_size | 256k + bulk_insert_buffer | 0.00 + max_heap_table_size | 16M + tmp_table_size | 16M + max_allowed_packet | 1M + thread_stack | 192k + log | OFF + log_error | /tmp/12345/data/mysqld.log + log_warnings | 1 + log_slow_queries | OFF +log_queries_not_using_indexes | OFF + log_slave_updates | ON +# Configuration File ######################################### + Config File | /tmp/12345/my.sandbox.cnf + +[client] +user = msandbox +password = msandbox +port = 12345 +socket = /tmp/12345/mysql_sandbox12345.sock + +[mysqld] +port = 12345 +socket = /tmp/12345/mysql_sandbox12345.sock +pid-file = /tmp/12345/data/mysql_sandbox12345.pid +basedir = /home/hugmeir/mysql5/mysqlbrew/mysqls/Percona-Server-5.1/ +datadir = /tmp/12345/data +key_buffer_size = 16M +innodb_buffer_pool_size = 16M +innodb_data_home_dir = /tmp/12345/data +innodb_log_group_home_dir = /tmp/12345/data +innodb_data_file_path = ibdata1:10M:autoextend +innodb_log_file_size = 5M +log-bin = mysql-bin +relay_log = mysql-relay-bin +log_slave_updates +server-id = 12345 +report-host = 127.0.0.1 +report-port = 12345 +log-error = mysqld.log +innodb_lock_wait_timeout = 3 +# The End #################################################### diff --git a/t/pt-mysql-summary/samples/temp001/percona-toolkit-mysql-status b/t/pt-mysql-summary/samples/temp001/mysql-status similarity index 100% rename from t/pt-mysql-summary/samples/temp001/percona-toolkit-mysql-status rename to t/pt-mysql-summary/samples/temp001/mysql-status diff --git a/t/pt-mysql-summary/samples/temp001/percona-toolkit-mysql-variables b/t/pt-mysql-summary/samples/temp001/mysql-variables similarity index 100% rename from t/pt-mysql-summary/samples/temp001/percona-toolkit-mysql-variables rename to t/pt-mysql-summary/samples/temp001/mysql-variables diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-innodb-status b/t/pt-mysql-summary/samples/temp002/innodb-status similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-innodb-status rename to t/pt-mysql-summary/samples/temp002/innodb-status diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-databases b/t/pt-mysql-summary/samples/temp002/mysql-databases similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-databases rename to t/pt-mysql-summary/samples/temp002/mysql-databases diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-master-logs b/t/pt-mysql-summary/samples/temp002/mysql-master-logs similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-master-logs rename to t/pt-mysql-summary/samples/temp002/mysql-master-logs diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-master-status b/t/pt-mysql-summary/samples/temp002/mysql-master-status similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-master-status rename to t/pt-mysql-summary/samples/temp002/mysql-master-status diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-plugins b/t/pt-mysql-summary/samples/temp002/mysql-plugins similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-plugins rename to t/pt-mysql-summary/samples/temp002/mysql-plugins diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-processlist b/t/pt-mysql-summary/samples/temp002/mysql-processlist similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-processlist rename to t/pt-mysql-summary/samples/temp002/mysql-processlist diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-slave b/t/pt-mysql-summary/samples/temp002/mysql-slave similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-slave rename to t/pt-mysql-summary/samples/temp002/mysql-slave diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-status b/t/pt-mysql-summary/samples/temp002/mysql-status similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-status rename to t/pt-mysql-summary/samples/temp002/mysql-status diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-status-defer b/t/pt-mysql-summary/samples/temp002/mysql-status-defer similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-status-defer rename to t/pt-mysql-summary/samples/temp002/mysql-status-defer diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-users b/t/pt-mysql-summary/samples/temp002/mysql-users similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-users rename to t/pt-mysql-summary/samples/temp002/mysql-users diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-variables b/t/pt-mysql-summary/samples/temp002/mysql-variables similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysql-variables rename to t/pt-mysql-summary/samples/temp002/mysql-variables diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysqld-instances b/t/pt-mysql-summary/samples/temp002/mysqld-instances similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysqld-instances rename to t/pt-mysql-summary/samples/temp002/mysqld-instances diff --git a/t/pt-mysql-summary/samples/temp002/percona-toolkit-mysqldump b/t/pt-mysql-summary/samples/temp002/mysqldump similarity index 100% rename from t/pt-mysql-summary/samples/temp002/percona-toolkit-mysqldump rename to t/pt-mysql-summary/samples/temp002/mysqldump diff --git a/t/pt-mysql-summary/samples/temp003/innodb-status b/t/pt-mysql-summary/samples/temp003/innodb-status new file mode 100644 index 00000000..f8ebd774 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/innodb-status @@ -0,0 +1,77 @@ +*************************** 1. row *************************** + Type: InnoDB + Name: +Status: +===================================== +120327 16:33:46 INNODB MONITOR OUTPUT +===================================== +Per second averages calculated from the last 38 seconds +---------- +SEMAPHORES +---------- +OS WAIT ARRAY INFO: reservation count 7, signal count 7 +Mutex spin waits 0, rounds 140, OS waits 7 +RW-shared spins 0, OS waits 0; RW-excl spins 0, OS waits 0 +------------ +TRANSACTIONS +------------ +Trx id counter 0 769 +Purge done for trx's n:o < 0 0 undo n:o < 0 0 +History list length 0 +LIST OF TRANSACTIONS FOR EACH SESSION: +---TRANSACTION 0 0, not started, process no 1529, OS thread id 2970180464 +MySQL thread id 26, query id 75 localhost msandbox +SHOW /*!50000 ENGINE*/ INNODB STATUS +-------- +FILE I/O +-------- +I/O thread 0 state: waiting for i/o request (insert buffer thread) +I/O thread 1 state: waiting for i/o request (log thread) +I/O thread 2 state: waiting for i/o request (read thread) +I/O thread 3 state: waiting for i/o request (write thread) +Pending normal aio reads: 0, aio writes: 0, + ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0 +Pending flushes (fsync) log: 0; buffer pool: 0 +0 OS file reads, 38 OS file writes, 16 OS fsyncs +0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s +------------------------------------- +INSERT BUFFER AND ADAPTIVE HASH INDEX +------------------------------------- +Ibuf: size 1, free list len 0, seg size 2, +0 inserts, 0 merged recs, 0 merges +Hash table size 69257, node heap has 1 buffer(s) +0.00 hash searches/s, 0.00 non-hash searches/s +--- +LOG +--- +Log sequence number 0 44233 +Log flushed up to 0 44233 +Last checkpoint at 0 44233 +0 pending log writes, 0 pending chkp writes +11 log i/o's done, 0.00 log i/o's/second +---------------------- +BUFFER POOL AND MEMORY +---------------------- +Total memory allocated 26533784; in additional pool allocated 858752 +Dictionary memory allocated 20888 +Buffer pool size 1024 +Free buffers 845 +Database pages 178 +Modified db pages 0 +Pending reads 0 +Pending writes: LRU 0, flush list 0, single page 0 +Pages read 0, created 178, written 189 +0.00 reads/s, 0.00 creates/s, 0.00 writes/s +No buffer pool page gets since the last printout +-------------- +ROW OPERATIONS +-------------- +0 queries inside InnoDB, 0 queries in queue +1 read views open inside InnoDB +Main thread process no. 1529, id 2978773872, state: waiting for server activity +Number of rows inserted 0, updated 0, deleted 0, read 0 +0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s +---------------------------- +END OF INNODB MONITOR OUTPUT +============================ + diff --git a/t/pt-mysql-summary/samples/temp003/mysql-databases b/t/pt-mysql-summary/samples/temp003/mysql-databases new file mode 100644 index 00000000..63edec21 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-databases @@ -0,0 +1,2 @@ +information_schema +mysql diff --git a/t/pt-mysql-summary/samples/temp003/mysql-master-logs b/t/pt-mysql-summary/samples/temp003/mysql-master-logs new file mode 100644 index 00000000..b101899c --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-master-logs @@ -0,0 +1 @@ +mysql-bin.000001 106 diff --git a/t/pt-mysql-summary/samples/temp003/mysql-master-status b/t/pt-mysql-summary/samples/temp003/mysql-master-status new file mode 100644 index 00000000..836b06fa --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-master-status @@ -0,0 +1 @@ +mysql-bin.000001 106 diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-plugins b/t/pt-mysql-summary/samples/temp003/mysql-plugins similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-plugins rename to t/pt-mysql-summary/samples/temp003/mysql-plugins diff --git a/t/pt-mysql-summary/samples/temp003/mysql-processlist b/t/pt-mysql-summary/samples/temp003/mysql-processlist new file mode 100644 index 00000000..74b1ceda --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-processlist @@ -0,0 +1,9 @@ +*************************** 1. row *************************** + Id: 27 + User: msandbox + Host: localhost + db: NULL +Command: Query + Time: 0 + State: NULL + Info: SHOW FULL PROCESSLIST diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-slave b/t/pt-mysql-summary/samples/temp003/mysql-slave similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-slave rename to t/pt-mysql-summary/samples/temp003/mysql-slave diff --git a/t/pt-mysql-summary/samples/temp003/mysql-status b/t/pt-mysql-summary/samples/temp003/mysql-status new file mode 100644 index 00000000..f060b826 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-status @@ -0,0 +1,291 @@ +Aborted_clients 0 +Aborted_connects 0 +Binlog_cache_disk_use 0 +Binlog_cache_use 0 +Bytes_received 3015 +Bytes_sent 43255 +Com_admin_commands 1 +Com_assign_to_keycache 0 +Com_alter_db 0 +Com_alter_db_upgrade 0 +Com_alter_event 0 +Com_alter_function 0 +Com_alter_procedure 0 +Com_alter_server 0 +Com_alter_table 0 +Com_alter_tablespace 0 +Com_analyze 0 +Com_backup_table 0 +Com_begin 0 +Com_binlog 0 +Com_call_procedure 0 +Com_change_db 0 +Com_change_master 0 +Com_check 0 +Com_checksum 0 +Com_commit 0 +Com_create_db 0 +Com_create_event 0 +Com_create_function 0 +Com_create_index 0 +Com_create_procedure 0 +Com_create_server 0 +Com_create_table 0 +Com_create_trigger 0 +Com_create_udf 0 +Com_create_user 0 +Com_create_view 0 +Com_dealloc_sql 0 +Com_delete 0 +Com_delete_multi 0 +Com_do 0 +Com_drop_db 0 +Com_drop_event 0 +Com_drop_function 0 +Com_drop_index 0 +Com_drop_procedure 0 +Com_drop_server 0 +Com_drop_table 0 +Com_drop_trigger 0 +Com_drop_user 0 +Com_drop_view 0 +Com_empty_query 0 +Com_execute_sql 0 +Com_flush 0 +Com_grant 0 +Com_ha_close 0 +Com_ha_open 0 +Com_ha_read 0 +Com_help 0 +Com_insert 0 +Com_insert_select 0 +Com_install_plugin 0 +Com_kill 0 +Com_load 0 +Com_load_master_data 0 +Com_load_master_table 0 +Com_lock_tables 0 +Com_optimize 0 +Com_preload_keys 0 +Com_prepare_sql 0 +Com_purge 0 +Com_purge_before_date 0 +Com_release_savepoint 0 +Com_rename_table 0 +Com_rename_user 0 +Com_repair 0 +Com_replace 0 +Com_replace_select 0 +Com_reset 0 +Com_restore_table 0 +Com_revoke 0 +Com_revoke_all 0 +Com_rollback 0 +Com_rollback_to_savepoint 0 +Com_savepoint 0 +Com_select 28 +Com_set_option 0 +Com_show_authors 0 +Com_show_binlog_events 0 +Com_show_binlogs 1 +Com_show_charsets 0 +Com_show_collations 0 +Com_show_column_types 0 +Com_show_contributors 0 +Com_show_create_db 0 +Com_show_create_event 0 +Com_show_create_func 0 +Com_show_create_proc 0 +Com_show_create_table 0 +Com_show_create_trigger 0 +Com_show_databases 1 +Com_show_engine_logs 0 +Com_show_engine_mutex 0 +Com_show_engine_status 2 +Com_show_events 0 +Com_show_errors 0 +Com_show_fields 0 +Com_show_function_status 0 +Com_show_grants 0 +Com_show_keys 0 +Com_show_master_status 1 +Com_show_new_master 0 +Com_show_open_tables 0 +Com_show_plugins 1 +Com_show_privileges 0 +Com_show_procedure_status 0 +Com_show_processlist 1 +Com_show_profile 0 +Com_show_profiles 0 +Com_show_slave_hosts 0 +Com_show_slave_status 1 +Com_show_status 3 +Com_show_storage_engines 0 +Com_show_table_status 0 +Com_show_tables 0 +Com_show_triggers 0 +Com_show_variables 2 +Com_show_warnings 0 +Com_slave_start 0 +Com_slave_stop 0 +Com_stmt_close 0 +Com_stmt_execute 0 +Com_stmt_fetch 0 +Com_stmt_prepare 0 +Com_stmt_reprepare 0 +Com_stmt_reset 0 +Com_stmt_send_long_data 0 +Com_truncate 0 +Com_uninstall_plugin 0 +Com_unlock_tables 0 +Com_update 0 +Com_update_multi 0 +Com_xa_commit 0 +Com_xa_end 0 +Com_xa_prepare 0 +Com_xa_recover 0 +Com_xa_rollback 0 +Com_xa_start 0 +Compression OFF +Connections 23 +Created_tmp_disk_tables 10 +Created_tmp_files 5 +Created_tmp_tables 36 +Delayed_errors 0 +Delayed_insert_threads 0 +Delayed_writes 0 +Flush_commands 1 +Handler_commit 0 +Handler_delete 0 +Handler_discover 0 +Handler_prepare 0 +Handler_read_first 3 +Handler_read_key 0 +Handler_read_next 0 +Handler_read_prev 0 +Handler_read_rnd 0 +Handler_read_rnd_next 1164 +Handler_rollback 0 +Handler_savepoint 0 +Handler_savepoint_rollback 0 +Handler_update 0 +Handler_write 1142 +Innodb_buffer_pool_pages_data 178 +Innodb_buffer_pool_pages_dirty 0 +Innodb_buffer_pool_pages_flushed 189 +Innodb_buffer_pool_pages_free 845 +Innodb_buffer_pool_pages_misc 1 +Innodb_buffer_pool_pages_total 1024 +Innodb_buffer_pool_read_ahead_rnd 0 +Innodb_buffer_pool_read_ahead_seq 0 +Innodb_buffer_pool_read_requests 1398 +Innodb_buffer_pool_reads 0 +Innodb_buffer_pool_wait_free 0 +Innodb_buffer_pool_write_requests 1174 +Innodb_data_fsyncs 16 +Innodb_data_pending_fsyncs 0 +Innodb_data_pending_reads 0 +Innodb_data_pending_writes 0 +Innodb_data_read 0 +Innodb_data_reads 0 +Innodb_data_writes 38 +Innodb_data_written 3400192 +Innodb_dblwr_pages_written 16 +Innodb_dblwr_writes 1 +Innodb_log_waits 0 +Innodb_log_write_requests 77 +Innodb_log_writes 4 +Innodb_os_log_fsyncs 10 +Innodb_os_log_pending_fsyncs 0 +Innodb_os_log_pending_writes 0 +Innodb_os_log_written 37888 +Innodb_page_size 16384 +Innodb_pages_created 178 +Innodb_pages_read 0 +Innodb_pages_written 189 +Innodb_row_lock_current_waits 0 +Innodb_row_lock_time 0 +Innodb_row_lock_time_avg 0 +Innodb_row_lock_time_max 0 +Innodb_row_lock_waits 0 +Innodb_rows_deleted 0 +Innodb_rows_inserted 0 +Innodb_rows_read 0 +Innodb_rows_updated 0 +Key_blocks_not_flushed 0 +Key_blocks_unused 14497 +Key_blocks_used 0 +Key_read_requests 0 +Key_reads 0 +Key_write_requests 0 +Key_writes 0 +Last_query_cost 0.000000 +Max_used_connections 1 +Not_flushed_delayed_rows 0 +Open_files 48 +Open_streams 0 +Open_table_definitions 23 +Open_tables 23 +Opened_files 138 +Opened_table_definitions 23 +Opened_tables 30 +Prepared_stmt_count 0 +Qcache_free_blocks 0 +Qcache_free_memory 0 +Qcache_hits 0 +Qcache_inserts 0 +Qcache_lowmem_prunes 0 +Qcache_not_cached 0 +Qcache_queries_in_cache 0 +Qcache_total_blocks 0 +Queries 63 +Questions 63 +Rpl_status NULL +Select_full_join 0 +Select_full_range_join 0 +Select_range 0 +Select_range_check 0 +Select_scan 9 +Slave_open_temp_tables 0 +Slave_retried_transactions 0 +Slave_running OFF +Slow_launch_threads 0 +Slow_queries 0 +Sort_merge_passes 0 +Sort_range 0 +Sort_rows 0 +Sort_scan 0 +Ssl_accept_renegotiates 0 +Ssl_accepts 0 +Ssl_callback_cache_hits 0 +Ssl_cipher +Ssl_cipher_list +Ssl_client_connects 0 +Ssl_connect_renegotiates 0 +Ssl_ctx_verify_depth 0 +Ssl_ctx_verify_mode 0 +Ssl_default_timeout 0 +Ssl_finished_accepts 0 +Ssl_finished_connects 0 +Ssl_session_cache_hits 0 +Ssl_session_cache_misses 0 +Ssl_session_cache_mode NONE +Ssl_session_cache_overflows 0 +Ssl_session_cache_size 0 +Ssl_session_cache_timeouts 0 +Ssl_sessions_reused 0 +Ssl_used_session_cache_entries 0 +Ssl_verify_depth 0 +Ssl_verify_mode 0 +Ssl_version +Table_locks_immediate 19 +Table_locks_waited 0 +Tc_log_max_pages_used 0 +Tc_log_page_size 0 +Tc_log_page_waits 0 +Threads_cached 0 +Threads_connected 1 +Threads_created 22 +Threads_running 1 +Uptime 1092 +Uptime_since_flush_status 1092 diff --git a/t/pt-mysql-summary/samples/temp003/mysql-status-defer b/t/pt-mysql-summary/samples/temp003/mysql-status-defer new file mode 100644 index 00000000..cdf727b6 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-status-defer @@ -0,0 +1,291 @@ +Aborted_clients 0 0 +Aborted_connects 0 0 +Binlog_cache_disk_use 0 0 +Binlog_cache_use 0 0 +Bytes_received 3015 4996 +Bytes_sent 43255 59206 +Com_admin_commands 1 1 +Com_assign_to_keycache 0 0 +Com_alter_db 0 0 +Com_alter_db_upgrade 0 0 +Com_alter_event 0 0 +Com_alter_function 0 0 +Com_alter_procedure 0 0 +Com_alter_server 0 0 +Com_alter_table 0 0 +Com_alter_tablespace 0 0 +Com_analyze 0 0 +Com_backup_table 0 0 +Com_begin 0 0 +Com_binlog 0 0 +Com_call_procedure 0 0 +Com_change_db 0 0 +Com_change_master 0 0 +Com_check 0 0 +Com_checksum 0 0 +Com_commit 0 0 +Com_create_db 0 0 +Com_create_event 0 0 +Com_create_function 0 0 +Com_create_index 0 0 +Com_create_procedure 0 0 +Com_create_server 0 0 +Com_create_table 0 0 +Com_create_trigger 0 0 +Com_create_udf 0 0 +Com_create_user 0 0 +Com_create_view 0 0 +Com_dealloc_sql 0 0 +Com_delete 0 0 +Com_delete_multi 0 0 +Com_do 0 0 +Com_drop_db 0 0 +Com_drop_event 0 0 +Com_drop_function 0 0 +Com_drop_index 0 0 +Com_drop_procedure 0 0 +Com_drop_server 0 0 +Com_drop_table 0 0 +Com_drop_trigger 0 0 +Com_drop_user 0 0 +Com_drop_view 0 0 +Com_empty_query 0 0 +Com_execute_sql 0 0 +Com_flush 0 0 +Com_grant 0 0 +Com_ha_close 0 0 +Com_ha_open 0 0 +Com_ha_read 0 0 +Com_help 0 0 +Com_insert 0 0 +Com_insert_select 0 0 +Com_install_plugin 0 0 +Com_kill 0 0 +Com_load 0 0 +Com_load_master_data 0 0 +Com_load_master_table 0 0 +Com_lock_tables 0 0 +Com_optimize 0 0 +Com_preload_keys 0 0 +Com_prepare_sql 0 0 +Com_purge 0 0 +Com_purge_before_date 0 0 +Com_release_savepoint 0 0 +Com_rename_table 0 0 +Com_rename_user 0 0 +Com_repair 0 0 +Com_replace 0 0 +Com_replace_select 0 0 +Com_reset 0 0 +Com_restore_table 0 0 +Com_revoke 0 0 +Com_revoke_all 0 0 +Com_rollback 0 0 +Com_rollback_to_savepoint 0 0 +Com_savepoint 0 0 +Com_select 28 47 +Com_set_option 0 0 +Com_show_authors 0 0 +Com_show_binlog_events 0 0 +Com_show_binlogs 1 2 +Com_show_charsets 0 0 +Com_show_collations 0 0 +Com_show_column_types 0 0 +Com_show_contributors 0 0 +Com_show_create_db 0 0 +Com_show_create_event 0 0 +Com_show_create_func 0 0 +Com_show_create_proc 0 0 +Com_show_create_table 0 0 +Com_show_create_trigger 0 0 +Com_show_databases 1 2 +Com_show_engine_logs 0 0 +Com_show_engine_mutex 0 0 +Com_show_engine_status 2 3 +Com_show_events 0 0 +Com_show_errors 0 0 +Com_show_fields 0 0 +Com_show_function_status 0 0 +Com_show_grants 0 0 +Com_show_keys 0 0 +Com_show_master_status 1 2 +Com_show_new_master 0 0 +Com_show_open_tables 0 0 +Com_show_plugins 1 2 +Com_show_privileges 0 0 +Com_show_procedure_status 0 0 +Com_show_processlist 1 2 +Com_show_profile 0 0 +Com_show_profiles 0 0 +Com_show_slave_hosts 0 0 +Com_show_slave_status 1 2 +Com_show_status 3 4 +Com_show_storage_engines 0 0 +Com_show_table_status 0 0 +Com_show_tables 0 0 +Com_show_triggers 0 0 +Com_show_variables 2 2 +Com_show_warnings 0 0 +Com_slave_start 0 0 +Com_slave_stop 0 0 +Com_stmt_close 0 0 +Com_stmt_execute 0 0 +Com_stmt_fetch 0 0 +Com_stmt_prepare 0 0 +Com_stmt_reprepare 0 0 +Com_stmt_reset 0 0 +Com_stmt_send_long_data 0 0 +Com_truncate 0 0 +Com_uninstall_plugin 0 0 +Com_unlock_tables 0 0 +Com_update 0 0 +Com_update_multi 0 0 +Com_xa_commit 0 0 +Com_xa_end 0 0 +Com_xa_prepare 0 0 +Com_xa_recover 0 0 +Com_xa_rollback 0 0 +Com_xa_start 0 0 +Compression OFF OFF +Connections 23 37 +Created_tmp_disk_tables 10 20 +Created_tmp_files 5 5 +Created_tmp_tables 36 68 +Delayed_errors 0 0 +Delayed_insert_threads 0 0 +Delayed_writes 0 0 +Flush_commands 1 1 +Handler_commit 0 0 +Handler_delete 0 0 +Handler_discover 0 0 +Handler_prepare 0 0 +Handler_read_first 3 3 +Handler_read_key 0 0 +Handler_read_next 0 0 +Handler_read_prev 0 0 +Handler_read_rnd 0 0 +Handler_read_rnd_next 1164 1474 +Handler_rollback 0 0 +Handler_savepoint 0 0 +Handler_savepoint_rollback 0 0 +Handler_update 0 0 +Handler_write 1142 1445 +Innodb_buffer_pool_pages_data 178 178 +Innodb_buffer_pool_pages_dirty 0 0 +Innodb_buffer_pool_pages_flushed 189 189 +Innodb_buffer_pool_pages_free 845 845 +Innodb_buffer_pool_pages_misc 1 1 +Innodb_buffer_pool_pages_total 1024 1024 +Innodb_buffer_pool_read_ahead_rnd 0 0 +Innodb_buffer_pool_read_ahead_seq 0 0 +Innodb_buffer_pool_read_requests 1398 1398 +Innodb_buffer_pool_reads 0 0 +Innodb_buffer_pool_wait_free 0 0 +Innodb_buffer_pool_write_requests 1174 1174 +Innodb_data_fsyncs 16 16 +Innodb_data_pending_fsyncs 0 0 +Innodb_data_pending_reads 0 0 +Innodb_data_pending_writes 0 0 +Innodb_data_read 0 0 +Innodb_data_reads 0 0 +Innodb_data_writes 38 38 +Innodb_data_written 3400192 3400192 +Innodb_dblwr_pages_written 16 16 +Innodb_dblwr_writes 1 1 +Innodb_log_waits 0 0 +Innodb_log_write_requests 77 77 +Innodb_log_writes 4 4 +Innodb_os_log_fsyncs 10 10 +Innodb_os_log_pending_fsyncs 0 0 +Innodb_os_log_pending_writes 0 0 +Innodb_os_log_written 37888 37888 +Innodb_page_size 16384 16384 +Innodb_pages_created 178 178 +Innodb_pages_read 0 0 +Innodb_pages_written 189 189 +Innodb_row_lock_current_waits 0 0 +Innodb_row_lock_time 0 0 +Innodb_row_lock_time_avg 0 0 +Innodb_row_lock_time_max 0 0 +Innodb_row_lock_waits 0 0 +Innodb_rows_deleted 0 0 +Innodb_rows_inserted 0 0 +Innodb_rows_read 0 0 +Innodb_rows_updated 0 0 +Key_blocks_not_flushed 0 0 +Key_blocks_unused 14497 14497 +Key_blocks_used 0 0 +Key_read_requests 0 0 +Key_reads 0 0 +Key_write_requests 0 0 +Key_writes 0 0 +Last_query_cost 0.000000 0.000000 +Max_used_connections 1 1 +Not_flushed_delayed_rows 0 0 +Open_files 48 48 +Open_streams 0 0 +Open_table_definitions 23 23 +Open_tables 23 23 +Opened_files 138 178 +Opened_table_definitions 23 23 +Opened_tables 30 30 +Prepared_stmt_count 0 0 +Qcache_free_blocks 0 0 +Qcache_free_memory 0 0 +Qcache_hits 0 0 +Qcache_inserts 0 0 +Qcache_lowmem_prunes 0 0 +Qcache_not_cached 0 0 +Qcache_queries_in_cache 0 0 +Qcache_total_blocks 0 0 +Queries 63 105 +Questions 63 105 +Rpl_status NULL NULL +Select_full_join 0 0 +Select_full_range_join 0 0 +Select_range 0 0 +Select_range_check 0 0 +Select_scan 9 14 +Slave_open_temp_tables 0 0 +Slave_retried_transactions 0 0 +Slave_running OFF OFF +Slow_launch_threads 0 0 +Slow_queries 0 0 +Sort_merge_passes 0 0 +Sort_range 0 0 +Sort_rows 0 0 +Sort_scan 0 0 +Ssl_accept_renegotiates 0 0 +Ssl_accepts 0 0 +Ssl_callback_cache_hits 0 0 +Ssl_cipher +Ssl_cipher_list +Ssl_client_connects 0 0 +Ssl_connect_renegotiates 0 0 +Ssl_ctx_verify_depth 0 0 +Ssl_ctx_verify_mode 0 0 +Ssl_default_timeout 0 0 +Ssl_finished_accepts 0 0 +Ssl_finished_connects 0 0 +Ssl_session_cache_hits 0 0 +Ssl_session_cache_misses 0 0 +Ssl_session_cache_mode NONE NONE +Ssl_session_cache_overflows 0 0 +Ssl_session_cache_size 0 0 +Ssl_session_cache_timeouts 0 0 +Ssl_sessions_reused 0 0 +Ssl_used_session_cache_entries 0 0 +Ssl_verify_depth 0 0 +Ssl_verify_mode 0 0 +Ssl_version +Table_locks_immediate 19 20 +Table_locks_waited 0 0 +Tc_log_max_pages_used 0 0 +Tc_log_page_size 0 0 +Tc_log_page_waits 0 0 +Threads_cached 0 0 +Threads_connected 1 1 +Threads_created 22 36 +Threads_running 1 1 +Uptime 1092 1102 +Uptime_since_flush_status 1092 1102 diff --git a/t/pt-mysql-summary/samples/temp003/mysql-users b/t/pt-mysql-summary/samples/temp003/mysql-users new file mode 100644 index 00000000..6679bb64 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-users @@ -0,0 +1 @@ +2 0 0 0 diff --git a/t/pt-mysql-summary/samples/temp003/mysql-variables b/t/pt-mysql-summary/samples/temp003/mysql-variables new file mode 100644 index 00000000..23193e36 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysql-variables @@ -0,0 +1,284 @@ +auto_increment_increment 1 +auto_increment_offset 1 +autocommit ON +automatic_sp_privileges ON +back_log 50 +basedir /home/vagrant/mysql-5.1.49-barebones/ +big_tables OFF +binlog_cache_size 32768 +binlog_direct_non_transactional_updates OFF +binlog_format STATEMENT +bulk_insert_buffer_size 8388608 +character_set_client latin1 +character_set_connection latin1 +character_set_database latin1 +character_set_filesystem binary +character_set_results latin1 +character_set_server latin1 +character_set_system utf8 +character_sets_dir /home/vagrant/mysql-5.1.49-barebones/share/charsets/ +collation_connection latin1_swedish_ci +collation_database latin1_swedish_ci +collation_server latin1_swedish_ci +completion_type 0 +concurrent_insert 1 +connect_timeout 10 +datadir /tmp/12345/data/ +date_format %Y-%m-%d +datetime_format %Y-%m-%d %H:%i:%s +default_week_format 0 +delay_key_write ON +delayed_insert_limit 100 +delayed_insert_timeout 300 +delayed_queue_size 1000 +div_precision_increment 4 +engine_condition_pushdown ON +error_count 0 +event_scheduler OFF +expire_logs_days 0 +flush OFF +flush_time 0 +foreign_key_checks ON +ft_boolean_syntax + -><()~*:""&| +ft_max_word_len 84 +ft_min_word_len 4 +ft_query_expansion_limit 20 +ft_stopword_file (built-in) +general_log OFF +general_log_file /tmp/12345/data/mysql_sandbox12345.log +group_concat_max_len 1024 +have_community_features YES +have_compress YES +have_crypt YES +have_csv YES +have_dynamic_loading YES +have_geometry YES +have_innodb YES +have_ndbcluster NO +have_openssl DISABLED +have_partitioning YES +have_query_cache YES +have_rtree_keys YES +have_ssl DISABLED +have_symlink YES +hostname vagrant-debian-squeeze +identity 0 +ignore_builtin_innodb OFF +init_connect +init_file +init_slave +innodb_adaptive_hash_index ON +innodb_additional_mem_pool_size 1048576 +innodb_autoextend_increment 8 +innodb_autoinc_lock_mode 1 +innodb_buffer_pool_size 16777216 +innodb_checksums ON +innodb_commit_concurrency 0 +innodb_concurrency_tickets 500 +innodb_data_file_path ibdata1:10M:autoextend +innodb_data_home_dir /tmp/12345/data +innodb_doublewrite ON +innodb_fast_shutdown 1 +innodb_file_io_threads 4 +innodb_file_per_table OFF +innodb_flush_log_at_trx_commit 1 +innodb_flush_method +innodb_force_recovery 0 +innodb_lock_wait_timeout 3 +innodb_locks_unsafe_for_binlog OFF +innodb_log_buffer_size 1048576 +innodb_log_file_size 5242880 +innodb_log_files_in_group 2 +innodb_log_group_home_dir /tmp/12345/data +innodb_max_dirty_pages_pct 90 +innodb_max_purge_lag 0 +innodb_mirrored_log_groups 1 +innodb_open_files 300 +innodb_rollback_on_timeout OFF +innodb_stats_on_metadata ON +innodb_support_xa ON +innodb_sync_spin_loops 20 +innodb_table_locks ON +innodb_thread_concurrency 8 +innodb_thread_sleep_delay 10000 +innodb_use_legacy_cardinality_algorithm ON +insert_id 0 +interactive_timeout 28800 +join_buffer_size 131072 +keep_files_on_create OFF +key_buffer_size 16777216 +key_cache_age_threshold 300 +key_cache_block_size 1024 +key_cache_division_limit 100 +language /home/vagrant/mysql-5.1.49-barebones/share/english/ +large_files_support ON +large_page_size 0 +large_pages OFF +last_insert_id 0 +lc_time_names en_US +license GPL +local_infile ON +locked_in_memory OFF +log OFF +log_bin ON +log_bin_trust_function_creators OFF +log_bin_trust_routine_creators OFF +log_error /tmp/12345/data/mysqld.log +log_output FILE +log_queries_not_using_indexes OFF +log_slave_updates ON +log_slow_queries OFF +log_warnings 1 +long_query_time 10.000000 +low_priority_updates OFF +lower_case_file_system OFF +lower_case_table_names 0 +max_allowed_packet 1048576 +max_binlog_cache_size 4294963200 +max_binlog_size 1073741824 +max_connect_errors 10 +max_connections 151 +max_delayed_threads 20 +max_error_count 64 +max_heap_table_size 16777216 +max_insert_delayed_threads 20 +max_join_size 18446744073709551615 +max_length_for_sort_data 1024 +max_prepared_stmt_count 16382 +max_relay_log_size 0 +max_seeks_for_key 4294967295 +max_sort_length 1024 +max_sp_recursion_depth 0 +max_tmp_tables 32 +max_user_connections 0 +max_write_lock_count 4294967295 +min_examined_row_limit 0 +multi_range_count 256 +myisam_data_pointer_size 6 +myisam_max_sort_file_size 2146435072 +myisam_mmap_size 4294967295 +myisam_recover_options OFF +myisam_repair_threads 1 +myisam_sort_buffer_size 8388608 +myisam_stats_method nulls_unequal +myisam_use_mmap OFF +net_buffer_length 16384 +net_read_timeout 30 +net_retry_count 10 +net_write_timeout 60 +new OFF +old OFF +old_alter_table OFF +old_passwords OFF +open_files_limit 1024 +optimizer_prune_level 1 +optimizer_search_depth 62 +optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on +pid_file /tmp/12345/data/mysql_sandbox12345.pid +plugin_dir /home/vagrant/mysql-5.1.49-barebones/lib/plugin +port 12345 +preload_buffer_size 32768 +profiling OFF +profiling_history_size 15 +protocol_version 10 +pseudo_thread_id 0 +query_alloc_block_size 8192 +query_cache_limit 1048576 +query_cache_min_res_unit 4096 +query_cache_size 0 +query_cache_type ON +query_cache_wlock_invalidate OFF +query_prealloc_size 8192 +rand_seed1 +rand_seed2 +range_alloc_block_size 4096 +read_buffer_size 131072 +read_only OFF +read_rnd_buffer_size 262144 +relay_log mysql-relay-bin +relay_log_index +relay_log_info_file relay-log.info +relay_log_purge ON +relay_log_space_limit 0 +report_host 127.0.0.1 +report_password +report_port 12345 +report_user +rpl_recovery_rank 0 +secure_auth OFF +secure_file_priv +server_id 12345 +skip_external_locking ON +skip_name_resolve OFF +skip_networking OFF +skip_show_database OFF +slave_compressed_protocol OFF +slave_exec_mode STRICT +slave_load_tmpdir /tmp +slave_net_timeout 3600 +slave_skip_errors OFF +slave_transaction_retries 10 +slow_launch_time 2 +slow_query_log OFF +slow_query_log_file /tmp/12345/data/mysql_sandbox12345-slow.log +socket /tmp/12345/mysql_sandbox12345.sock +sort_buffer_size 2097144 +sql_auto_is_null ON +sql_big_selects ON +sql_big_tables OFF +sql_buffer_result OFF +sql_log_bin ON +sql_log_off OFF +sql_log_update ON +sql_low_priority_updates OFF +sql_max_join_size 18446744073709551615 +sql_mode +sql_notes ON +sql_quote_show_create ON +sql_safe_updates OFF +sql_select_limit 18446744073709551615 +sql_slave_skip_counter +sql_warnings OFF +ssl_ca +ssl_capath +ssl_cert +ssl_cipher +ssl_key +storage_engine MyISAM +sync_binlog 0 +sync_frm ON +system_time_zone BST +table_definition_cache 256 +table_lock_wait_timeout 50 +table_open_cache 64 +table_type MyISAM +thread_cache_size 0 +thread_handling one-thread-per-connection +thread_stack 196608 +time_format %H:%i:%s +time_zone SYSTEM +timed_mutexes OFF +timestamp 1332862426 +tmp_table_size 16777216 +tmpdir /tmp +transaction_alloc_block_size 8192 +transaction_prealloc_size 4096 +tx_isolation REPEATABLE-READ +unique_checks ON +updatable_views_with_limit YES +version 5.1.49-log +version_comment MySQL Community Server (GPL) +version_compile_machine i686 +version_compile_os pc-linux-gnu +wait_timeout 28800 +warning_count 0 +internal::nice_of_1529 0 +internal::oom_of_1529 0 +pt-summary-internal-current_time 2012-03-27 16:15 +pt-summary-internal-Config_File /tmp/12345/my.sandbox.cnf +pt-summary-internal-mysql_executable /home/vagrant/mysql-5.1.49-barebones/bin/mysql +pt-summary-internal-now 2012-03-27 16:33:46 +pt-summary-internal-user msandbox@% +pt-summary-internal-FNV_64 Unknown +pt-summary-internal-trigger_count 0 +pt-summary-internal-symbols Yes diff --git a/t/pt-mysql-summary/samples/temp003/mysqld-instances b/t/pt-mysql-summary/samples/temp003/mysqld-instances new file mode 100644 index 00000000..6aeddf49 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp003/mysqld-instances @@ -0,0 +1,2 @@ + PID TTY STAT TIME COMMAND + 1529 pts/0 Sl 0:00 /home/vagrant/mysql-5.1.49-barebones/bin/mysqld --defaults-file=/tmp/12345/my.sandbox.cnf --basedir=/home/vagrant/mysql-5.1.49-barebones --datadir=/tmp/12345/data --log-error=/tmp/12345/data/mysqld.log --pid-file=/tmp/12345/data/mysql_sandbox12345.pid --socket=/tmp/12345/mysql_sandbox12345.sock --port=12345 diff --git a/t/pt-mysql-summary/samples/temp004/innodb-status b/t/pt-mysql-summary/samples/temp004/innodb-status new file mode 100644 index 00000000..1e77e9da --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/innodb-status @@ -0,0 +1,77 @@ +*************************** 1. row *************************** + Type: InnoDB + Name: +Status: +===================================== +120327 9:16:44 INNODB MONITOR OUTPUT +===================================== +Per second averages calculated from the last 26 seconds +---------- +SEMAPHORES +---------- +OS WAIT ARRAY INFO: reservation count 3, signal count 3 +Mutex spin waits 0, rounds 20, OS waits 0 +RW-shared spins 4, OS waits 2; RW-excl spins 1, OS waits 1 +------------ +TRANSACTIONS +------------ +Trx id counter 0 1280 +Purge done for trx's n:o < 0 0 undo n:o < 0 0 +History list length 0 +LIST OF TRANSACTIONS FOR EACH SESSION: +---TRANSACTION 0 0, not started, process no 2837, OS thread id 3007159184 +MySQL thread id 25, query id 72 localhost msandbox +SHOW /*!50000 ENGINE*/ INNODB STATUS +-------- +FILE I/O +-------- +I/O thread 0 state: waiting for i/o request (insert buffer thread) +I/O thread 1 state: waiting for i/o request (log thread) +I/O thread 2 state: waiting for i/o request (read thread) +I/O thread 3 state: waiting for i/o request (write thread) +Pending normal aio reads: 0, aio writes: 0, + ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0 +Pending flushes (fsync) log: 0; buffer pool: 0 +288 OS file reads, 3 OS file writes, 3 OS fsyncs +0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s +------------------------------------- +INSERT BUFFER AND ADAPTIVE HASH INDEX +------------------------------------- +Ibuf: size 1, free list len 0, seg size 2, +0 inserts, 0 merged recs, 0 merges +Hash table size 69257, node heap has 0 buffer(s) +0.00 hash searches/s, 0.00 non-hash searches/s +--- +LOG +--- +Log sequence number 0 7006635 +Log flushed up to 0 7006635 +Last checkpoint at 0 7006635 +0 pending log writes, 0 pending chkp writes +8 log i/o's done, 0.00 log i/o's/second +---------------------- +BUFFER POOL AND MEMORY +---------------------- +Total memory allocated 26528202; in additional pool allocated 985216 +Dictionary memory allocated 80072 +Buffer pool size 1024 +Free buffers 815 +Database pages 209 +Modified db pages 0 +Pending reads 0 +Pending writes: LRU 0, flush list 0, single page 0 +Pages read 209, created 0, written 0 +0.00 reads/s, 0.00 creates/s, 0.00 writes/s +No buffer pool page gets since the last printout +-------------- +ROW OPERATIONS +-------------- +0 queries inside InnoDB, 0 queries in queue +1 read views open inside InnoDB +Main thread process no. 2837, id 2961238928, state: waiting for server activity +Number of rows inserted 0, updated 0, deleted 0, read 0 +0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s +---------------------------- +END OF INNODB MONITOR OUTPUT +============================ + diff --git a/t/pt-mysql-summary/samples/temp004/mysql-databases b/t/pt-mysql-summary/samples/temp004/mysql-databases new file mode 100644 index 00000000..e06f891a --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-databases @@ -0,0 +1,3 @@ +information_schema +mysql +sakila diff --git a/t/pt-mysql-summary/samples/temp004/mysql-master-logs b/t/pt-mysql-summary/samples/temp004/mysql-master-logs new file mode 100644 index 00000000..48c8f0ec --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-master-logs @@ -0,0 +1,2 @@ +mysql-bin.000001 3251612 +mysql-bin.000002 106 diff --git a/t/pt-mysql-summary/samples/temp004/mysql-master-status b/t/pt-mysql-summary/samples/temp004/mysql-master-status new file mode 100644 index 00000000..ecb21440 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-master-status @@ -0,0 +1 @@ +mysql-bin.000002 106 diff --git a/t/pt-mysql-summary/samples/temp004/mysql-plugins b/t/pt-mysql-summary/samples/temp004/mysql-plugins new file mode 100644 index 00000000..e6ef15eb --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-plugins @@ -0,0 +1,10 @@ +binlog ACTIVE STORAGE ENGINE NULL GPL +partition ACTIVE STORAGE ENGINE NULL GPL +ARCHIVE ACTIVE STORAGE ENGINE NULL GPL +BLACKHOLE ACTIVE STORAGE ENGINE NULL GPL +CSV ACTIVE STORAGE ENGINE NULL GPL +FEDERATED DISABLED STORAGE ENGINE NULL GPL +MEMORY ACTIVE STORAGE ENGINE NULL GPL +InnoDB ACTIVE STORAGE ENGINE NULL GPL +MyISAM ACTIVE STORAGE ENGINE NULL GPL +MRG_MYISAM ACTIVE STORAGE ENGINE NULL GPL diff --git a/t/pt-mysql-summary/samples/temp004/mysql-processlist b/t/pt-mysql-summary/samples/temp004/mysql-processlist new file mode 100644 index 00000000..0d8a2ba4 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-processlist @@ -0,0 +1,9 @@ +*************************** 1. row *************************** + Id: 26 + User: msandbox + Host: localhost + db: NULL +Command: Query + Time: 0 + State: NULL + Info: SHOW FULL PROCESSLIST diff --git a/t/pt-mysql-summary/samples/temp004/mysql-slave b/t/pt-mysql-summary/samples/temp004/mysql-slave new file mode 100644 index 00000000..e69de29b diff --git a/t/pt-mysql-summary/samples/temp004/mysql-status b/t/pt-mysql-summary/samples/temp004/mysql-status new file mode 100644 index 00000000..f4134412 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-status @@ -0,0 +1,291 @@ +Aborted_clients 0 +Aborted_connects 0 +Binlog_cache_disk_use 0 +Binlog_cache_use 0 +Bytes_received 2865 +Bytes_sent 40457 +Com_admin_commands 1 +Com_assign_to_keycache 0 +Com_alter_db 0 +Com_alter_db_upgrade 0 +Com_alter_event 0 +Com_alter_function 0 +Com_alter_procedure 0 +Com_alter_server 0 +Com_alter_table 0 +Com_alter_tablespace 0 +Com_analyze 0 +Com_backup_table 0 +Com_begin 0 +Com_binlog 0 +Com_call_procedure 0 +Com_change_db 0 +Com_change_master 0 +Com_check 0 +Com_checksum 0 +Com_commit 0 +Com_create_db 0 +Com_create_event 0 +Com_create_function 0 +Com_create_index 0 +Com_create_procedure 0 +Com_create_server 0 +Com_create_table 0 +Com_create_trigger 0 +Com_create_udf 0 +Com_create_user 0 +Com_create_view 0 +Com_dealloc_sql 0 +Com_delete 0 +Com_delete_multi 0 +Com_do 0 +Com_drop_db 0 +Com_drop_event 0 +Com_drop_function 0 +Com_drop_index 0 +Com_drop_procedure 0 +Com_drop_server 0 +Com_drop_table 0 +Com_drop_trigger 0 +Com_drop_user 0 +Com_drop_view 0 +Com_empty_query 0 +Com_execute_sql 0 +Com_flush 0 +Com_grant 0 +Com_ha_close 0 +Com_ha_open 0 +Com_ha_read 0 +Com_help 0 +Com_insert 0 +Com_insert_select 0 +Com_install_plugin 0 +Com_kill 0 +Com_load 0 +Com_load_master_data 0 +Com_load_master_table 0 +Com_lock_tables 0 +Com_optimize 0 +Com_preload_keys 0 +Com_prepare_sql 0 +Com_purge 0 +Com_purge_before_date 0 +Com_release_savepoint 0 +Com_rename_table 0 +Com_rename_user 0 +Com_repair 0 +Com_replace 0 +Com_replace_select 0 +Com_reset 0 +Com_restore_table 0 +Com_revoke 0 +Com_revoke_all 0 +Com_rollback 0 +Com_rollback_to_savepoint 0 +Com_savepoint 0 +Com_select 27 +Com_set_option 0 +Com_show_authors 0 +Com_show_binlog_events 0 +Com_show_binlogs 1 +Com_show_charsets 0 +Com_show_collations 0 +Com_show_column_types 0 +Com_show_contributors 0 +Com_show_create_db 0 +Com_show_create_event 0 +Com_show_create_func 0 +Com_show_create_proc 0 +Com_show_create_table 0 +Com_show_create_trigger 0 +Com_show_databases 1 +Com_show_engine_logs 0 +Com_show_engine_mutex 0 +Com_show_engine_status 1 +Com_show_events 0 +Com_show_errors 0 +Com_show_fields 0 +Com_show_function_status 0 +Com_show_grants 0 +Com_show_keys 0 +Com_show_master_status 1 +Com_show_new_master 0 +Com_show_open_tables 0 +Com_show_plugins 1 +Com_show_privileges 0 +Com_show_procedure_status 0 +Com_show_processlist 1 +Com_show_profile 0 +Com_show_profiles 0 +Com_show_slave_hosts 0 +Com_show_slave_status 1 +Com_show_status 3 +Com_show_storage_engines 0 +Com_show_table_status 0 +Com_show_tables 0 +Com_show_triggers 0 +Com_show_variables 2 +Com_show_warnings 0 +Com_slave_start 0 +Com_slave_stop 0 +Com_stmt_close 0 +Com_stmt_execute 0 +Com_stmt_fetch 0 +Com_stmt_prepare 0 +Com_stmt_reprepare 0 +Com_stmt_reset 0 +Com_stmt_send_long_data 0 +Com_truncate 0 +Com_uninstall_plugin 0 +Com_unlock_tables 0 +Com_update 0 +Com_update_multi 0 +Com_xa_commit 0 +Com_xa_end 0 +Com_xa_prepare 0 +Com_xa_recover 0 +Com_xa_rollback 0 +Com_xa_start 0 +Compression OFF +Connections 22 +Created_tmp_disk_tables 10 +Created_tmp_files 5 +Created_tmp_tables 36 +Delayed_errors 0 +Delayed_insert_threads 0 +Delayed_writes 0 +Flush_commands 1 +Handler_commit 0 +Handler_delete 0 +Handler_discover 0 +Handler_prepare 0 +Handler_read_first 3 +Handler_read_key 13 +Handler_read_next 0 +Handler_read_prev 0 +Handler_read_rnd 0 +Handler_read_rnd_next 1171 +Handler_rollback 0 +Handler_savepoint 0 +Handler_savepoint_rollback 0 +Handler_update 0 +Handler_write 1149 +Innodb_buffer_pool_pages_data 209 +Innodb_buffer_pool_pages_dirty 0 +Innodb_buffer_pool_pages_flushed 0 +Innodb_buffer_pool_pages_free 815 +Innodb_buffer_pool_pages_misc 0 +Innodb_buffer_pool_pages_total 1024 +Innodb_buffer_pool_read_ahead_rnd 3 +Innodb_buffer_pool_read_ahead_seq 0 +Innodb_buffer_pool_read_requests 1803 +Innodb_buffer_pool_reads 140 +Innodb_buffer_pool_wait_free 0 +Innodb_buffer_pool_write_requests 0 +Innodb_data_fsyncs 3 +Innodb_data_pending_fsyncs 0 +Innodb_data_pending_reads 0 +Innodb_data_pending_writes 0 +Innodb_data_read 7704576 +Innodb_data_reads 288 +Innodb_data_writes 3 +Innodb_data_written 1536 +Innodb_dblwr_pages_written 0 +Innodb_dblwr_writes 0 +Innodb_log_waits 0 +Innodb_log_write_requests 0 +Innodb_log_writes 1 +Innodb_os_log_fsyncs 3 +Innodb_os_log_pending_fsyncs 0 +Innodb_os_log_pending_writes 0 +Innodb_os_log_written 512 +Innodb_page_size 16384 +Innodb_pages_created 0 +Innodb_pages_read 209 +Innodb_pages_written 0 +Innodb_row_lock_current_waits 0 +Innodb_row_lock_time 0 +Innodb_row_lock_time_avg 0 +Innodb_row_lock_time_max 0 +Innodb_row_lock_waits 0 +Innodb_rows_deleted 0 +Innodb_rows_inserted 0 +Innodb_rows_read 0 +Innodb_rows_updated 0 +Key_blocks_not_flushed 0 +Key_blocks_unused 14497 +Key_blocks_used 0 +Key_read_requests 0 +Key_reads 0 +Key_write_requests 0 +Key_writes 0 +Last_query_cost 0.000000 +Max_used_connections 2 +Not_flushed_delayed_rows 0 +Open_files 50 +Open_streams 0 +Open_table_definitions 46 +Open_tables 39 +Opened_files 170 +Opened_table_definitions 39 +Opened_tables 46 +Prepared_stmt_count 0 +Qcache_free_blocks 0 +Qcache_free_memory 0 +Qcache_hits 0 +Qcache_inserts 0 +Qcache_lowmem_prunes 0 +Qcache_not_cached 0 +Qcache_queries_in_cache 0 +Qcache_total_blocks 0 +Queries 60 +Questions 60 +Rpl_status NULL +Select_full_join 0 +Select_full_range_join 0 +Select_range 0 +Select_range_check 0 +Select_scan 9 +Slave_open_temp_tables 0 +Slave_retried_transactions 0 +Slave_running OFF +Slow_launch_threads 0 +Slow_queries 0 +Sort_merge_passes 0 +Sort_range 0 +Sort_rows 0 +Sort_scan 0 +Ssl_accept_renegotiates 0 +Ssl_accepts 0 +Ssl_callback_cache_hits 0 +Ssl_cipher +Ssl_cipher_list +Ssl_client_connects 0 +Ssl_connect_renegotiates 0 +Ssl_ctx_verify_depth 0 +Ssl_ctx_verify_mode 0 +Ssl_default_timeout 0 +Ssl_finished_accepts 0 +Ssl_finished_connects 0 +Ssl_session_cache_hits 0 +Ssl_session_cache_misses 0 +Ssl_session_cache_mode NONE +Ssl_session_cache_overflows 0 +Ssl_session_cache_size 0 +Ssl_session_cache_timeouts 0 +Ssl_sessions_reused 0 +Ssl_used_session_cache_entries 0 +Ssl_verify_depth 0 +Ssl_verify_mode 0 +Ssl_version +Table_locks_immediate 19 +Table_locks_waited 0 +Tc_log_max_pages_used 0 +Tc_log_page_size 0 +Tc_log_page_waits 0 +Threads_cached 0 +Threads_connected 1 +Threads_created 21 +Threads_running 1 +Uptime 457 +Uptime_since_flush_status 457 diff --git a/t/pt-mysql-summary/samples/temp004/mysql-status-defer b/t/pt-mysql-summary/samples/temp004/mysql-status-defer new file mode 100644 index 00000000..574f0670 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-status-defer @@ -0,0 +1,291 @@ +Aborted_clients 0 0 +Aborted_connects 0 0 +Binlog_cache_disk_use 0 0 +Binlog_cache_use 0 0 +Bytes_received 2865 4845 +Bytes_sent 40457 56442 +Com_admin_commands 1 1 +Com_assign_to_keycache 0 0 +Com_alter_db 0 0 +Com_alter_db_upgrade 0 0 +Com_alter_event 0 0 +Com_alter_function 0 0 +Com_alter_procedure 0 0 +Com_alter_server 0 0 +Com_alter_table 0 0 +Com_alter_tablespace 0 0 +Com_analyze 0 0 +Com_backup_table 0 0 +Com_begin 0 0 +Com_binlog 0 0 +Com_call_procedure 0 0 +Com_change_db 0 0 +Com_change_master 0 0 +Com_check 0 0 +Com_checksum 0 0 +Com_commit 0 0 +Com_create_db 0 0 +Com_create_event 0 0 +Com_create_function 0 0 +Com_create_index 0 0 +Com_create_procedure 0 0 +Com_create_server 0 0 +Com_create_table 0 0 +Com_create_trigger 0 0 +Com_create_udf 0 0 +Com_create_user 0 0 +Com_create_view 0 0 +Com_dealloc_sql 0 0 +Com_delete 0 0 +Com_delete_multi 0 0 +Com_do 0 0 +Com_drop_db 0 0 +Com_drop_event 0 0 +Com_drop_function 0 0 +Com_drop_index 0 0 +Com_drop_procedure 0 0 +Com_drop_server 0 0 +Com_drop_table 0 0 +Com_drop_trigger 0 0 +Com_drop_user 0 0 +Com_drop_view 0 0 +Com_empty_query 0 0 +Com_execute_sql 0 0 +Com_flush 0 0 +Com_grant 0 0 +Com_ha_close 0 0 +Com_ha_open 0 0 +Com_ha_read 0 0 +Com_help 0 0 +Com_insert 0 0 +Com_insert_select 0 0 +Com_install_plugin 0 0 +Com_kill 0 0 +Com_load 0 0 +Com_load_master_data 0 0 +Com_load_master_table 0 0 +Com_lock_tables 0 0 +Com_optimize 0 0 +Com_preload_keys 0 0 +Com_prepare_sql 0 0 +Com_purge 0 0 +Com_purge_before_date 0 0 +Com_release_savepoint 0 0 +Com_rename_table 0 0 +Com_rename_user 0 0 +Com_repair 0 0 +Com_replace 0 0 +Com_replace_select 0 0 +Com_reset 0 0 +Com_restore_table 0 0 +Com_revoke 0 0 +Com_revoke_all 0 0 +Com_rollback 0 0 +Com_rollback_to_savepoint 0 0 +Com_savepoint 0 0 +Com_select 27 46 +Com_set_option 0 0 +Com_show_authors 0 0 +Com_show_binlog_events 0 0 +Com_show_binlogs 1 2 +Com_show_charsets 0 0 +Com_show_collations 0 0 +Com_show_column_types 0 0 +Com_show_contributors 0 0 +Com_show_create_db 0 0 +Com_show_create_event 0 0 +Com_show_create_func 0 0 +Com_show_create_proc 0 0 +Com_show_create_table 0 0 +Com_show_create_trigger 0 0 +Com_show_databases 1 2 +Com_show_engine_logs 0 0 +Com_show_engine_mutex 0 0 +Com_show_engine_status 1 2 +Com_show_events 0 0 +Com_show_errors 0 0 +Com_show_fields 0 0 +Com_show_function_status 0 0 +Com_show_grants 0 0 +Com_show_keys 0 0 +Com_show_master_status 1 2 +Com_show_new_master 0 0 +Com_show_open_tables 0 0 +Com_show_plugins 1 2 +Com_show_privileges 0 0 +Com_show_procedure_status 0 0 +Com_show_processlist 1 2 +Com_show_profile 0 0 +Com_show_profiles 0 0 +Com_show_slave_hosts 0 0 +Com_show_slave_status 1 2 +Com_show_status 3 4 +Com_show_storage_engines 0 0 +Com_show_table_status 0 0 +Com_show_tables 0 0 +Com_show_triggers 0 0 +Com_show_variables 2 2 +Com_show_warnings 0 0 +Com_slave_start 0 0 +Com_slave_stop 0 0 +Com_stmt_close 0 0 +Com_stmt_execute 0 0 +Com_stmt_fetch 0 0 +Com_stmt_prepare 0 0 +Com_stmt_reprepare 0 0 +Com_stmt_reset 0 0 +Com_stmt_send_long_data 0 0 +Com_truncate 0 0 +Com_uninstall_plugin 0 0 +Com_unlock_tables 0 0 +Com_update 0 0 +Com_update_multi 0 0 +Com_xa_commit 0 0 +Com_xa_end 0 0 +Com_xa_prepare 0 0 +Com_xa_recover 0 0 +Com_xa_rollback 0 0 +Com_xa_start 0 0 +Compression OFF OFF +Connections 22 36 +Created_tmp_disk_tables 10 20 +Created_tmp_files 5 5 +Created_tmp_tables 36 68 +Delayed_errors 0 0 +Delayed_insert_threads 0 0 +Delayed_writes 0 0 +Flush_commands 1 1 +Handler_commit 0 0 +Handler_delete 0 0 +Handler_discover 0 0 +Handler_prepare 0 0 +Handler_read_first 3 3 +Handler_read_key 13 13 +Handler_read_next 0 0 +Handler_read_prev 0 0 +Handler_read_rnd 0 0 +Handler_read_rnd_next 1171 1488 +Handler_rollback 0 0 +Handler_savepoint 0 0 +Handler_savepoint_rollback 0 0 +Handler_update 0 0 +Handler_write 1149 1459 +Innodb_buffer_pool_pages_data 209 209 +Innodb_buffer_pool_pages_dirty 0 0 +Innodb_buffer_pool_pages_flushed 0 0 +Innodb_buffer_pool_pages_free 815 815 +Innodb_buffer_pool_pages_misc 0 0 +Innodb_buffer_pool_pages_total 1024 1024 +Innodb_buffer_pool_read_ahead_rnd 3 3 +Innodb_buffer_pool_read_ahead_seq 0 0 +Innodb_buffer_pool_read_requests 1803 1803 +Innodb_buffer_pool_reads 140 140 +Innodb_buffer_pool_wait_free 0 0 +Innodb_buffer_pool_write_requests 0 0 +Innodb_data_fsyncs 3 3 +Innodb_data_pending_fsyncs 0 0 +Innodb_data_pending_reads 0 0 +Innodb_data_pending_writes 0 0 +Innodb_data_read 7704576 7704576 +Innodb_data_reads 288 288 +Innodb_data_writes 3 3 +Innodb_data_written 1536 1536 +Innodb_dblwr_pages_written 0 0 +Innodb_dblwr_writes 0 0 +Innodb_log_waits 0 0 +Innodb_log_write_requests 0 0 +Innodb_log_writes 1 1 +Innodb_os_log_fsyncs 3 3 +Innodb_os_log_pending_fsyncs 0 0 +Innodb_os_log_pending_writes 0 0 +Innodb_os_log_written 512 512 +Innodb_page_size 16384 16384 +Innodb_pages_created 0 0 +Innodb_pages_read 209 209 +Innodb_pages_written 0 0 +Innodb_row_lock_current_waits 0 0 +Innodb_row_lock_time 0 0 +Innodb_row_lock_time_avg 0 0 +Innodb_row_lock_time_max 0 0 +Innodb_row_lock_waits 0 0 +Innodb_rows_deleted 0 0 +Innodb_rows_inserted 0 0 +Innodb_rows_read 0 0 +Innodb_rows_updated 0 0 +Key_blocks_not_flushed 0 0 +Key_blocks_unused 14497 14497 +Key_blocks_used 0 0 +Key_read_requests 0 0 +Key_reads 0 0 +Key_write_requests 0 0 +Key_writes 0 0 +Last_query_cost 0.000000 0.000000 +Max_used_connections 2 2 +Not_flushed_delayed_rows 0 0 +Open_files 50 50 +Open_streams 0 0 +Open_table_definitions 46 46 +Open_tables 39 39 +Opened_files 170 211 +Opened_table_definitions 39 39 +Opened_tables 46 46 +Prepared_stmt_count 0 0 +Qcache_free_blocks 0 0 +Qcache_free_memory 0 0 +Qcache_hits 0 0 +Qcache_inserts 0 0 +Qcache_lowmem_prunes 0 0 +Qcache_not_cached 0 0 +Qcache_queries_in_cache 0 0 +Qcache_total_blocks 0 0 +Queries 60 102 +Questions 60 102 +Rpl_status NULL NULL +Select_full_join 0 0 +Select_full_range_join 0 0 +Select_range 0 0 +Select_range_check 0 0 +Select_scan 9 14 +Slave_open_temp_tables 0 0 +Slave_retried_transactions 0 0 +Slave_running OFF OFF +Slow_launch_threads 0 0 +Slow_queries 0 0 +Sort_merge_passes 0 0 +Sort_range 0 0 +Sort_rows 0 0 +Sort_scan 0 0 +Ssl_accept_renegotiates 0 0 +Ssl_accepts 0 0 +Ssl_callback_cache_hits 0 0 +Ssl_cipher +Ssl_cipher_list +Ssl_client_connects 0 0 +Ssl_connect_renegotiates 0 0 +Ssl_ctx_verify_depth 0 0 +Ssl_ctx_verify_mode 0 0 +Ssl_default_timeout 0 0 +Ssl_finished_accepts 0 0 +Ssl_finished_connects 0 0 +Ssl_session_cache_hits 0 0 +Ssl_session_cache_misses 0 0 +Ssl_session_cache_mode NONE NONE +Ssl_session_cache_overflows 0 0 +Ssl_session_cache_size 0 0 +Ssl_session_cache_timeouts 0 0 +Ssl_sessions_reused 0 0 +Ssl_used_session_cache_entries 0 0 +Ssl_verify_depth 0 0 +Ssl_verify_mode 0 0 +Ssl_version +Table_locks_immediate 19 20 +Table_locks_waited 0 0 +Tc_log_max_pages_used 0 0 +Tc_log_page_size 0 0 +Tc_log_page_waits 0 0 +Threads_cached 0 0 +Threads_connected 1 1 +Threads_created 21 35 +Threads_running 1 1 +Uptime 457 467 +Uptime_since_flush_status 457 467 diff --git a/t/pt-mysql-summary/samples/temp004/mysql-users b/t/pt-mysql-summary/samples/temp004/mysql-users new file mode 100644 index 00000000..6679bb64 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-users @@ -0,0 +1 @@ +2 0 0 0 diff --git a/t/pt-mysql-summary/samples/temp004/mysql-variables b/t/pt-mysql-summary/samples/temp004/mysql-variables new file mode 100644 index 00000000..872b2b0e --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysql-variables @@ -0,0 +1,284 @@ +auto_increment_increment 1 +auto_increment_offset 1 +autocommit ON +automatic_sp_privileges ON +back_log 50 +basedir /home/vagrant/mysql-5.1.49-barebones/ +big_tables OFF +binlog_cache_size 32768 +binlog_direct_non_transactional_updates OFF +binlog_format STATEMENT +bulk_insert_buffer_size 8388608 +character_set_client latin1 +character_set_connection latin1 +character_set_database latin1 +character_set_filesystem binary +character_set_results latin1 +character_set_server latin1 +character_set_system utf8 +character_sets_dir /home/vagrant/mysql-5.1.49-barebones/share/charsets/ +collation_connection latin1_swedish_ci +collation_database latin1_swedish_ci +collation_server latin1_swedish_ci +completion_type 0 +concurrent_insert 1 +connect_timeout 10 +datadir /tmp/12345/data/ +date_format %Y-%m-%d +datetime_format %Y-%m-%d %H:%i:%s +default_week_format 0 +delay_key_write ON +delayed_insert_limit 100 +delayed_insert_timeout 300 +delayed_queue_size 1000 +div_precision_increment 4 +engine_condition_pushdown ON +error_count 0 +event_scheduler OFF +expire_logs_days 0 +flush OFF +flush_time 0 +foreign_key_checks ON +ft_boolean_syntax + -><()~*:""&| +ft_max_word_len 84 +ft_min_word_len 4 +ft_query_expansion_limit 20 +ft_stopword_file (built-in) +general_log OFF +general_log_file /tmp/12345/data/mysql_sandbox12345.log +group_concat_max_len 1024 +have_community_features YES +have_compress YES +have_crypt YES +have_csv YES +have_dynamic_loading YES +have_geometry YES +have_innodb YES +have_ndbcluster NO +have_openssl DISABLED +have_partitioning YES +have_query_cache YES +have_rtree_keys YES +have_ssl DISABLED +have_symlink YES +hostname localhost.localdomain +identity 0 +ignore_builtin_innodb OFF +init_connect +init_file +init_slave +innodb_adaptive_hash_index ON +innodb_additional_mem_pool_size 1048576 +innodb_autoextend_increment 8 +innodb_autoinc_lock_mode 1 +innodb_buffer_pool_size 16777216 +innodb_checksums ON +innodb_commit_concurrency 0 +innodb_concurrency_tickets 500 +innodb_data_file_path ibdata1:10M:autoextend +innodb_data_home_dir /tmp/12345/data +innodb_doublewrite ON +innodb_fast_shutdown 1 +innodb_file_io_threads 4 +innodb_file_per_table OFF +innodb_flush_log_at_trx_commit 1 +innodb_flush_method +innodb_force_recovery 0 +innodb_lock_wait_timeout 3 +innodb_locks_unsafe_for_binlog OFF +innodb_log_buffer_size 1048576 +innodb_log_file_size 5242880 +innodb_log_files_in_group 2 +innodb_log_group_home_dir /tmp/12345/data +innodb_max_dirty_pages_pct 90 +innodb_max_purge_lag 0 +innodb_mirrored_log_groups 1 +innodb_open_files 300 +innodb_rollback_on_timeout OFF +innodb_stats_on_metadata ON +innodb_support_xa ON +innodb_sync_spin_loops 20 +innodb_table_locks ON +innodb_thread_concurrency 8 +innodb_thread_sleep_delay 10000 +innodb_use_legacy_cardinality_algorithm ON +insert_id 0 +interactive_timeout 28800 +join_buffer_size 131072 +keep_files_on_create OFF +key_buffer_size 16777216 +key_cache_age_threshold 300 +key_cache_block_size 1024 +key_cache_division_limit 100 +language /home/vagrant/mysql-5.1.49-barebones/share/english/ +large_files_support ON +large_page_size 0 +large_pages OFF +last_insert_id 0 +lc_time_names en_US +license GPL +local_infile ON +locked_in_memory OFF +log OFF +log_bin ON +log_bin_trust_function_creators OFF +log_bin_trust_routine_creators OFF +log_error /tmp/12345/data/mysqld.log +log_output FILE +log_queries_not_using_indexes OFF +log_slave_updates ON +log_slow_queries OFF +log_warnings 1 +long_query_time 10.000000 +low_priority_updates OFF +lower_case_file_system OFF +lower_case_table_names 0 +max_allowed_packet 1048576 +max_binlog_cache_size 4294963200 +max_binlog_size 1073741824 +max_connect_errors 10 +max_connections 151 +max_delayed_threads 20 +max_error_count 64 +max_heap_table_size 16777216 +max_insert_delayed_threads 20 +max_join_size 18446744073709551615 +max_length_for_sort_data 1024 +max_prepared_stmt_count 16382 +max_relay_log_size 0 +max_seeks_for_key 4294967295 +max_sort_length 1024 +max_sp_recursion_depth 0 +max_tmp_tables 32 +max_user_connections 0 +max_write_lock_count 4294967295 +min_examined_row_limit 0 +multi_range_count 256 +myisam_data_pointer_size 6 +myisam_max_sort_file_size 2146435072 +myisam_mmap_size 4294967295 +myisam_recover_options OFF +myisam_repair_threads 1 +myisam_sort_buffer_size 8388608 +myisam_stats_method nulls_unequal +myisam_use_mmap OFF +net_buffer_length 16384 +net_read_timeout 30 +net_retry_count 10 +net_write_timeout 60 +new OFF +old OFF +old_alter_table OFF +old_passwords OFF +open_files_limit 1024 +optimizer_prune_level 1 +optimizer_search_depth 62 +optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on +pid_file /tmp/12345/data/mysql_sandbox12345.pid +plugin_dir /home/vagrant/mysql-5.1.49-barebones/lib/plugin +port 12345 +preload_buffer_size 32768 +profiling OFF +profiling_history_size 15 +protocol_version 10 +pseudo_thread_id 0 +query_alloc_block_size 8192 +query_cache_limit 1048576 +query_cache_min_res_unit 4096 +query_cache_size 0 +query_cache_type ON +query_cache_wlock_invalidate OFF +query_prealloc_size 8192 +rand_seed1 +rand_seed2 +range_alloc_block_size 4096 +read_buffer_size 131072 +read_only OFF +read_rnd_buffer_size 262144 +relay_log mysql-relay-bin +relay_log_index +relay_log_info_file relay-log.info +relay_log_purge ON +relay_log_space_limit 0 +report_host 127.0.0.1 +report_password +report_port 12345 +report_user +rpl_recovery_rank 0 +secure_auth OFF +secure_file_priv +server_id 12345 +skip_external_locking ON +skip_name_resolve OFF +skip_networking OFF +skip_show_database OFF +slave_compressed_protocol OFF +slave_exec_mode STRICT +slave_load_tmpdir /tmp +slave_net_timeout 3600 +slave_skip_errors OFF +slave_transaction_retries 10 +slow_launch_time 2 +slow_query_log OFF +slow_query_log_file /tmp/12345/data/mysql_sandbox12345-slow.log +socket /tmp/12345/mysql_sandbox12345.sock +sort_buffer_size 2097144 +sql_auto_is_null ON +sql_big_selects ON +sql_big_tables OFF +sql_buffer_result OFF +sql_log_bin ON +sql_log_off OFF +sql_log_update ON +sql_low_priority_updates OFF +sql_max_join_size 18446744073709551615 +sql_mode +sql_notes ON +sql_quote_show_create ON +sql_safe_updates OFF +sql_select_limit 18446744073709551615 +sql_slave_skip_counter +sql_warnings OFF +ssl_ca +ssl_capath +ssl_cert +ssl_cipher +ssl_key +storage_engine MyISAM +sync_binlog 0 +sync_frm ON +system_time_zone CEST +table_definition_cache 256 +table_lock_wait_timeout 50 +table_open_cache 64 +table_type MyISAM +thread_cache_size 0 +thread_handling one-thread-per-connection +thread_stack 196608 +time_format %H:%i:%s +time_zone SYSTEM +timed_mutexes OFF +timestamp 1332832604 +tmp_table_size 16777216 +tmpdir /tmp +transaction_alloc_block_size 8192 +transaction_prealloc_size 4096 +tx_isolation REPEATABLE-READ +unique_checks ON +updatable_views_with_limit YES +version 5.1.49-log +version_comment MySQL Community Server (GPL) +version_compile_machine i686 +version_compile_os pc-linux-gnu +wait_timeout 28800 +warning_count 0 +internal::nice_of_2837 0 +internal::oom_of_2837 0 +pt-summary-internal-current_time 2012-03-27 09:09 +pt-summary-internal-Config_File /tmp/12345/my.sandbox.cnf +pt-summary-internal-mysql_executable /usr/bin/mysql +pt-summary-internal-now 2012-03-27 09:16:44 +pt-summary-internal-user msandbox@% +pt-summary-internal-FNV_64 Unknown +pt-summary-internal-trigger_count 6 +pt-summary-internal-symbols No diff --git a/t/pt-mysql-summary/samples/temp004/mysqld-instances b/t/pt-mysql-summary/samples/temp004/mysqld-instances new file mode 100644 index 00000000..bc634046 --- /dev/null +++ b/t/pt-mysql-summary/samples/temp004/mysqld-instances @@ -0,0 +1,2 @@ + PID TTY STAT TIME COMMAND + 2837 pts/0 Sl 0:00 /home/vagrant/mysql-5.1.49-barebones/bin/mysqld --defaults-file=/tmp/12345/my.sandbox.cnf --basedir=/home/vagrant/mysql-5.1.49-barebones --datadir=/tmp/12345/data --log-error=/tmp/12345/data/mysqld.log --pid-file=/tmp/12345/data/mysql_sandbox12345.pid --socket=/tmp/12345/mysql_sandbox12345.sock --port=12345 diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-innodb-status b/t/pt-mysql-summary/samples/tempdir/innodb-status similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-innodb-status rename to t/pt-mysql-summary/samples/tempdir/innodb-status diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-databases b/t/pt-mysql-summary/samples/tempdir/mysql-databases similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-databases rename to t/pt-mysql-summary/samples/tempdir/mysql-databases diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-master-logs b/t/pt-mysql-summary/samples/tempdir/mysql-master-logs similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-master-logs rename to t/pt-mysql-summary/samples/tempdir/mysql-master-logs diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-master-status b/t/pt-mysql-summary/samples/tempdir/mysql-master-status similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-master-status rename to t/pt-mysql-summary/samples/tempdir/mysql-master-status diff --git a/t/pt-mysql-summary/samples/tempdir/mysql-plugins b/t/pt-mysql-summary/samples/tempdir/mysql-plugins new file mode 100644 index 00000000..e6ef15eb --- /dev/null +++ b/t/pt-mysql-summary/samples/tempdir/mysql-plugins @@ -0,0 +1,10 @@ +binlog ACTIVE STORAGE ENGINE NULL GPL +partition ACTIVE STORAGE ENGINE NULL GPL +ARCHIVE ACTIVE STORAGE ENGINE NULL GPL +BLACKHOLE ACTIVE STORAGE ENGINE NULL GPL +CSV ACTIVE STORAGE ENGINE NULL GPL +FEDERATED DISABLED STORAGE ENGINE NULL GPL +MEMORY ACTIVE STORAGE ENGINE NULL GPL +InnoDB ACTIVE STORAGE ENGINE NULL GPL +MyISAM ACTIVE STORAGE ENGINE NULL GPL +MRG_MYISAM ACTIVE STORAGE ENGINE NULL GPL diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-processlist b/t/pt-mysql-summary/samples/tempdir/mysql-processlist similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-processlist rename to t/pt-mysql-summary/samples/tempdir/mysql-processlist diff --git a/t/pt-mysql-summary/samples/tempdir/mysql-slave b/t/pt-mysql-summary/samples/tempdir/mysql-slave new file mode 100644 index 00000000..e69de29b diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-status b/t/pt-mysql-summary/samples/tempdir/mysql-status similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-status rename to t/pt-mysql-summary/samples/tempdir/mysql-status diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-status-defer b/t/pt-mysql-summary/samples/tempdir/mysql-status-defer similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-status-defer rename to t/pt-mysql-summary/samples/tempdir/mysql-status-defer diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-users b/t/pt-mysql-summary/samples/tempdir/mysql-users similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-users rename to t/pt-mysql-summary/samples/tempdir/mysql-users diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-variables b/t/pt-mysql-summary/samples/tempdir/mysql-variables similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysql-variables rename to t/pt-mysql-summary/samples/tempdir/mysql-variables diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysqld-instances b/t/pt-mysql-summary/samples/tempdir/mysqld-instances similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysqld-instances rename to t/pt-mysql-summary/samples/tempdir/mysqld-instances diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysqldump b/t/pt-mysql-summary/samples/tempdir/mysqldump similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-mysqldump rename to t/pt-mysql-summary/samples/tempdir/mysqldump diff --git a/t/pt-mysql-summary/samples/tempdir/percona-toolkit-tempfile b/t/pt-mysql-summary/samples/tempdir/tempfile similarity index 100% rename from t/pt-mysql-summary/samples/tempdir/percona-toolkit-tempfile rename to t/pt-mysql-summary/samples/tempdir/tempfile