Avatar billede bilbo2 Nybegynder
29. april 2002 - 15:51 Der er 9 kommentarer og
1 løsning

Backup af MySQL database -> zip fil

Hej,

Dette er en forlængelse af mit spørgsmål vedr. backup af min mysql database. Jeg giver faktisk hele 200 point til den kan give kilde til neden stående spørgsmål:

Er der nogen der kan hjælpe mig med at lave et script der kan tagen dump af ens mysql database (inkl. data og alle tabellerne) og sende det tilbage til en som en pakket .zip fil?

Jeg er bare generelt doven hvis I undrer hvorfor jeg ikke selv gøre det :)

./bilbo2
Avatar billede pgm Nybegynder
29. april 2002 - 17:10 #1
phpmyadmin kan gøre det let og hurtigt
Avatar billede pgm Nybegynder
29. april 2002 - 17:11 #2
Avatar billede pgm Nybegynder
29. april 2002 - 17:15 #3
Guide:
Vælg din database.

gå til Vis dumb af tabel.
marker ALLE tables
vælg at den skal SEND som zipped
Avatar billede pgm Nybegynder
29. april 2002 - 17:15 #4
ikke Vis dumb af tabel, men Vis dumb af database
Avatar billede razor Nybegynder
29. april 2002 - 17:45 #5
På linux ville jeg bare lave et lille shellscript:

#!/bin/sh

# hent dump
mysqldump -uBRUGERNAVN -PPASSWORD DATABASE > dump.sql

# zip dump
zip -9 dump.zip dump.sql

# slet upakket dump
rm -f dump.sql

# send zip
echo "Databasebackup" | mutt -a dump.zip -s "Backup" email@adresse.dk

# slet zip
rm -f dump.zip
Avatar billede razor Nybegynder
29. april 2002 - 17:46 #6
hovsa :/ det skal være:

mysqldump -uBRUGERNAVN -pPASSWORD DATABASE > dump.sql

Hvis du vil have alle databaser:

mysqldump -uBRUGERNAVN -pPASSWORD -A > dump.sql
Avatar billede tipsen Nybegynder
29. april 2002 - 19:14 #7
Bruger følgende i Windows 2000:

"c:\Program Files\MySQL\bin\mysqldump.exe" -e --host=dithostname --user=ditusername --password=ditpassword --databases dindbnavn > "dbdump_%DATE%.sql"

-så får jeg også tidsstempling på outputfilen - ydermere kan man i Windows schedule et job, så det bare kører fast engang om ugen...
Avatar billede bilbo2 Nybegynder
30. april 2002 - 13:50 #8
razor, du er vinderen. Det virker fint på Linux, tak for det.
Selv om det ikke var præcis hvad jeg skulle bruge, lavede jeg selv nedenstående script:

<?php
require_once('../../include/globalconf.php');
require_once('../../language/'.$gn['lang'] . '.php');
session_start();
?>
<?php
if($name <> $gn['admin']) {
        print $gn['no_enter'];
        exit;
    }
?>
<?php
  $dbHostname = $gn['host'];
  $dbUsername = $gn['user'];
  $dbPassword = $gn['pass'];
  $dbName = $gn['db'];
  global $t;
header("Content-type: application/sql");
  $tables = mysql_list_tables($dbName);
  $num_tables = @mysql_numrows($tables);   
header("Content-type: application/sql");
   
    $i=0;
    while ($i<$num_tables) {
     
      $table = mysql_tablename($tables,$i);
     
      print "#  \n";
      print "# Table structure for table '$table' \n";
      print "#  \n\n";
     
      // table structure
      $struc = "CREATE TABLE $table (\n";
     
      $query = "SHOW FIELDS FROM $table";
      $result = mysql_query($query);

      while ($row=mysql_fetch_array($result))  {     
        $struc .= "  $row[Field] $row[Type]";
       
        if(!empty($row["Default"])) {
          $struc .= " DEFAULT '$row[Default]'";
        }
        if($row["Null"] != "YES") {
          $struc .= " NOT NULL";
        }
        if($row["Extra"] != "") {
          $struc .= " $row[Extra]";
        }
        $struc .= ",\n";
      }     
     
      $query = "SHOW KEYS FROM $table";
      $result = mysql_query($query);     
      $pkey_exist = mysql_num_rows($result);
     
      if($pkey_exist!=0) {
        $pkey = mysql_result($result,0,'column_name');
        $struc .= "  PRIMARY KEY ($pkey)\n";
      }
      else {
        // replace ,\n
        $struc = substr($struc,0, strlen($struc)-2);     
        $struc .= "\n";
      }     
     
      print $struc;
      print ");\n\n";

     
      print "#  \n";
      print "# Dumping data for table '$table' \n";
      print "#  \n\n";

      $query = "select * from $table";
      $result = mysql_query($query);

      $j = 0;
      while($row=mysql_fetch_row($result)) {
        $data .= "INSERT INTO $table VALUES(";
        for($k=0; $k<mysql_num_fields($result);$k++) {
          if (!isset($row[$k])) {
            $data .= " NULL,";
          }
          elseif($row[$k]!="") {
            $data .= " '".addslashes($row[$k])."',";
          }
            else {
              $data .= " '',";
            }
        }

        $data = substr($data,0, strlen($data)-1);     
        $data .= ");\n";
        $j++;
      }
   
      print $data."\n";
      $data = "";
     
      $i++; 
    }
 
?>


--------------

Det dumper en hel database i en tekst fil, virker kanont, hvis nogen skulle få brug for det i fremtiden.

./bilbo2
Avatar billede pgm Nybegynder
30. april 2002 - 13:54 #9
takker da for scriptet
Avatar billede bilbo2 Nybegynder
30. april 2002 - 14:10 #10
No problems, virker fortræffeligt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester