automatisches MySQL Datenbank Backup PHP Script (ohne timeout)

25.04.2004, 13:18
Member
Avatar Tille

Beiträge: 451
#1 Da hier anscheinend einige PHP Experten sind, ich suche seit einiger Zeit schon ein vernünftiges Script das ich in einem passwortgeschützten Ordner aufrufen um meine MySQL Datenbank zu sichern.

da die Datenbank ziemlich gross (54 MB) ist bekomme ich bei einem Backup Dump Versuch mit PHPMYADMIN immer ein Timeout oder ein unvollständiges Backup.

kennt jemand ein gutes Backup Script um MySQL Datenbanken zu sichern?

Tille
__________
Anonymität im Internet ist, wenn Du keinen kennst, aber alle Dich.
Seitenanfang Seitenende
25.04.2004, 13:28
Administrator
Avatar Lukas

Beiträge: 1743
#2 Hallo Tille,

für Backups verwende ich persönlich meistens http://www.mysqlfront.de - was wirklich ein schönes Tool ist um Mysql Datenbank zu administrieren ... kleines Manko, da der Dump nicht einfach auf dem Server in eine Datei geschrieben wird dauert das ganze oft ziemlich lange.

ansonsten gibt es ein gutes und schnelles Backup-PHP-Script von Daniel Schlichtholz welches das Timeout durch einen Selbstaufruf umgeht; funktioniert hervorragend:

Download hier: http://www.mysqldumper.de/board/
__________
Gruß Lukas :yo
Seitenanfang Seitenende
25.04.2004, 19:30
Member

Themenstarter
Avatar Tille

Beiträge: 451
#3 Danke Lukas das Script ist genau das was ich suchte

Tille
__________
Anonymität im Internet ist, wenn Du keinen kennst, aber alle Dich.
Seitenanfang Seitenende
07.05.2004, 16:34
...neu hier

Beiträge: 3
#4 Hi,

mittlerweile habe ich ein eigenes kleines Board zu meinem Script eröffnet und einige User haben es bereits um nützliche Zusatzfeatures erweitert. Einen kleinen Bugfix gab es auch.
Zu finden hier: http://www.mysqldumper.de/board/

Ich hoffe, dass das hier OK ist.
Ich dachte, das werfe ich hier mal in die Runde.

Liebe Grüße,

DSB
__________
Backup großer Datenbanken
Dieser Beitrag wurde am 07.05.2004 um 22:36 Uhr von DSB editiert.
Seitenanfang Seitenende
12.05.2004, 11:51
Ehrenmitglied

Beiträge: 831
Seitenanfang Seitenende
20.05.2004, 23:56
Administrator
Avatar Lukas

Beiträge: 1743
#6 ansonsten halt den Standardweg für den Export/Import großer MySQL Datenbanken.

Einfach ein Verzeichnis anlegen, welches die Rechte 777 besitzt. Dort eine PHP-Datei folgenden Inhalts anlegen:

zum Backup der MySQL Datenbank:

Zitat

<?php
system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -h localhost DATENBANKNAME > ".dirname(__FILE__)."/dump.sql", $fp);
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
?>
zum Restore der MySQL Datenbank:

Zitat

<?php
system("/usr/bin/mysql -uUSERNAME -pPASSWORT -h localhost DATENBANKNAME < ".dirname(__FILE__)."/dump.sql", $fp);
if ($fp==0) echo "Daten importiert"; else echo "Es ist ein Fehler aufgetreten";
?>
oder aber falls der Server dies unterstützt kann man das ganze auch platzsparend komprimiert realisieren ;)
und das funktioniert ganz einfach so:

zum Backup der MySQL Datenbank (GZip komprimiert):

Zitat

<?php
system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -h localhost DATENBANKNAME | gzip > ".dirname(__FILE__)."/dump.gz", $fp);
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
?>
zum Restore der MySQL Datenbank (GZip komprimiert):

Zitat

<?php
system("/usr/bin/gunzip < ".dirname(__FILE__)."/dump.sql" | /usr/bin/mysql -uUSERNAME -pPASSWORT -h localhost DATENBANKNAME, $fp);
if ($fp==0) echo "Daten importiert"; else echo "Es ist ein Fehler aufgetreten";
?>
falls ihr keinen eigenen Cronjob Dienst habt um das Backup täglich auszuführen kann ich www.cronjob.de empfehlen... ;)
__________
Gruß Lukas :yo
Seitenanfang Seitenende
29.05.2004, 13:27
Administrator
Avatar Lukas

Beiträge: 1743
#7 oder aber ein anderes bequemes Backup Script von Protecus.de :
// beachte: bei PHP Safe_Mode = ON wird es vorraussichtlich nicht funktionieren

PHP Code


<?php 

// error_reporting(0);

// ### (c) by Protecus.de ########
// ### EINSTELLUNGEN #############
// ###############################

   
$user 'root'// Name
   
$pass ''// Passwort
   
$database 'test'// zu sichernde Datenbank
   
$path './backup/'// Backup Ordner
   
$number_of_files '5'// mehr als x Dateien löschen (Autodelete)

// ###############################
// Updates: http://board.protecus.de/t9581.htm

// checke Backupordnergrösse
function dirsize($dir){
    
$dirsize=0;
$handle=opendir ($dir);
while (
false !== ($file readdir ($handle))) {
    
$dirsize+=filesize($dir.$file);
}
closedir($handle); 
return 
$dirsize;
}

// Starte Output
echo '<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>MySQL Backup</title>
<style type=\'text/css\'>
<!--
    h1 { font-family: verdana, arial;}
    body,p,td,a { font-family: verdana, arial; font-size: 8pt;}
//-->
</style>
</head>
<body>

<h1>MySQL Backup</h1>
<b><u>Konfiguration:</u></b>
<br /><b>Sicherung Datenbank:</b> '
$database .'<br />
<b>Auto-Löschen aktiviert:</b> +'
.$number_of_files.' Dateien<br />
<b>GZip-Komprimierung:</b> aktiv<br />
<b>Backups gesamt:</b> '
.round(dirsize("$path")/(1024*1024),2).' MB<br /><br />
<p><b>Backup wird ausgeführt...</b><br /><br /><span style="color:darkblue; font-weight:bold" id="dspan">|</span></p>
    <script type="text/javascript"><!--
    function js_dots()
    {
        dspan.innerText = dspan.innerText + "|";
        jstimer = setTimeout("js_dots();", 200);
    }
    if (document.all)
    {
        js_dots();
    }
    //--></script>'
;


// Backupverzeichnis erstellen, falls noch nicht existient!
if (!is_dir($path)) mkdir($path0777);
$dh opendir($path);
while (
false !== ($filename readdir($dh)))
{
    if (
$filename != "." &amp;&amp$filename != ".."$files_unlink[] = $filename;
}

@
rsort($files_unlink);

    if (
sizeof($files_unlink) >= $number_of_files)
    {
        for(
$n=sizeof($files_unlink)-1$n>=$number_of_files$n--)
       { 
        
unlink($path.$files_unlink[$n]); 
       }
    }

// Backup erstellen

$datei date("d\.m\.Y\_H",time())."_Uhr_".date("i",time()); // Dateiname aus Datum und Uhrzeit bilden
$datei .= ".gz";
if (
file_exists($datei)) unlink($datei);

$path str_replace("."""$path);

system("/usr/bin/mysqldump -u$user -p$pass -h localhost $database | gzip > ".dirname(__FILE__)."$path/$datei"$fp); 
if (
$fp==0$meldung "Backup erfolgreich!"; else $meldung "Es ist ein Fehler aufgetreten!"


// und Meldung, dass fertig!
echo '
<script type="text/javascript"><!--
    if (document.all)
    {
        clearTimeout(jstimer);
    }
    //--></script>
<p>'
.$meldung.'</p>
<p><blink><b>Fertig!</b></blink></p>
</html>
</head>'
;

?>

bitte nicht vergessen dem entsprechenden Ordner die Rechte CHMOD 777 zu geben, damit die Backups gespeichert werden können!
__________
Gruß Lukas :yo
Seitenanfang Seitenende
07.10.2004, 10:09
...neu hier

Beiträge: 2
#8 Hallo!

Suche sowas auch schon lange.

Hab das protecus Script in eine index.php geschrieben!

Da ich auch nicht so der Guru bin, langt dies, da beim Aufruf eine weisse Seite kommt und dann mal nichts mehr passiert?

Sollte ich nach dem Starten des Scripts gleich den oben angegebenen Backupordner auf dem FTP sehen?

Muss ich warten bis irgendeine Meldung kommt, oder mache ich was falsch?

Soll ich eher eine andere Variante ausprobieren?

Danke im voraus!
Dieser Beitrag wurde am 07.10.2004 um 10:11 Uhr von Ralle79 editiert.
Seitenanfang Seitenende
10.10.2004, 16:54
Administrator
Avatar Lukas

Beiträge: 1743
#9 @Ralle79,

- Du musst natürlich einen Backup Ordner auf dem FTP anlegen: /backup/
und diesen Ordner die Rechte CHMOD 777 geben, damit in diesem Ordner geschrieben werden kann.

- sobald das Script erfolgreich durchgelaufen ist sollte es auch eine entsprechende Meldung geben -> habe das Script nochmal aktualisiert und error_reporting auskommentiert ... theoretisch solltest Du nun eine Fehlermeldung bekommen

@all
auch interessant, falls man eine Datenbank wieder importierem möchte:
http://www.calophia.de/magazin/mysql-datenbanken-importieren.htm
__________
Gruß Lukas :yo
Seitenanfang Seitenende
27.10.2004, 12:23
...neu hier

Beiträge: 1
#10 Hi!

Habe mir beide PHP Skripte zum Datenbank sichern runtergeladen und getestet! Er schreibt in beiden Fällen, dass er die Daten exportiert hat, aber Sicherungsdatei legt er nie eine an!

Kann es sein, dass da bei tripod.de etwas gesperrt ist? MyphpAdmin funktioniert komischerweise auch nicht!

Wie kann ich mir sonst noch meine Gästebuch-DB runtersichern?

Hat jemand eine Idee?

Liebe Grüsse!
Seitenanfang Seitenende
12.11.2004, 13:39
Administrator
Avatar Lukas

Beiträge: 1743
#11 tripod sperrt leider diverses... unter anderem auch garantiert den Befehl: system - also sehr wahrscheinlich, das das da nicht funktioniert!

ich würde es mal mit http://www.mysqlfront.de ausprobieren!
__________
Gruß Lukas :yo
Seitenanfang Seitenende
12.11.2004, 19:05
Member
Avatar Xeper

Beiträge: 5291
#12 Oder einfach mal http://www.phpmyadmin.net/
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
12.11.2004, 19:34
Administrator
Avatar Lukas

Beiträge: 1743
#13

Zitat

Xeper postete
Oder einfach mal http://www.phpmyadmin.net/
stimmt, könnte klappen!
... aber vorsicht, nach einigen wenigen MB ist bei phpmyadmin schluss... und bei tripod sowieso ;)
__________
Gruß Lukas :yo
Seitenanfang Seitenende
02.01.2005, 14:15
Member
Avatar Laserpointa

Beiträge: 2176
#14 habe noch eine nette englische Anleitung mit Telnet:

Zitat

Backing Up The Database via SSH/Telnet
In order to back up your database via SSH or Telnet you will require 2 things:

1) SSH or Telnet access to your site. You will need to check with your hosting company to see if this is available.

2) An SSH/Telnet Client, such as PuTTy.

Open your SSH/Telnet client and log into your website. The command line prompt you will see will vary by OS.
For most hosting companies, this will bring you into the FTP root folder.

Type in the following:

Code

mysqldump --opt -Q -u dbusername -p databasename > /path/to/backupname.sql
You will be prompted for the database password. Enter it and the database will backup.

If your hosting company has you on a remote MySQL server, such as mysql.yourhost.com, you will need to add the servername to the command line. The servername will be the same as in your config.php. The command line will be:

Code

mysqldump --opt -Q -h servername -u dbusername -p databasename > /path/to/backupname.sql
You can then, if you wish, download the backup to your home computer.
hier noch die PHPMYADMIN Anleitung: http://www.vbulletin.com/docs/html/maintenance_phpmyadmin_backup

und das Backup wieder einspielen:

Zitat

Restoring The Database via SSH/Telnet
In order to restore your database via SSH or Telnet you will require 2 things:

1) SSH or Telnet access to your site. You will need to check with your hosting company to see if this is available.

2) An SSH/Telnet Client, such as PuTTy.

Note:
If your database backup resides on your home computer, you will first have to upload it via FTP to your website
Open your SSH/Telnet client and log into your website. The command line prompt you will see will vary by OS.
For most hosting companies, this will bring you into the FTP root folder.

Type in the following:

Code

mysql -u dbusername -p databasename < /path/to/backupname.sql
You will be prompted for the database password. Enter it and the database will backup.

If your hosting company has you on a remote MySQL server, such as mysql.yourhost.com, you will need to add the servername to the command line. The servername will be the same as in your config.php. The command line will be:

Code

mysql -h servername -u dbusername -p databasename < /path/to/backupname.sql
Greetz Lp
Seitenanfang Seitenende
15.01.2005, 11:38
...neu hier

Beiträge: 3
#15 Die Entwicklung von MySQLDumper steht keinesfalls still und wird von Steffen Kamper immer weiter entwickelt. Alle praxistauglichen Vorschläge unserer Community im Support-Board wurden umgesetzt.
Mittlerweile hat das Programm einen beachtlichen Funktionsumfang (und ist immer noch ein kostenloses Open-Source-Projekt *g*):

- multilingual (deutsch/englisch)
- Backup und Wiederherstellung von MySQL-Datenbanken
- Automatisches Verschicken von Backups via Mail oder FTP
- Automatisches Löschen von veralteten Backups nach eigenen Regeln (Zeit oder Anzahl)
- Einrichtung als Cronjob mit Perl-Script
- Administration und Manipulation von Datenbanken ("Mini-SQL)
- Verwaltung der Backups (übersichtliche Zusammenfassung mehrerer Backups einer DB)
- Erstellung von Datenbankstruktur ohne Daten
- Multidump: sichern mehrerer Datenbanken nach Konfiguration
- Multipart: automatisches Splitten der Backupdatei bei Überschreiten einer konfigurierbaren Größe
- Sicherung und Wiederherstellung einzelner Tabellen
- Erstellung eines eigenen Verzeichnisschutz
- Detailinformationen über MySQL und MySQL-Datenbanken
- einfache Installation über mitgelieferte install.php-Datei
- einfache Bedienung, keine Programmierkenntnisse erforderlich

Alle User, die kein SSH haben oder bei denen exec()- und Systembefehle gesperrt sind, könnten mit unserem Script richtig glücklich werden. :-)
__________
Backup großer Datenbanken
Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren: