Buat script
/usr/local/bin/check-mysql.sh
:#!/bin/bash
# Config
MYSQL_USER="root"
MYSQL_PASS="your_password"
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
LOG_FILE="/var/log/mysql-check.log"
# Function untuk log
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}
# Cek jika MySQL service running
check_mysql_service() {
if systemctl is-active --quiet mysql; then
return 0
else
log_message "MySQL service is not running"
return 1
fi
}
# Cek koneksi MySQL
check_mysql_connection() {
if mysqladmin -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASS ping > /dev/null 2>&1; then
return 0
else
return 1
fi
}
# Main script
log_message "Starting MySQL health check"
if check_mysql_service; then
if check_mysql_connection; then
log_message "MySQL is running and responsive ✓"
exit 0
else
log_message "MySQL service running but not responding - Restarting..."
systemctl restart mysql
sleep 5
# Cek lagi setelah restart
if check_mysql_connection; then
log_message "MySQL successfully restarted ✓"
else
log_message "Failed to restart MySQL ❌"
fi
fi
else
log_message "MySQL service not running - Starting..."
systemctl start mysql
sleep 5
if check_mysql_service && check_mysql_connection; then
log_message "MySQL successfully started ✓"
else
log_message "Failed to start MySQL ❌"
fi
fi
#Permission exe
sudo chmod +x /usr/local/bin/check-mysql.sh
#crontab
# Check MySQL setiap 5 menit
*/5 * * * * /usr/local/bin/check-mysql.sh