1
0
Fork 0
MySQLDumper/work/config/crondump.pl

83 Zeilen
3.3 KiB
Perl

#!/usr/bin/perl -w##################################################
# MySQLDump CronDump
# 2004, Steffen Kamper
##################################################
use DBI;
use Compress::Zlib ;
# Parameter
my $dbname="pharma_peter";
my $dbpraefix="";
my $dbuser="root";
my $dbpass="";
my $compression=1;
my $backup_path="C:\\PHP\\\\\\work\\backup\\";
my $logdatei="C:\\PHP\\\\\\work\\log\\mysqldump.log";
($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
$Jahr+=1900;
my $CTIME_String = localtime(time);
$time_stamp=sprintf("%02d",$Monatstag).".".sprintf("%02d",$Monat).".".$Jahr."_".sprintf("%02d",$Stunden)."_Uhr_".sprintf("%02d",$Minuten);
$sql_file=$backup_path.$dbname."_".$time_stamp."_crondump_perl.sql";
$sql_file_z=$backup_path.$dbname."_".$time_stamp."_crondump_perl.sql.gz";
$dt=sprintf("%02d",$Monatstag).".".sprintf("%02d",$Monat).".".$Jahr." ". sprintf("%02d",$Stunden).":".sprintf("%02d",$Minuten).":".sprintf("%02d",$Sekunden).": ";
if($compression==0){$dt.="Start Perl Cron-Dump '$sql_file'\n";}else{$dt.="Start Perl Cron-Dump '$sql_file_z' \n";}
open(DATEI,">>$logdatei");
print DATEI $dt;
close(DATEI);
open(DATEI,">$sql_file");
print DATEI "";
close(DATEI);
# Verbindung mit mSQL herstellen, $dbh ist das Database Handle
my $dbh = DBI->connect("DBI:mysql:".$dbname,$dbuser,$dbpass)|| die "Database connection not made: $DBI::errstr";
my $nl="\n";
my $next_sqlcommand="[n.!!e_w._!]";
my $sql_text="# Dump created on $CTIME_String by PERL Cron-Script\n";
$sql_text.="# Remember that you must use my restorescript in order to get a working DB\n";
$sql_text.="# because I use a special code to mark the end of a command.\n";
$sql_text.="# This is NOT compatible with other restorescripts!\n";
$sql_text.="# Anyway, have fun with this but use it at your own risk. :-)\n";
@tables=$dbh->tables;
foreach $tabelle (@tables) {
# definition auslesen
if($dbpraefix eq "" or ($dbpraefix ne "" && substr($tabelle,0,length($dbpraefix)) eq $dbpraefix)) {
$a="DROP TABLE IF EXISTS `".$tabelle."`;".$next_sqlcommand."\n";
$sql_text.=$a;
$sql_create="Show create table `".$tabelle."`";
$sth = $dbh->prepare($sql_create);
$sth->execute;
@ergebnis=$sth->fetchrow;
$sth->finish;
$a=$ergebnis[1].";".$next_sqlcommand."\n";
$sql_text.=$a;
# daten auslesen
$insert = "INSERT INTO `$tabelle` VALUES (";
$sql_daten="SELECT * FROM `".$tabelle."`";
$sth = $dbh->prepare($sql_daten);
$sth->execute;
while ( @ar=$sth->fetchrow)
{
$a=$insert;
foreach $inhalt(@ar)
{$a.= $dbh->quote($inhalt).", ";}
$a=substr($a,0, length($a)-2).");";
$sql_text.= $a.$next_sqlcommand."\n";
}#jetzt wegschreiben
if($compression==0){
open(DATEI,">>$sql_file");
print DATEI $sql_text;
close(DATEI);
} else {
$gz = gzopen($sql_file_z, "wb") or die "Cannot open : $gzerrno\n" ;
$gz->gzwrite($sql_text) or die "error writing: $gzerrno\n" ;
$gz->gzclose ;
} $sql_text="";
}}# Ende
($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
$Jahr+=1900;
$dt=sprintf("%02d",$Monatstag).".".sprintf("%02d",$Monat).".".sprintf("%02d",$Jahr)." ".sprintf("%02d",$Stunden).":".sprintf("%02d",$Minuten).":".sprintf("%02d",$Sekunden).": Perl Cron-Dump '$sql_file' finished.\n";
open(DATEI,">>$logdatei");
print DATEI $dt;
close(DATEI);
$dbh->disconnect();