Datenbankbackup per PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
array
befehl
bekommen
code
date
datenbank
datensatz
datum
einfaches tool
einstellung
entnehmen
erstellen
file
http
information
nennen
retten
url
zugriff
-
Liebe LC-Community!
Aus mir noch unerklärlichen Gründen habe ich vor ein paar Tagen mein phpMyAdmin an die Wand gefahren und kann es derzeit auch nicht reparieren. Nun benötige dringend ein Backup einer Datenbank. Über Navicat Lite und Kollegen komm ich da leider nicht ran, denn meine SQL-Einstellungen verbieten den Zugriff von außerhalb - und das soll auch bleiben. Die Frage, die aufkommt ist nun:
Kann man über PHP eine Ausgabe (beispielsweise eine SQL-Datei oder rein über die echo Variante) der Datenbankinhalte inklusive eines CREATE TABLE-Satzes erstellen? Ich bin dazu unfähig und hoffe auf Unterstützung (gerne düft ihr auch alternative Software nennen).
LG master2die -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mir fällt da spontan nur ein die Datenbankfelder auszulesen.
Den kompletten Create Table-Befehl wirst du glaub ich nicht bekommen können.
Hier eine Hilfe (mysql_field_name( ), mysql_field_type( ),...):
http://de3.php.net/manual/de/book.mysql.php
Viel Erfolg beim Retten der Daten -
Wenn dir der exec-Befehl zur verfügung steht, kannst du folgendes Verwenden:
<?php header("Content-Type: text/plain"); $datum= date("Ymd-Hi"); $dbs=array("db1 db2 db3"); $dir = "/var/www/backup/"; // Absoluter verzeichnispfad! $db_user = "username"; $db_pass = "password"; echo "Backuptime: ".$datum."\n"; foreach($dbs AS $db) { $file = $datum."_".$db.".sql.bz2"; echo "Backing up $db in $file\n"; // als kompression wird bzip2 verwendet, evtl anpassen. exec("mysqldump --opt --hex-blob -u$db_user -p$db_pass $db | bzip2 > $dir$file"); } echo "MySQL Backup completed\n"; ?>
-
Sowas kann man sich doch ganz leicht selber basteln. Hier ein einfacher Befehl zum Auslesen einer Tabelle:
<?php $tabellenname = 'x'; // hier Tabellenname festelen $sql = "SELECT * FROM ".$tabellenname.";"; $all = array(); // neues Array erstellen, in dem alle Daten gespeichert werden sollen $result = mysql_query($sql) OR die(mysql_error()); while($row = mysql_fetch_assoc($result)) { $all[] = $row; // Datensatz sepcihern } // Schleifenende print_r($all); ?>
So, jetzt speicherst du den Quelltext, den die Seite ausgibt. Falls du das Backup irgentwann mal reinmachen musst, kannst du daraus alle Informationen entnehmen.
Beitrag zuletzt geändert: 7.10.2009 18:55:29 von drafed-map -
Einfach mal ein wenig googlen ;)
Hier gibts zum Beispiel einen recht simplen Script um einen kompletten Dump der Datenbank zu bekommen. Dazu können SQL-Funktionen wie "SHOW CREATE TABLE" verwendet werden.
http://www.wer-weiss-was.de/theme163/article2952225.html -
Da gibt es ein einfaches Tool:
http://www.mysqldumper.de/
Damit lassen sich auch große MySql Datenbänke sichern, bei denen PHP evtl. an das 30 sek Laufzeitlimit kommen würde.
Viele Grüße,
Felix -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage