[LINUX] MONITORING MYSQL - fourslickz/notes GitHub Wiki

#!/bin/bash

# Set the monitoring interval in seconds (10 seconds in this case)
INTERVAL=10

# Set the total duration to monitor (3600 seconds = 1 hour)
DURATION=3600

# Calculate how many times to run the command (DURATION / INTERVAL)
ITERATIONS=$((DURATION / INTERVAL))

# Set MySQL login credentials
MYSQL_USER="your_username"
MYSQL_PASS="your_password"
MYSQL_HOST="localhost"

# Output file to store the processlist logs
OUTPUT_FILE="mysql_processlist.log"

echo "Monitoring MySQL process list for 1 hour..."
echo "Process list will be logged to $OUTPUT_FILE"

# Loop for the specified number of iterations
for (( i=1; i<=ITERATIONS; i++ ))
do
    echo "---------- Processlist at $(date) ----------" >> $OUTPUT_FILE
    mysql -u $MYSQL_USER -p$MYSQL_PASS -h $MYSQL_HOST -e "SHOW PROCESSLIST;" >> $OUTPUT_FILE
    echo "" >> $OUTPUT_FILE
    sleep $INTERVAL
done

echo "Monitoring complete. Process list is logged in $OUTPUT_FILE."