MySQL Backup auf FTP machen

M

MF-Scripts

Mitglied
Ich möchte ein Shellscript machen, dass mir jeden Tag meine MySQL Db als *.sql Datei speichert und auf einen FTP Server wo anders sichert.
Eine Sicherung kann ich ja wiefolgt machen:
mysqldump -u USER -p PASSWORT DB > db.sql
Aber wie füge ich das in die Shell Datei ein, dass jede DB gesichert wird und wie kann ich das über FTP auf einen anderen Server übertragen?
 
Thx. Aber auf dem anderen Server kann ich keine Shellscripts aufrufen. Also muss ich von meinem Server auf den anderen übertragen, also geht das von dir schonmal nicht ;)
Forschleifen wären kein Problem, aber wie lese ich die ganzen DB namen aus?
 
Wieso soll das nicht gehen?
Du baust dir .netrc in z.B. /home/ftpbackup wo du auch das Skript hinlegst.
Der Cron ruft das Script in dem Verzeichnis auch mit /home/ftpbackup/deinscript.sh auf und das Script schiebt den Kram auf den anderen Server.
Der andere Server tut nichts als die Daten zu empfangen...

Forschleifen wären kein Problem, aber wie lese ich die ganzen DB namen aus?
Werden die dynamisch angelegt? wenn die fest sind musst du Sie ja nur einmal eintragen, wenn da immer neue dazukommen musst du dir halt noch ein "Skript" bauen (bzw. in das andere Skript einbauen) das "show databases" ausfuehrt.

Einfach den Befehl in ein File schreiben:
-vi bla
- show databases;
- wq

mysql -u <du> -p <deinpass> < bla;

zeigt alle Datenbanken an , muss man nur noch weiterverarbeiten.
Das geht bestimmt auch eleganter aber ich bin nicht son mysql'er...
 
Oki, thx :)
Daraus krieg ich bestimmt was zusammen gebastelt.
 
Ich hab da schon eine fertige Lösung (allerdings mit PHP und SH)

Datenbanken dumpen (make_backup.php)
Code:
#!/usr/bin/php

<?

/* needed variables */
$backup_from = "localhost"; // hier deinen DB-Server eintragen
$db_pass = "dein_db_root_passwort"; // das Root-Passwort für MySQL
$db_user = "root"; // damit wir an alle DBs kommen, nutzen wir root

/* Daten vom DB-Server lesen */

/* Verbindung aufbauen */
$connect = mysql_connect($backup_from, $db_user, $db_pass) or die("Couldn't connect to $backup_from!\n");

/* Welche DBs sind vorhanden? */
$sql = "SHOW DATABASES";
$data = mysql_query($sql, $connect);
while($db = mysql_fetch_row($data)) {
        print "Reading $db[0]...\n";
        /* fuer jede DB einen Dump machen */
        system("/usr/bin/mysqldump -h $backup_from -u $db_user -p$db_pass -l -c -v --quote-names $db[0] > databases/$db[0].sql");
}

/* Verbindung schliessen */
echo "Closing connection to $backup_from.\n";
mysql_close($connect);

?>

Auf FTP-Server verschieben (make_backup.sh)
Code:
#!/bin/bash

# PHP-Skript ausführen und damit die Datenbanken dumpen
/usr/bin/php make_backup.php

# Verzeichnis mit den Dumps komprimieren und auf FTP-Server laden
tar -cvpz databases | curl -u ftpuser:ftppasswort ftp://mein.backup.server/databases.tgz -T -
Liesse sich sicherlich auch alles in eine Shell-Skript packen, aber ich mag Shell-Skripte nunmal nicht. ;)
 
hm ich nehme dafür mysqldumper und die sicherung mache ich dann per crontab mysqldumper erstelt auch nen passendes script dafür wenn man möchte
 
Hallo
Naja, php ist zwar eine Möglichkeit, aber nicht gerade das beste Mittel für die Shell.
Zu der ftp-Geschichte hatten wir schonmal einen Thread

Gruß Wolfgang
 
Vielleicht ist PHP nicht das ideale Mittel für die Shell, aber für MySQL-Handling schon. ;)
 
Jo,

der Artikel und vor allem die weiterführenden Links erklären exzellent warum PHP IHMO eine der meistüberschätzten script-Sprachen ist.

Der mediale Hype um PHP ist völlig unverständlich wenn man sich PHP mal etwas genauer anschaut.

Aber es ist halt neuer als Perl, also muss es nach Denkensart vieler Leute "besser" sein.
 
PHP ist für kleinere Websites geil und leicht zu erlernen. Aber wenn das dann in große Sachen und Serverdinge geht, ist Perl einfach viel besser. das ist auch der Grund, wieso ich bald mit PHP aufhöre und mit Perl weitermache ;)
 
Ja schon, aber wo ist der Vorteil von Perl beim MySQL-Handling?
 
Im einfachen Handling via DBD Modulen.
Das ist kleiner als die gesamte PHP_Engine zu laden und voll funktionabel - auch und gerade unter der Shell.
Es gibt nix was PHP kann, was Perl nicht auch kann.

Mit PHP in der Shell zu arbeiten, ist wie mit einem 50 Tonner zum Bäcker fahren.

Gruß Wolfgang
 
Ich würde mal sagen, dass es da ganz darauf ankommt, wie man PHP kompiliert hat. Ich binde bei PHP prinzipiell nur das ein, was ich auch wirklich brauche. Daher glaube ich kaum, dass PHP da soviel mehr Speicher braucht als Perl. Und auch Perl ist ja schliesslich nicht unbedingt für seine Performance bekannt geworden.
However, ich persönlich finde das MySQL-Handling in PHP wesentlich einfacher als mit DBI in Perl. Wird ja niemand gezwungen mein Skript zu nutzen. Es war halt lediglich ein Vorschlag.
 
Ich würde mal sagen, dass es da ganz darauf ankommt, wie man PHP kompiliert hat. Ich binde bei PHP prinzipiell nur das ein, was ich auch wirklich brauche. Daher glaube ich kaum, dass PHP da soviel mehr Speicher braucht als Perl. Und auch Perl ist ja schliesslich nicht unbedingt für seine Performance bekannt geworden.
However, ich persönlich finde das MySQL-Handling in PHP wesentlich einfacher als mit DBI in Perl. Wird ja niemand gezwungen mein Skript zu nutzen. Es war halt lediglich ein Vorschlag.

Ja, und im Falle von DB-Handling ist das schon eine Menge.
Du hast sicher den Link von Xanti gelesen.
Aber abgesehen davon, wollte ich nicht gegen dein Script argumentieren, sondern ganz abstrakt gegen die Verwendung von PHP in der Shell.
Das ist für viele eine (NOT)lösung, ändert aber nix an der Tatsache, das PHP aber sowas von ungeeignet für die Shell ist...
PHP ist leichter zu lernen, aber das hat seinen Preis.
Wer Perl kann, brauch kein PHP mehr.

Gruß Wolfgang
Im Übrigen ist Perl essentiell für die meisten *nixsysteme, PHP dagegen wohl eher nicht (mein System ist fit gesund und munter ganz ohne PHP) ;)
 
Zuletzt bearbeitet:

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

Image erstellen per dd und direkt auf FTP Backup Server speichern

Hilfe bei backup-script

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

rsnapshot und ein Rechteproblem?

Zurück
Oben