# SQL Dump mit Cron Job



## mail2mrx (19. Mai 2003)

Hallo zusammen,

ich soll im Rahmen meines Praktikums einen SQL Dump jede Nacht erstellen. Dazu bietet sich glaube ich ein Cron Job an, oder?

Leider habe ich sowas noch nie gemacht und ich suche jetzt nach Ansätzen...
Hat vieleicht jmd. eine Idee oder sowas schonmal gemacht?

Thx,
Alex


----------



## ludz (19. Mai 2003)

Als Cronjob-Dienst (falls du keinen eigenen Server hast) bietet sich meiner Meinung nach http://www.webcron.org an.
Wie man aber so ein Datenbank-Backup macht, das weiß ich auch nicht... würde mich aber mal interessieren!


----------



## JanDelay (19. Mai 2003)

înteressieren würds mich auch

hoffentlich is jemand hier der das weiss ^^

ansonsten muss ich selber ma rtfm'em

mfg

JanDelay


----------



## Arne Buchwald (19. Mai 2003)

Habt ihr Shellzugriff aus dem Rechner ?


----------



## Pollux (19. Mai 2003)

Mache das auch jede Nacht bei unserem Server:


```
$file= "backup/". $db . "-" . date("d.m.y-H.i") .".sql"; 
$dump=exec("mysqldump --user=$user --password=$pass --add-drop-table --all-databases > $file");
```

Danach kannst du sie per FTP auf einem anderen Server auslagern.


----------



## JanDelay (19. Mai 2003)

hi pollux

wie kann ich das jetz zeitgesteuert machen ^^

mfg

JanDelay


----------



## Pollux (19. Mai 2003)

Per Cronjob 

















Ok, dann bin ich mal nicht so:

30 23 * * * lynx -dump http://www.blabla.de/backup.php

Dann ruft er jeden Tag um 23.30 das Backup-Script "backup.php" auf.
Lynx sollte als textbasierender Browser natürlich installiert sein.


----------



## Dominik Haubrich (19. Mai 2003)

Sauber, bastelt mal ein ordentliches Tutorial draus  

PS: ich bevorzuge mysqldump --opt


----------



## Pollux (19. Mai 2003)

> _Original geschrieben von Lagaf _
> *Sauber, bastelt mal ein ordentliches Tutorial draus
> 
> PS: ich bevorzuge mysqldump --opt *



Bin ja selbst PHP-Newbie, insofern würde ich mir kein Tut zutrauen.


----------



## Tim C. (19. Mai 2003)

Also ich verstehe weder was von MySQL Datensicherung noch von Cronjobs, aber die zwei Sachen zu kombinieren finde ich nun wirklich nicht sehr schwer.
1) Man baut die .php Datei, in welcher alle Anweisungen (Erstellung der Sicherrungsdatei, sowie verschieben via FTP) stehen. Nun besteht ja das Problem, dass man die Datei immer aufrufen müsste, damit sie speichert. Also holt man sich
2) Bei webcron einen Account und richtet dort über die äusserst komfortabel zu bedienende Benutzerobefläche seinen Cronjob ein.

Feddisch


----------



## melmager (19. Mai 2003)

@Lagaf 

Da  - manche Wünsche sind schon erfüllt 

http://www.tutorials.de/tutorials23634.html

@Leuchte
fehlt nur noch ein Textbowser auf dem Server, denn PHP Dateien können nicht direkt per Cronjob gestartet werden


----------



## ludz (19. Mai 2003)

@Pollux: Funktioniert deine Variante (mit exec()) auch auf nem Otto-Normal-Verbraucher-Webspace oder nur auf nem eigenen Server mit gewissen Rechten (Shell etc.)?!
Irgendwie will der Code-Schnippsel von dir bei mir nicht funktionieren, d.h. es wird kein DB-Backup gemacht...


----------



## Sir Robin (19. Mai 2003)

> _Original geschrieben von melmager _
> *
> @Leuchte
> fehlt nur noch ein Textbowser auf dem Server, denn PHP Dateien können nicht direkt per Cronjob gestartet werden *



...doch...per PHP-CLI


----------



## melmager (19. Mai 2003)

@ludz Jo man braucht bestimmte Rechte ;
wie du schon vermutet hast auf 08/15 Webspaces geht dat Ding nicht


----------



## ludz (19. Mai 2003)

gibts denn ne andere Möglichkeit, wie man Dumps auf "normalem" Webspace realisieren kann?


----------



## Pollux (20. Mai 2003)

Es gibt natürlich noch Varianten, die nicht so elegant sind, z.B. es durch Besucher machen zu lassen. Hierbei sollte dann ein Script die Serverzeit abfragen und nach einer bestimmten Uhrzeit das Script aufrufen (kannst ja dann auch ein Prüfbit in ner DB hinterlassen).

Bin aber selbst nicht so der Held, das wäre jetzt nur eine Möglichkeit, wie es noch gehen würde.


----------



## ludz (20. Mai 2003)

nein ich glaube du hast das falsch verstanden, Pollux, ich meine, ob es eine andere Art gibt, die Datenbank an sich zu sichern ohne einen exec()-Befehl ausführen zu müssen?!
ich meine, theoretisch könnte ich ja alle DBs und Tabellen auslesen lassen (SELECT * FROM...) und mir dann mein Dump quasi manuell speichern, aber gibts da nicht einen bequemeren Befehl für?
Wie macht das denn eigentlich phpMyAdmin?
Für ne Antwort wär ich dankbar...

PS: Webcron kann aber doch jede beliebige Seite aufrufen oder? Also man könnte den CRONJOB auch auf die PHP-Datei einstellen, die eine DB sichert?!


----------



## Pollux (20. Mai 2003)

> _Original geschrieben von ludz _
> *
> PS: Webcron kann aber doch jede beliebige Seite aufrufen oder? Also man könnte den CRONJOB auch auf die PHP-Datei einstellen, die eine DB sichert?! *



Eben das steht in der PHP-Datei drin:


```
$file= "backup/". $db . "-" . date("d.m.y-H.i") .".sql"; 
$dump=exec("mysqldump --user=$user --password=$pass --add-drop-table --all-databases > $file");
```


----------



## ludz (20. Mai 2003)

> ich meine, ob es eine andere Art gibt, die Datenbank an sich zu sichern ohne einen exec()-Befehl ausführen zu müssen?!


  

Denn genau das mit dem Exec-Befehl geht doch laut Melmager nicht auf nem 0815-Webspace! Deshalb bräuchte ich ja eine andere Möglichkeit... verstanden?!


----------



## Pollux (20. Mai 2003)

Ich selbst scripte nur für den eigenen Server. Ich muss hier leider passen. Hatte dich falsch verstanden, dachte du meintest spezielle Rechte für den Cronjob.


----------



## GoLLuM (3. September 2003)

hallo 
ich bin durch google mal wieder hier gelandet und habs ausprobiert. bei mir führt er die befehle soweit aus, also wenn ich jetzt

```
$dump=exec("mysqldump --user=$user --password=$pass --add-drop-table --all-databases > $file");
```
aufrufe, dann kann ers ausführen. kommt bis jetzt keine warning oder ähnliches bei mir. aber das einzige was er in die datei jetzt reinschreibt is das hier:

```
-- MySQL dump 8.21
--
-- Host: localhost    Database:
---------------------------------------------------------
-- Server version        3.23.49a
```
vielleicht sollte ich noch dazusagen, das es nen "normaler" webspace is.... 

meine frage jetzt: meint ihr, es liegt am "normalen" webspace das er nix reinschreibt, oder was? müsste ich nich eigentlich da noch irgendwo angeben, um welche datenbank es sich handelt, die er dumpen soll?

vielen dank

*[edit]* 
ok, ich habs jetzt hinbekommen, das er die datenbank dumpt.... da muss man dann einfach noch den datenbank-namen hinten dran schreiben. aber jetzt brauch ich nich alle tabelle, sondern nur bestimmte. wie isn der aufruf dafür?
in der help-datei von mysqldump steht das so drin:

```
mysqldump [OPTIONS] database [tables]
```
aber wenn ich jezt mache:

```
mysqldump --user=$user --password=$password --add-drop-table meine_datenbank [tabelle1, tabelle2]
```
dann passiert gar nix.
weiß jemand wie der genaue aufruf für die einzelnen tabellen is, bzw. was an meinem aufruf falsch sein könnte?

danke schon mal


----------

