Hallo,
leider kann ich meine Datenbanken nicht per ssh sichern, hierzu fehlen mir Rechte. Bisher habe ich sie mit einem perlscript gesichert, was seinerzeit beim sqldumper dabei war. Funktioniert einigermaßen komfortabel, aber nicht 100% zuverlässig, wenn ich neue Datenbanken einpflege und diese nicht sofort auch in die config-Datei des perlscripts übernehme.
Daher habe ich ein script geschrieben, das diese Arbeit übernehmen soll.
Es soll ermitteln, welche Datenbanken vorhanden sind und diese dann nach und nach sichern, wobei sich das script dann jeweils selber wieder aufrufen soll.
Ich würde das script hier gerne mal zur Diskussion stellen ujnd um eventuelle verbesserungen und Kritik bitten.
Btw.: Ich würde sagen, es sollte laufen, aber ich habs noch nicht Probe laufen lassen können, da system-Befehle auf meinem Testserver nicht laufen. Auf dem produktivserver laufen sie, aber dort habe ich nur den reinen "Dump-Teil" getestet. Der läuft.
$sql = "SHOW DATABASES";
$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'pass';
$path = '/bla/bla/';
$link = mysqli_connect($dbhost,$dbuser,$dbpass) or die ('Error connecting to mysql: '.mysqli_error($link).'\r\n');
if(!($result = mysqli_query($link,$sql))) {
printf("Error: %s\n",mysqli_error($link));
}
while($row = mysqli_fetch_row($result)) {
if(($row[0] != "mysql") || ($row[0] == "information_schema")) {
// DB-User sind immer die ersten 10 zeichen des DB-Namens
$arr_list[] = $row[0]."_".substr($row[0],0,10);
}
}
if(!isset($_GET['listID'])) {
$listID = 0;
} else {
$listID = $_GET['listID'];
}
while($listID < count($arr_list)) {
$myEintrag = $arr_list[$listID];
$arr_myEintrag = explode('_',$myEintrag);
$dbname = $arr_myEintrag[0];
$dbuser = $arr_myEintrag[1];
$db_kennzeichen = $dbuser.'_'.date("d_m_Y_G_i");
system('/usr/bin/mysqldump -u'.$dbuser.' -p'.escapeshellarg($dbpass).' -h'.$dbhost.' '.$dbname.' | /bin/gzip >'.$path.'dump/'.$db_kennzeichen.'.sql.gz',$fp);
if(($fp == 0) && (false !== chmod($path.'dump/'.$db_kennzeichen.'.sql.gz',0666))) {
//echo "Daten exportiert";
} else {
echo "Es ist ein Fehler aufgetreten".$fp;
}
$listID++;
header("Location: http://mysite.bla/dump.php?listID=".$listID."");
}
echo "fertig";
exit;