Many Thanks to Dobromir Velev,

And for those without PERL but with PHP (or prefer PHP) here is a quick and
dirty port to PHP


**** REMEMBER TO MAKE A BACKUP OF YOUR FILES BEFORE TESTING OR USING THIS
SCRIPT ****
**** IT IS RECOMMENDED YOU TEST THIS SCRIPT IN A NON PRODUCTION ENVIRONMENT
FIRST ****
**** USE AT YOUR OWN RISK, THERE IS NO WARRANTY EXPRESS OR IMPLIED WITH THIS
SOFTWARE ****

Cheers

Dean

<--- Script Starts --->

#!/usr/bin/php -q
<?php 
# Remove the first line if you are running this through a browser
# Author Dean Urmson <durmson (_A_T_) mistral-networks (_D_O_T_) co
(_D_O_T_) uk>
# PHP Port of Original PERL script by Dobromir Velev <mysql (_A_T_) awebhome
(_D_O_T_) net>

$db_host="<your host here, maybe localhost>";
$db_user="<your mysql username here>";
$db_pass="<your mysql password here>";
$query="show master logs" ;
$dbh=NULL ;

$to_email='<Your email address here>';
$from_email='<Your From email address here>';
$email_subject='DB Clean error - '.date( 'l Y-m-d H:i:s T', time()) ;

$log = array() ;
// Leave the last x logs
$num_logs_to_leave = 7 ;

function controlled_die( $message = NULL ) {
        global $dbh, $to_email, $from_email, $email_subject ;
        
        if( is_null( $message ) ) {
            $message = "MySQL ERROR: (".mysql_errno($dbh).")
".mysql_error($dbh);
        }
        
        $headers  = "From: $from_email\r\n" ;
        $headers .= "Reply-to: $from_email\r\n" ;
        
        mail( $to_email, $email_subject, $message, $headers ) ;
        exit;
} // end function Controlled_die

$dbh = mysql_connect($db_host, $db_user, $db_pass) 
    or controlled_die() ;

$result = mysql_query($query) 
    or controlled_die();
    
$rows = mysql_num_rows($result) ;

while ($num_logs_to_leave <= $rows){
    $currRow  = mysql_fetch_array($result,MYSQL_NUM) ;
    $log[] = $currRow[0] ;
    $num_logs_to_leave++;
}

mysql_free_result($result) ;

$message  = "MySQL Log Purge Started :: ".date( 'l Y-m-d H:i:s T', time()) ;
$message .= "\nPurging logs to ".$log[count($log) - 1]."\n";

mysql_query("purge master logs to '".$log[count($log) - 1]."'") or
controlled_die();

mysql_close($dbh) ;

$message .= "Logs purge end: ".date( 'l Y-m-d H:i:s T', time())."\n";
$email_subject='MySQL Log Purge Report' ;
controlled_die($message);
?>

<--- Script Ends --->


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to