Geschrieben von tct am 12.04.2004, 10:32

Zu diesem Thema gib es zwar schon ein Tutorial, aber es gibt noch eine weitere Möglichkeit die Datenbank wieder herzustellen.
Zuerst braucht man wieder ein funktionierendes Backup der DB. Dieses lässt sich entweder direkt in der Forumadministration erstellen oder mit dem phpMyadmin. Beim phpMyadmin wählt man die DB aus und klickt auf exportieren. Dann wählt alle Tabellen aus, ganz wichtig ist, dass man rechts auch die Option "Mit Drop-Table" anklickt und unten noch "senden" wählt. Dann auf "OK" und das Backup runterladen. Jetzt hat man schonmal ein Backup, aber zum Wiederherstellen kommen wir nun.
Das wichtige dabei ist dieser phpScript:

<?php
// Author: Dave Smulders
// Do NOT remove this copyright!

// This section needs to be adapted to your needs. Enter database information and name of dump sql file here.
// Then run the php restore script with your browser.

$db_name = "*****"; // replace ***** by your database name
$db_user = "*****"; // replace ***** by your database user
$db_passwd = "*****"; // replace ***** by your database password
$db_server = "mysql.lima-city.de"; // can usually be left
$db_prefix = ""; // can be left empty

$sql_file = "backup.sql"; // replace backup.sql by the name of your dump file

// From here on the script usually does not to be changed any more.

// Print Header
print <<<EOT
<html>
<head>
<title>Restore MySQL Dump</title>
</head>
<body>
<h1>Restore MySQL Dump</h1><br>
EOT;

// Main Script starts here

//connect to database
$db = mysql_connect($db_server, $db_user, $db_passwd);
//select database
mysql_select_db($db_name, $db);

set_time_limit(10000);
$fd = fopen ($sql_file, "r");

$query = "";
$counter = 0;
$counterrs = 0;
while (!feof ($fd)) {
$line = fgets($fd, 4096);
$line = chop($line);

if(!ereg("^#",$line)) $query .= $line;
if((ereg(";\n?$",$line) or feof($fd)) and $query != "") {
$counter++;
if (!mysql_query($query))
{
echo "<i>Executing query $counter</i><br>";
print "<i>Error: ".mysql_error()."</i><br>";
print "<i>Query that could not be executed: <br>";
print $query; print "</i><br><br>\n";
$counterrrs++;
}
else
{
// do not display non-errors
// echo "<i>Executing query $counter</i><br>";
// print "<i>No Errors</i><br><br>\n";
};
$query = "";
}
}
fclose ($fd);

// Print Summary
echo "Number of queries executed: ".$counter."<br>";
echo "Number of errors encountered: ".$counterrrs."<br>";

// Print html footer
print <<<EOT
</body>
</html>
EOT;
?>

Hier nochmal zu downloaden: http://home.arcor.de/thomastischer/web/restore.zip
Wie man sieht ist dieser Script nicht von mir, aber ich habe ihn schon erfolgreich getestet und er geht wirklich sehr gut, ohne dabei den phpMyadmin zu bemühen. Besonders nützlich ist er, wenn der phpMyadmin mal wieder nicht geht, z.B. nach einem Hackangriff, so wie es letztes Mal der Fall war. Deshalb habe ich mich auf die Suche nach einer Alternative gamacht und bin dabei auf dieses Script gestoßen.
Er überschreibt dabei einfach die alte DB mit dem Backup, deshalb ist auch die Option "Mit Drop-Table" wichtig, denn nur dadurch können die alten Tabellen ersetzt werden.

Um den Script nutzen zu können, muss man ihn und das Backupfile auf den Webspace laden und zwar in den gleichen Ordner. Dann den Script einfach ansurfen und ein bisschen warten. Die DB wird dann wiederhergestellt.
Ich hoffe natürlich für euch, dass ihr diesen Script niemals brauchen werdet, aber sicher ist sicher.

mfG tct

Bewertung Anzahl
5
100,0 %
1 Bewertungen