Clemens: MySQL-Backup über cronjob

Hi!

PHP-MyAdmin hat eine nette Funktion um einen dump (der die das dump?) der Datenbank zu erstellen. Dieser dump ist afaik auch gut geeignet, um als Backup zu fungieren (ich hoffe das stimmt, habe es bisher noch nicht gebraucht ;-).

Wie kann ich es jetzt anstellen, dass per cronjob z.B. täglich ein Backup/dump auf einem anderen Server erstellt wird oder noch besser der dump per Mail verschickt wird?

Herausgefunden habe ich bisher, dass man mit
/mysqladmin/tbl_dump.php?lang=de&server=1&db=datenbank_name&what=data

den Dump in HTML verpackt angezeigt bekommt.

mit dem weiteren Parameter &gzip=gzip wird sogar eine komprimierte Datei zurückgeliefert.

Jetzt suche ich nur noch eine Möglichkeit, das periodisch per cronjob abzuspeichern, bzw. zu verschicken.

Im Hinterkopf habe ich noch, dass so etwas (abspeichern) mit Lynx gehen soll, aber wohl nur für HTML, wie geht das, wenn statt einer HTML-Datei ein Datei zum Download angeboten wird. Und was, wenn ich die auch noch versenden will?

Kann jemand helfen?

Clemens

P.S.: Was ist als Backup eigentlich besser geeignet, manche habe ja auch Datei-Zugriff auf den Datenbank-Server: Direkt die entsprechenden Dateien zu speichern oder das über einen dunp zu machen? Kann ich die Dateien z.B. einfach auf einen anderen Datenbank-Server kopieren oder muss man da was beachten (Time-stamp der Dateien, Daten erst beim Server "anmelden") oder reicht es datadir anzupassen?

  1. Sup!

    man cron
    man sendmail
    man uuencode / man mimencode

    Oder halt gucken, was PHP dafür so bereit hält...

    Gruesse,

    Bio

  2. Hi auch,

    Herausgefunden habe ich bisher, dass man mit
    /mysqladmin/tbl_dump.php?lang=de&server=1&db=datenbank_name&what=data

    gehe nicht über HTTP, sondern suche die entsprechende Kommandozeilen-
    Schnittstelle des Dump-Tools in dessen Dokumentation.

    mit dem weiteren Parameter &gzip=gzip wird sogar eine komprimierte
    Datei zurückgeliefert.

    Das kannst Du auf der Kommandozeile auch - indem Du den Datenstrom
    in ein "gzip -9" hinein pipest.

    Im Hinterkopf habe ich noch, dass so etwas (abspeichern) mit Lynx
    gehen soll, aber wohl nur für HTML, wie geht das, wenn statt einer
    HTML-Datei ein Datei zum Download angeboten wird.

    Nacheinander: Erst abspeichern, dann zippen - vorausgesetzt, Du hast
    den temporären Plattenplatz. Oder über eine Pipe (siehe oben), falls
    Du beim Speichern wahlweise nach stdout schreiben kannst.

    Und was, wenn ich die auch noch versenden will?

    Das ist davon völlig unabhängig - darum kannst Du Dich kümmern, wenn
    Du Deine Datei auf der Platte hast.

    P.S.: Was ist als Backup eigentlich besser geeignet, manche habe ja
    auch Datei-Zugriff auf den Datenbank-Server: Direkt die
    entsprechenden Dateien zu speichern oder das über einen dunp zu
    machen?
    Kann ich die Dateien z.B. einfach auf einen anderen Datenbank-Server
    kopieren oder muss man da was beachten (Time-stamp der Dateien,
    Daten erst beim Server "anmelden") oder reicht es datadir
    anzupassen?

    Du mußt die Daten schon importieren. Irgendwoher muß der Server ja
    wissen, daß Du eine neue Datenbank angelegt hast - der sucht nicht
    ständig auf der Platte nach neuen Datenbanken, sondern wird sinn-
    vollerweise ein Verzeichnis derselben führen.

    Auch beim Exportieren fährst Du besser, wenn Du über die Schnittstel-
    len gehst, die das RDBMS anbietet. Dann kann diese sich beispielsweise
    darum kümmern, was passiert, wenn mitten in Deinem Sicherungslauf
    jemand in eine Deiner Tabellen schreibt ... wenn Du direkt die Dateien
    verwenden willst, solltest Du auf jeden Fall die Datenbank vorher
    herunterfahren. Auf der anderen Seite kannst Du natürlich versuchen,
    eine leere Datenbank anlegen und dann die Dateien, welche die Tabellen
    repräsentieren, dort hinein kopieren - während das RDBMS auch hier
    nicht aktiv ist. Vielleicht begreift mySQL das ja beim nächsten Start.

    Viele Grüße
          Michael