add --[no-]mysql-summary to execute pt-mysql-summary(1) if present

This commit is contained in:
Jérémy Lecour 2023-11-20 18:41:52 +01:00 committed by Jérémy Lecour
parent becdca41d8
commit d57c664c22
Signed by: jlecour
SSH key fingerprint: SHA256:h+5LgHRKwN9lS0SsdVR5yZPeFlJE4Mt+8UtL4CcP8dY
2 changed files with 78 additions and 30 deletions

View file

@ -12,6 +12,8 @@ The **patch** part changes is incremented if multiple releases happen the same m
### Added ### Added
* add `--[no-]mysql-summary` to execute `pt-mysql-summary(1)` if present
### Changed ### Changed
### Fixed ### Fixed

View file

@ -64,14 +64,15 @@ Tasks options
--[no-]mount copy of mount points (default: yes) --[no-]mount copy of mount points (default: yes)
--[no-]df copy of disk usage (default: yes) --[no-]df copy of disk usage (default: yes)
--[no-]dmesg copy of dmesg (default: yes) --[no-]dmesg copy of dmesg (default: yes)
--[no-]mysql copy of mysql processes (default: yes) --[no-]mysql-processes copy of mysql processes (default: yes)
--[no-]mysql-summary copy of mysql summary (default: yes)
--[no-]systemctl copy of systemd services states (default: yes) --[no-]systemctl copy of systemd services states (default: yes)
Tasks options order matters. They are evaluated from left to right. Tasks options order matters. They are evaluated from left to right.
Examples : Examples :
* "[…] --none --uname" will do only the uname task * "[…] --none --uname" will do only the uname task
* "[…] --all --no-etc" will do everything but the etc task * "[…] --all --no-etc" will do everything but the etc task
* "[…] --etc --none --mysql" will do only the mysql task * "[…] --etc --none --mysql-summary" will do only the mysql task
END END
} }
debug() { debug() {
@ -741,6 +742,38 @@ task_mysql_processes() {
fi fi
} }
task_mysql_summary() {
debug "Task: MySQL summary"
mysqladmin_bin=$(command -v mysqladmin)
pt_mysql_summary_bin=$(command -v pt-mysql-summary)
if [ -n "${mysqladmin_bin}" ] && [ -n "${pt_mysql_summary_bin}" ]; then
# Look for local MySQL or MariaDB process
if pgrep mysqld > /dev/null || pgrep mariadbd > /dev/null; then
if ${mysqladmin_bin} ping > /dev/null 2>&1; then
${pt_mysql_summary_bin} > "${dump_dir}/mysql-summary.txt" 2> "${dump_dir}/mysql-summary.err"
last_rc=$?
if [ ${last_rc} -eq 0 ]; then
debug "* pt-mysql-summary OK"
else
debug "* pt-mysql-summary ERROR"
debug < "${dump_dir}/mysql-summary.err"
rm "${dump_dir}/mysql-summary.err"
rc=10
fi
else
debug "* unable to ping with mysqladmin"
fi
else
debug "* no mysqld or mariadbd process is running"
fi
else
debug "* pt-mysql-summary not found"
fi
}
task_systemctl() { task_systemctl() {
debug "Task: Systemd services" debug "Task: Systemd services"
@ -841,6 +874,9 @@ main() {
if [ "${TASK_MYSQL_PROCESSES}" -eq 1 ]; then if [ "${TASK_MYSQL_PROCESSES}" -eq 1 ]; then
task_mysql_processes task_mysql_processes
fi fi
if [ "${TASK_MYSQL_SUMMARY}" -eq 1 ]; then
task_mysql_summary
fi
if [ "${TASK_SYSTEMCTL}" -eq 1 ]; then if [ "${TASK_SYSTEMCTL}" -eq 1 ]; then
task_systemctl task_systemctl
fi fi
@ -950,6 +986,7 @@ while :; do
TASK_DF \ TASK_DF \
TASK_DMESG \ TASK_DMESG \
TASK_MYSQL_PROCESSES \ TASK_MYSQL_PROCESSES \
TASK_MYSQL_SUMMARY \
TASK_SYSTEMCTL TASK_SYSTEMCTL
do do
eval "${option}=1" eval "${option}=1"
@ -978,6 +1015,7 @@ while :; do
TASK_DF \ TASK_DF \
TASK_DMESG \ TASK_DMESG \
TASK_MYSQL_PROCESSES \ TASK_MYSQL_PROCESSES \
TASK_MYSQL_SUMMARY \
TASK_SYSTEMCTL TASK_SYSTEMCTL
do do
eval "${option}=0" eval "${option}=0"
@ -1124,6 +1162,13 @@ while :; do
TASK_MYSQL_PROCESSES=0 TASK_MYSQL_PROCESSES=0
;; ;;
--mysql-summary)
TASK_MYSQL_SUMMARY=1
;;
--no-mysql-summary)
TASK_MYSQL_SUMMARY=0
;;
--systemctl) --systemctl)
TASK_SYSTEMCTL=1 TASK_SYSTEMCTL=1
;; ;;
@ -1173,6 +1218,7 @@ done
: "${TASK_DF:=1}" : "${TASK_DF:=1}"
: "${TASK_DMESG:=1}" : "${TASK_DMESG:=1}"
: "${TASK_MYSQL_PROCESSES:=1}" : "${TASK_MYSQL_PROCESSES:=1}"
: "${TASK_MYSQL_SUMMARY:=1}"
: "${TASK_SYSTEMCTL:=1}" : "${TASK_SYSTEMCTL:=1}"
export LC_ALL=C export LC_ALL=C