Forum Doku Wiki Blog

Forumsarchiv 2006, August
MySQL-Dump erstellen und wieder einspielen

archivierte Beiträge lesen

  1. (PHP) MySQL-Dump erstellen und wieder einspielen von Celi, 01. 08. 2006, 14:14

MySQL-Dump erstellen und wieder einspielen

Der folgende Beitrag wurde am 01. 08. 2006, 14:14 Uhr von Celi veröffentlicht.

hi!

es soll einmal täglich ein mysql-dump erstellt werden.

Weiters soll der gleiche dump einmal täglich in eine andere
MySQL auf einem Server eingespielt werden.

Das wieder einspielen der Daten wollte ich ja so
ungefähr machen:

mysqli_multi_query($connection, file_get_contents('dump.sql'))

mysqli  wird aber leider bei meinem Provider nicht unterstützt.

Eine verbindung zu MySQL kann PHP aber herstellen,
sonst würde joomla auch nicht laufen können.

Der backup und einspiel prozess soll automatisiert ablaufen (cronjob)

wie hat das script dafür auszusehen?

Danke
Celi

MySQL-Dump erstellen und wieder einspielen

Der folgende Beitrag wurde am 01. 08. 2006, 14:32 Uhr von Ilja veröffentlicht.

yo,

falls (in aller regel eher nicht, aber provider fragen) du zugriff auf die datenbank dateien hast und die datenbank auch mal offline ist, kannst du via ftp die dateien einmal täglich einfach runterladen.

außerdem fragen, ob dein provider überhaupt cronjobs bereitsstellt. den befehl zum dump könnte dann über die betriebssystem-ebene ablaufen und die dump datei dann wieder per ftp runtergelanden werden. also ich würde das weniger über php machen.

Ilja

MySQL-Dump erstellen und wieder einspielen

Der folgende Beitrag wurde am 01. 08. 2006, 14:38 Uhr von Celi veröffentlicht.

> falls (in aller regel eher nicht, aber provider fragen) du zugriff auf die datenbank dateien hast

nein, habe ich nicht

> außerdem fragen, ob dein provider überhaupt cronjobs bereitsstellt.

ja - tut er

> den befehl zum dump könnte dann über die betriebssystem-ebene ablaufen und

nein kann es nicht ... und das hat seinen Grund...


> also ich würde das weniger über php machen.

Gut - ich nicht!
Meine Frage war konkret wie das mit PHP geht ...

Danke
Celi

MySQL-Dump erstellen und wieder einspielen

Der folgende Beitrag wurde am 01. 08. 2006, 14:43 Uhr von Alexander Brock veröffentlicht.

Hallo Forum,

> > den befehl zum dump könnte dann über die betriebssystem-ebene ablaufen und
>
> nein kann es nicht ... und das hat seinen Grund...

Und der wäre? Bei meinem Hoster geht das.

> > also ich würde das weniger über php machen.
>
> Gut - ich nicht!
> Meine Frage war konkret wie das mit PHP geht ...

Dann musst du halt einen SQL-Parser in PHP bauen, mit dem du deine Datei in einzelne Queries zerlegen kannst.

explode(';', $file_get_contents('dump.sql')) ist keine Lösung, weil Zeichenketten in einzelnen Queries Semikola enthalten können.

Gruß
Alexander Brock
--
A
V-Text-Categorizer - Ein Klasse in PHP, die Text anhand von Statistiken über Texte in Kategorien sortiert (z.B. in Spam und nicht-Spam).

MySQL-Dump erstellen und wieder einspielen

Der folgende Beitrag wurde am 01. 08. 2006, 15:02 Uhr von Rainer veröffentlicht.

Hallo Celi,

mit
#########################
$sql_inhalt = '';
$rs = mysql_list_tables ($db, $conn);
while($table = mysql_fetch_row($rs)){
 $sql = "SELECT * FROM `".$table[0]."`";
 $rs2 = @mysql_query($sql);
 while($ds = mysql_fetch_row($rs2)){
  $sql_fields = array();
  for($i=0;$i<mysql_num_fields($rs2);$i++){
   $sql_fields[] = mysql_escape_string($ds[$i]);
  }
  $sql_inhalt .= "INSERT INTO `".$table[0]."` VALUES ('".implode("','",$sql_fields)."');\n";
 }
}
########################
hast du schon mal die Queries in einer Datei.
Soll die komplette DB "gespiegelt" werden müsstest du jetzt die Tabelleninhalte auf der ZielDB löschen, dann aus der $sql_inhalt Zeilenweise einlesen (trennen bei \n) und die Queries ausführen.
Es kann aber sein das bei sehr vielen Queries die Laufzeit des Scripts (wird in der php.ini eingestellt) nicht ausreicht.

Gruß Rainer

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4