mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-11 13:40:07 +00:00
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:
@@ -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}"
|
||||
|
Reference in New Issue
Block a user