Welcome, Guest. Please Login or Register.
November 24, 2024, 01:13:02 AM
Home Help Search Log in Register
News: SMF is the next generation in forum software, almost completely re-written from the ground up, make sure you don't fall for cheap imitations that suffer from feature bloat!

YaBB SE Community  |  German User Help  |  Hilfe zu YaBB SE  |  Datenbank-Backup « previous next »
Pages: [1] Reply Ignore Print
Author Topic: Datenbank-Backup  (Read 6844 times)
VCRulez
Noobie
*
Posts: 11


WWW
Datenbank-Backup
« on: February 03, 2004, 02:10:52 PM »
Reply with quote

YaBB SE Version: 1.5.5
PHP Version: 4.2.3
MySQL Version: 3.23.x
Server Plattform: Unix, Linux, or BSD
Link zum Forum: http://www.nbalive-liga.net/board

Problem Beschreibung:
Hallo, auch wenn die Frage möglicherweise schon oft gestellt wurde, so konnte ich mit Hilfe älterer Beiträge noch keine Lösung finden.
Ich möchte von meiner Board-Datenbank ein Backup machen. Über den Link im Admincenter funktioniert es nicht, da nicht die Boarddaten aus der Datenbank speichert, sondern andere, die zur Homepage gehören und nicht zum Board (aber eben in der selben DB sind, nur andere Prefixe).
Über PHPMyAdmin klappt es auch nicht, da ich einen Timeout bekomme - wohl zu viel Daten. Nun könnte ich womöglich jede Tabelle einzeln speichern, dies ist für ein regelmäßiges Backup aber nicht wirklich praktisch.
Mit PHPmyBackup habe ich es auch schon versucht. Kommt auch ein Fehler, wahrscheinlich weil nicht genug Platz ist, um die DB auf dem Webspace zu speichern.
Von daher dir Frage: Was könnte ich noch tun um meine DB lokal zu speichern?
Danke
« Last Edit: March 01, 2004, 11:27:15 PM by VCRulez » Logged

SnowCrash
Full Member
***
Posts: 110


Re:Datenbank-Backup
« Reply #1 on: February 04, 2004, 09:33:35 AM »
Reply with quote

Datei in das YaBB-SE Verzeichnis legen, im YaBBSE-Verzeichnis ein Verzeichnis "dumps" anlegen, CHMOD 777 auf das Verzeichnis... dann das Script aufrufen...

Das Besondere an dem Script ist, dass es automatisch alle Tabellen in eine Datei schreibt und sich für jede Tabelle neu aufruft... ein Timeout wird so unwahrscheinlicher.... also man ruft das Script auf, es exportiert die erste Tabelle, dann zeigt es kurz an, welche Tabelle exportiert wurde und läd sich per HTML-Refresh neu und exportiert die nächste Tabelle... das wiederholt sich bis alle Tabellen geschrieben wurden...

<?php

   
// (C) 2004 by Christian Land / tagdocs.com

   $GLOBALS["showcolumns"]      true;      // true = complete insert statements (with field-names) 
   $GLOBALS["droptables"]      true;      // true = adds "DROP TABLE IF EXISTS ..." before CREATE-TABLE
   
   $url            
'http://'.$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];   

   
//

   function getTableContent($db_name$tableName)
   {
      $crlf "\r\n";
   
      $result 
mysql_db_query($db_name"SELECT * FROM $tableName") or die(mysql_error());
      $num_entrys mysql_num_rows($result);

      $i 0;
   
      for 
($i 0$i $num_entrys$i++)
      {
         while($row mysql_fetch_row($result)) {
            $table_list "(";
   
         for
($j=0$j<mysql_num_fields($result);$j++)
            $table_list .= mysql_field_name($result,$j).", ";
   
            $table_list 
substr($table_list,0,-2);
            $table_list .= ")";
   
            if
($GLOBALS["showcolumns"])
               $schema_insert "INSERT INTO $tableName $table_list VALUES (";
            else
               $schema_insert 
"INSERT INTO $tableName VALUES (";
   
            for
($j=0$j<mysql_num_fields($result);$j++)
            {
               if(!isset($row[$j]))
                  $schema_insert .= " NULL,";
               elseif($row[$j] != "")
               {
                  $schema_insert .= " '" mysql_escape_string($row[$j]) . "',";
               }
               else
                  $schema_insert 
.= " '',";
            }
            
            $schema_insert 
ereg_replace(",$"""$schema_insert);
            $schema_insert .= ")";
   
            $data 
.= $schema_insert.";".$crlf;
         }
      }
      
      return 
($data);
   }

   // connect to database

   require_once('Settings.php');
   
   $dbcon   mysql_connect($db_server$db_user$db_passwd) or die(mysql_error());
   mysql_select_db($db_name) or die(mysql_error());
   
   
// ok, lets get a list of all tables
   
   $sqlquery   
'SHOW TABLES FROM '.$db_name.' LIKE "'.$db_prefix.'%"';
   $request   mysql_query($sqlquery) or die(mysql_error());

   $tables      = array();

   while ($data mysql_fetch_row($request))
      $tables[]   $data[0];

   asort($tables);

   // now we've got an array with all tables - always sorted the same way... 

   $dump_table   = (int)$_GET['tabno'];

   // OK, get the create-table statement
   
   $filename   
'./dumps/dump_'.date('Ymd',time()).'.sql';
   
   $sqlquery   
'SHOW CREATE TABLE '.$tables[$dump_table];
   $request   mysql_query($sqlquery) or die(mysql_error());
   $data      mysql_fetch_row($request);
   
   $dump      
= array();

   if($GLOBALS["droptables"])
      $dump[]   'DROP TABLE IF EXISTS '.$tables[$dump_table].";\n";

   $dump[]      trim($data[1]).';'."\n";   

   
// get data...
   
   $dump
[]      getTableContent($db_name$tables[$dump_table])."\n";

   // write SQL-File

   if ($dump_table == 0)
      @unlink($filename);

   if (file_exists($filename))
      $fhandle   fopen($filename,'a');
   else
      $fhandle   
fopen($filename,'w');

   fwrite($fhandleimplode("\n",$dump));

   fclose($fhandle);

   if (isset($tables[(int)($dump_table+1)]))
      $dummy   '<html><head><meta http-equiv="refresh" content="2; URL='.$url.'?tabno='.(int)($dump_table+1).'"></head><body>'.$tables[$dump_table].' exported</body></html>';
   else
      $dummy   
'Done...';
      
   echo $dummy
;

?>


ACHTUNG!!! Wenn Euer Export gelaufen ist müsst ihr DRINGEND das entstandene SQL-File vom Server löschen (nachdem ihr es runtergeladen habt ;D) !!! Ansonsten kann jeder den Dump runterladen und hat so alle IMs, Userdaten, etc. !!!!!!!

Sollte das Script nur die erste Tabelle sauber exportieren und danach auf eine falsche URL gehen, dann müsst ihr am Anfang die Zeile

$url = 'http://'.$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];


so ändern, dass dort Eure URL steht... also z.B.

$url = 'http://www.blabla.bla/yse/dump.php';


...

Achja... es wäre auch nicht schlecht, das Script nach dem Backup wieder zu löschen ;D So rein vom Sicherheitsstandpunkt her....

(Das Problem des fehlenden Webspaces löst es aber leider auch nicht...)
« Last Edit: February 04, 2004, 11:47:55 AM by SnowCrash » Logged

It's better to be hated for who you are
then to be loved for who
you are not...
[/b][/i]
VCRulez
Noobie
*
Posts: 11


WWW
Re:Datenbank-Backup
« Reply #2 on: February 05, 2004, 10:27:40 PM »
Reply with quote

Nunja, nettes Script aber leider ähnlicher Fehler wie bei PHPmyBackup:
QuoteFatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 19813 bytes) in /usr/www/.../dump.php on line 49
Logged

SnowCrash
Full Member
***
Posts: 110


Re:Datenbank-Backup
« Reply #3 on: February 06, 2004, 08:19:45 AM »
Reply with quote

Hmmm.... das is schlecht.... ich schau mal ob ich am Wochenende kurz was zusammenbaue... eine Idee hab ich noch ;D
Logged

It's better to be hated for who you are
then to be loved for who
you are not...
[/b][/i]
SnowCrash
Full Member
***
Posts: 110


Re:Datenbank-Backup
« Reply #4 on: February 09, 2004, 10:17:40 AM »
Reply with quote

OK, im Laufe der Woche werde ich wohl ein Backup-Tool veröffentlichen das auch mit grossen Boards funktionieren sollte... das ganze wird so funktionieren, dass die Tabellen ggf. gesplittet werden... es wird also nicht in einem Rutsch alles exportiert, sondern immer nur Blöcke von X Datensätzen. Auf Wunsch wird das Ergebnis dann auch noch in ZIP Files gepackt ;D
Logged

It's better to be hated for who you are
then to be loved for who
you are not...
[/b][/i]
VCRulez
Noobie
*
Posts: 11


WWW
Re:Datenbank-Backup
« Reply #5 on: February 09, 2004, 10:33:51 AM »
Reply with quote

Cool! :)
Logged

SnowCrash
Full Member
***
Posts: 110


Re:Datenbank-Backup
« Reply #6 on: February 13, 2004, 12:13:59 PM »
Reply with quote

Dauert noch 2-3 Tage... war die Woche über kaum zuhause... ziemlich viel Stress inner Firma *grummel*
Logged

It's better to be hated for who you are
then to be loved for who
you are not...
[/b][/i]
andrea
Global Moderator
YaBB God
*****
Posts: 4400


Peace on Earth

WWW
Re:Datenbank-Backup
« Reply #7 on: February 23, 2004, 11:35:11 AM »
Reply with quote

Hallo vcrulez, benutze einfach das kleine Script, das in Antwort #4 in diesem FAQ Thread gepostet ist:

http://www.yabbse.org/community/index.php?thread=15902
Logged

P_man
Jr. Member
**
Posts: 55


I'm a llama!

Re:Datenbank-Backup
« Reply #8 on: February 23, 2004, 12:40:11 PM »
Reply with quote

vorsicht andrea,
das ist ein shellscript, kein php.
dazu braucht man ssh-zugang zum server.

wenn man diesen jedoch hat isses sauschnell ;)
einfach am prompt die befehle eingeben

daten raus ausse db:
mysqldump --opt -hlocalhost -uDBusername -pDBpw DBname > DBname.sql

daten wieder rein inne db:
mysql -hlocalhost -uDBusername -pDBpw DBname < DBname.sql

als hinweis noch: wer den shellzugang hat und ihn benutzt sollte sich schon etwas auskennen, das is nich ganz so trivial ;)

lg P
Logged
VCRulez
Noobie
*
Posts: 11


WWW
Re:Datenbank-Backup
« Reply #9 on: March 01, 2004, 11:26:35 PM »
Reply with quote

Shell-Zugang habe ich nicht, deswegen nutzlos für mich.
SnowCrash, gibt's was neues? :)
Logged

andrea
Global Moderator
YaBB God
*****
Posts: 4400


Peace on Earth

WWW
Re:Datenbank-Backup
« Reply #10 on: March 02, 2004, 01:02:14 AM »
Reply with quote

Quote from: VCRulez on March 01, 2004, 11:26:35 PM
Shell-Zugang habe ich nicht, deswegen nutzlos für mich.

Überhaupt nicht nutzlos ohne shell Zugang. Kannst Du in Deinem Control Panel crontabs aufsetzen? Falls ja ist dieses Script die beste Methode. Ist im FAQ Thread auch beschrieben.

Falls nein, und auch wenn ich das hier lese:
QuoteMit PHPmyBackup habe ich es auch schon versucht. Kommt auch ein Fehler, wahrscheinlich weil nicht genug Platz ist, um die DB auf dem Webspace zu speichern.

dünkt es mich eher Du benötigst weniger ein neues Script als einen neuen Server (oder mindestens mal mehr Speicherplatz)...
« Last Edit: March 02, 2004, 01:03:02 AM by andrea » Logged

Pages: [1] Reply Ignore Print 
YaBB SE Community  |  German User Help  |  Hilfe zu YaBB SE  |  Datenbank-Backup « previous - next »
 


Powered by MySQL Powered by PHP YaBB SE Community | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.
SMF 2.1.4 © 2023, Simple Machines
Valid XHTML 1.0! Valid CSS

Page created in 0.035 seconds with 21 queries.