Ik heb een backup script geschreven voor mysql in perl. Voorheen maakte ik altijd een backup van de complete database met alle databases in 1 SQL bestand, het was op die manier alleen erg lastig om een individuele database te restoren.
Dit script maakt van elke database een individueel .sql bestand en op het laatst gzip't hij alle bestanden. Hij plaatst deze bestanden in een map met de datum (wordt automatisch aangemaakt).
Het enige wat je nog moet instellen is de variable basepath, dit moet een geldige map zijn. En je moet de DBI->connect string aanpassen, hier moet een geldig mysql username en wachtwoord in (met toegang tot alle databases).
Met een cronjob kan je deze inroosteren zodat het dagelijks automatisch draait.
Ik hoop dat jullie er wat aan hebben. Mochten jullie nog opmerkingen en/of verbeteringen hebben laat het dan weten
Code:#!/usr/bin/perl my $date = `date +%Y%m%d`; chomp($date); my $basepath = '/var/backups/mysql'; use DBI; $db = DBI->connect("dbi:mysql:database=;host=localhost;user=;password=") or die "Couldn't connect to database: $DBI::errstr\n"; my $sth = $db->prepare("SHOW DATABASES"); $sth->execute(); `mkdir $basepath/$date`; while (@data = $sth->fetchrow_array()) { my $dbname = $data[0]; my $target = "$basepath/$date/$dbname.sql\n"; print $target; `/usr/bin/mysqldump -Q --database $dbname > $target`; } `gzip -f $basepath/$date/*`; $db->disconnect();

Likes:


