RSS

Auto Restart Mysql Bash

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

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS