mySQL backup

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mySQL backup

    PHP-Code:
    <?php
    // Script Konfiguration
    $db_host "localhost";                // Hostname
    $db_user "user";                         // DB User
    $db_pw   "pass";                         // Passwort
    $db_name "db";                         // Datenbank-Name
    define('MYSQL_HOST',     'localhost');
      
    define('MYSQL_USER',     'user');
      
    define('MYSQL_PASS',     'pass');
      
    define('MYSQL_DATABASE''db');
      
    error_reporting(E_ALL);

      
    mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR
        die(
    "Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
      
    mysql_select_db(MYSQL_DATABASE) OR
        die(
    "Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
    $path    "dump/";
    // -----------------------------------------------------
    // Don't change the lines below:
    if (!is_dir($path)) { mkdir($path0777); }
    echo 
    "<b>Datenbank Dump</b><br><br><br>";
    echo 
    "Servername: '".$db_host."'<br>";
    echo 
    "Betriebssystem: ".php_uname()."<br>";
    echo 
    "MySQL-Version: ".mysql_get_server_info()."<br>";
    echo 
    "PHP - Version: ".phpversion()."<br><br>";
    echo 
    "<table border=\"1\">";
    echo 
    "<tr><td>DB Name</td><td>Anzahl Tabellen</td><td>Größe</td></tr>";
    echo 
    "<tr><td>$db_name</td>";
    $database $db_name;
    $zaehler 0;
    $file_name $path.$database."_".date("Y-m-d_H-i").".sql";
    $text  "# --------------------------------------------------------\r\n";
    $text .= "# DATENBANK DUMP\r\n";
    $text .= "# Host: ".$db_host."\r\n";
    $text .= "# Erstellungszeit: ".date("d. F Y")." um ".date("H:i")."\r\n";
    $text .= "# Server Betriebssystem: ".php_uname()."\r\n";
    $text .= "# MySQL-Version: ".mysql_get_server_info()."\r\n";
    $text .= "# PHP-Version: ".phpversion()."\r\n";
    $text .= "# Datenbank: `$database`\r\n";
    $text .= "# --------------------------------------------------------\r\n\r\n";
    $fd fopen($file_name,"a+");
    fwrite($fd$text);
    fclose($fd);
    // Alle Datenbanken auf dem Server suchen
    $c 0;
    $result2 = @mysql_list_tables($database);
    // Tabellenname Array auslesen und aufbauen
    for ($i 0$i < @mysql_num_rows($result2); $i++)
    {
        
    $tabelle = @mysql_tablename($result2,$i);
        if (
    $tabelle != "") {
            
    $tbl_array[$c] = @mysql_tablename($result2,$i);
            
    $c++;
            
    $zaehler++;
        }

    }

    echo 
    "<td align=\"right\">".$zaehler."</td>";
    // Start Ausgabe und Berechnung
    for ($y 0$y $c$y++) {
        
    $tabelle $tbl_array[$y];
    // Struktur der Tabelle einlesen
        
    $def='';
        
    $index=array();
        
    $def .= "DROP TABLE IF EXISTS $tabelle;\r\n";
        
    $def .= "CREATE TABLE $tabelle (\r\n";
        
    $result3 = @mysql_db_query($database"SHOW FIELDS FROM $tabelle");
        while (
    $row = @mysql_fetch_array($result3)) {
            
    $def .= "    ".$row["Field"]." ".$row["Type"];
            if (
    $row["Default"] != "") { $def .= " DEFAULT '".$row["Default"]."'"; }
            if (
    $row["Null"] != "YES") { $def .= " NOT NULL"; }
            if (
    $row["Extra"] != "") { $def .= " ".$row["Extra"]; }
            
    $def .= ",\r\n";
        }
        
    $def ereg_replace(",\r\n$"""$def);
        
    $result3 = @mysql_db_query($database"SHOW KEYS FROM $tabelle");
        while (
    $row = @mysql_fetch_array($result3)) {
            
    $kname $row["Key_name"];
            if ((
    $kname != "PRIMARY") && ($row["Non_unique"] == 0)) { $kname "UNIQUE|".$kname; }
            if (!isset(
    $index[$kname])) { $index[$kname] = array(); }
            
    $index[$kname][] = $row["Column_name"];
        }
        while (list(
    $xy$columns) = each($index)) {
            
    $def .= ",\r\n";
            if (
    $xy == "PRIMARY"$def .= "    PRIMARY KEY (".implode($columns", ").")";
            else if (
    substr($xy,0,6) == "UNIQUE"$def .= "    UNIQUE ".substr($xy,7)." (".implode($columns", ").")";
            else 
    $def .= "    KEY $xy (".implode($columns", ").")";
        }
        
    $def .= "\r\n);\r\n\r\n";
    // Ende Struktur Modul
        
    $db = @mysql_select_db($database);
        
    $tabelle "".$tabelle;
        
    $text "#\r\n# Daten für Tabelle `$tabelle`\r\n#\r\n\r\n";
        
    $fd fopen($file_name,"a+");
        
    fwrite($fd$text.$def);
        
    fclose($fd);
        unset(
    $data);
        if (
    $tabelle "") {
            
    $ergebnis[] = @mysql_select_db($database);
            
    $result = @mysql_query("SELECT * FROM $tabelle");
            
    $anzahl = @mysql_num_rows($result);
            
    $spaltenzahl = @mysql_num_fields($result);
            for (
    $i 0$i $anzahl$i++) {
                
    $zeile = @mysql_fetch_array($result);
                
    $data .= "INSERT INTO $tabelle (";
                for (
    $spalte 0$spalte $spaltenzahl$spalte++) {
                    
    $feldname = @mysql_field_name($result$spalte);
                    if (
    $spalte == ($spaltenzahl 1)) {
                        
    $data.= $feldname;
                    } else {
                        
    $data.= $feldname.",";
                    }
                }
                
    $data .= ") VALUES (";
                for (
    $k=0;$k $spaltenzahl;$k++) {
                    if (
    $k == ($spaltenzahl 1)) {
                        
    $data .= "'".addslashes($zeile[$k])."'";
                    } else {
                        
    $data .= "'".addslashes($zeile[$k])."',";
                }
                }
                
    $data .= ");\r\n";
            }
            
    $data .= "\r\n";
        } else {
            
    $ergebnis[] = "Keine Tabelle übergeben";
        }

        
    $fd fopen($file_name,"a+");
        
    fwrite($fd$data);
        
    fclose($fd);
    }
    $groesse filesize($file_name) / 1024;
    echo 
    "<td align=\"right\">".number_format($groesse,2)." KB</td></tr>";
    echo 
    "</table><br>";
    echo 
    "Das DB - Backup wurde erfolgreich durchgeführt.<BR>Die Dateien befinden sich im Verzeichniss /".$path."<BR>";
    ?>
    Hallo Leute,
    ich verwende das oben genannte php Script für die Sicherung meiner DB, soweit schein auch alles in ordnung zu sein mit den Backups trotzdem its irgend wo ein Fehler versteckt. Denn wenn ich das Script auf meinem Server abrufe. wir alles Korrekt angezeigt und ausgeführ aber folgener "Fehler" wird ausgegen:

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 107

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 107

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 107

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 107

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 107

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 126

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 107

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 126

    Notice: Undefined variable: data in /home/worldgam/public_html/japan/mysql.php on line 107

    Ich verwende einen FreeBSD Server und einen Debian(Linux) mit Php 5.0.1

    Wäre toll wenn mir wer helfen kann. Danke schon mal

    gruss LukasS

  • #2
    PHP-Code:
    unset($data); // löschen der Variable $data
        
    if ($tabelle "") {
            
    $ergebnis[] = @mysql_select_db($database);
            
    $result = @mysql_query("SELECT * FROM $tabelle");
            
    $anzahl = @mysql_num_rows($result);
            
    $spaltenzahl = @mysql_num_fields($result);
            for (
    $i 0$i $anzahl$i++) {
                
    $zeile = @mysql_fetch_array($result);
                
    $data .= "INSERT INTO $tabelle ("// hinzufügen dieses Wertes 
    // zum aktuellen Inhalt von $data -> der hat
    // aber keinen Wert, weils die Variable nicht gibt!
    // -> sie wurde ja oben gelöscht! 
    Um das zu ändern, könntest du z.B. das unset($data) mit $data = ''; ersetzen. Dann sind die Notices weg
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Ah thx

      das Thema kann geschlossen werden

      Kommentar

      Lädt...
      X