seit Stunden verusche ich bereits erfolglos eine Datenbank aus einer Datei wiederherzustellen, die ich zuvor mit mysqldump erzeugt habe.
Kurze Skizze meines Projekts:
Gehostet auf 1&1 mit professionellem Paket, aber kein dezidierter Server.
Benutzer eines komplexen datenbankbasierten, mandantenfähigen PHP-Programms sollen die Möglichkeiten erhalten, per Knopfdruck ein Backup ihrer Datenbank zu erzeugen. Sie haben keinen Einfluss darauf, unter welchem Namen und wo dieses Backup gespeichert wird, sie sehen nur eine Liste der von Ihnen angelegten Backups. Die Backups werden vom Programm auf dem Server außerhalb des öffentlich zugängigen Bereichs gespeichert. Die Benutzer sollen nun ebenfalls durch Mausklick die Möglichkeit erhalten, ein gewünschtes Backup auszuwählen und wiederherzustellen, d.h. die Daten der aktuellen Datenbank komplett durch die gespeicherten Daten zu ersetzen.
Das ist mein Ansatz:
Über das Skript:
PHP-Code:
system(sprintf(
'mysqldump --opt --hex-blob --complete-insert --extended-insert --quick --create-options -h%s -u%s -p"%s" %s | gzip > %s',
$dbhost,
$dbuser,
$dbpass,
$dbname,
"path_and_filename.sql.gz");
Zur Wiedeherstellung war nach kurzer Internet-Recherche das folgende mein erster Versuch:
PHP-Code:
system(sprintf('gunzip < %s | mysql -u%s -p%s -h%s %s',
"path_and_filename.sql.gz",
$dbuser,
$dbpass,
$dbhost,
$dbname
));
PHP-Code:
system('gunzip path_and_filename.sql.gz > path_and_filename.sql');
Aber weder 'mysql'...
PHP-Code:
system(sprintf('mysql -u%s -p%s -h%s %s < %s',
$dbuser,
$dbpass,
$dbhost,
$dbname,
"path_and_filename.sql"
));
PHP-Code:
system(sprintf('mysqlimport -u%s -p%s -h%s %s %s',
$dbuser,
$dbpass,
$dbhost,
$dbname,
"path_and_filename.sql"
));
Ich habe auch versucht die Datei zu öffnen, mit fread() einzulesen und den ganzen String als Query abzusenden, aber das gab einen Syntax-Fehler. Was merkwürdig ist, denn der Import der exakt gleichen Datei über phpmyadmin geht problemlos!! Ist aber auch nicht der Ansatz, den ich fahren will, denn einige der unkomprimierten Dump-Files sind bereits ca. 80 MB groß!. (Mein Testfile ist nur 800 KB groß!)
Bin ich hier komplett auf dem Holzweg? Gibt es einen groben Fehler in meinen Überlegungen? Hat jemand Erfahrungen oder einen Tipp, der mir weiterhelfen könnte?
Danke im Voraus...
hbergman
Einen Kommentar schreiben: