On Tue, Apr 09, 2002 at 10:15:12AM +0200, paul wrote: > Hello all, > > I have setup a replication between two MySQL v4.01a servers on > FreeBSD, which works really fine. The only problem is that since we > have MANY updates on the master database, the bin-logs grow very > fast. We need to do a manual clean-up at least once every other day, > otherwise the disk space will get exhausted: "SHOW SLAVE STATUS" on > the slave, write down the 'Log_File' name, and pass that to "PURGE > MASTER LOGS TO 'logname'" on the master. > > Does anybody have an idea how we could automate this procedure, or > should we manage the log-files is another way?
Here's a quick home-grown solution that works well for us. It's not the smartest approach, but we never let a slave get too far behind (they're all closely monitored), it works qutie well. This is purge_master_logs: ---snip--- #!/usr/local/bin/perl -w # # $Source: /CVSROOT/yahoo/finance/mysql/bin/purge_master_logs,v $ ## On a mysql server, purge the replication logs if there are "too ## many" sitting around and sucking up disk space. $|++; use strict; use RunMutex '/tmp/.write_heartbeat.lock'; use DBIx::DWIW; my $MIN_LOGS = 4; ## keep at least three binary logs around my $db = DBIx::DWIW->Connect( DB => "mysql", User => "root", Pass => "password", Host => 'localhost', ); if (not $db) { die "Couldn't connect to database!"; } my @logs = $db->FlatArray("SHOW MASTER LOGS"); ## see if there are enough to bother if (@logs < $MIN_LOGS) { exit; } ## if so, figure out what the last one we want to kee is my $last_log = $logs[-$MIN_LOGS]; print "last log is $last_log\n" unless $ENV{CRON}; ## and purge the rest $db->Execute("PURGE MASTER LOGS TO '$last_log'"); exit; __END__ ---snip--- Jeremy -- Jeremy D. Zawodny, <[EMAIL PROTECTED]> Technical Yahoo - Yahoo Finance Desk: (408) 349-7878 Fax: (408) 349-5454 Cell: (408) 685-5936 MySQL 3.23.47-max: up 61 days, processed 1,654,071,336 queries (311/sec. avg) --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <mysql-unsubscribe-##L=##[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php