More fixes as per the reviews.

- Took out ${prefix}-
- get_var sanity
- pt-mysql-summary now follows pt-summary's suit and doesn't take
  in files to write to
- pt-summary defers setting the CMD_FOO vars to a function, as
  otherwise it would skip our PATH mungling.
This commit is contained in:
Brian Fraser fraserb@gmail.com
2012-03-28 13:04:14 -03:00
parent ae6c1e3789
commit 4bb5968c23
65 changed files with 2865 additions and 452 deletions

View File

@@ -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}"