Web CrossDBDump

Dieses Thema im Forum "Selbstgeschriebene Plugins | Mods | Programme" wurde erstellt von yawx197, 13. Dezember 2013.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. yawx197
    Offline

    yawx197

    Registriert seit:
    13. Dezember 2013
    Beiträge:
    6
    Hallo Server-Admins!

    Ich möchte dieses Forum nutzen und ein einfaches MySQL-Backup-Script vorstellen, dass ich eigens für meinen Server programmiert habe. Das PHP-Script fertigt vollständige Backups von einer oder mehreren MySQL-Datenbanken an. Am besten, ihr lasst es als Cronjob laufen. Um Speicherplatz zu sparen und nicht die Übersicht zu verlieren, können alte Backups nach einer festgelegten Anzahl an Tagen automatisch wieder entfernt werden. CrossDBDump muss sich NICHT auf dem selben Server befinden, auf dem sich auch die MySQL-Datenbanken befinden. Solange euer MySQL-Server externe Zugriffe zulässt, kann das Backup-Script auf einem anderem Server gehostet werden. Damit seid ihr z.B. bei einem Hardware-Defekt eures Servers zusätzlich abgesichert.

    Wichtig:
    Ihr solltet vor Inbetriebnahme sicherstellen, dass das Verzeichnis, in dem sich CrossDBDump befindet, durch Zugriffe von außen (z.B. mit einer .htaccess) geschützt ist!

    Wenn ihr keine Cronjobs anlegen könnt, weil ihr entweder keinen SSH-Zugriff auf euren Server habt oder diese Option nicht in eurem Hosting-Paket enthalten ist, könnt ihr euch bei Cronjob.de kostenlose Cronjobs anlegen.

    Das Script inkl. einer englischen Anleitung gibt es bei GitHub: https://github.com/yawx/CrossDBDump
    Bei Fragen oder Problemen dürft ihr euch natürlich jederzeit gerne an mich wenden!

    Viele Grüße,
    yawx
     
    #1
  2. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    ### freigeschaltet ###
     
    #2
  3. PaDo90
    Offline

    PaDo90

    Registriert seit:
    5. September 2012
    Beiträge:
    44
    Minecraft:
    PaDo90
    Hört sich ganz nett an.
    Aber wie sieht es mit der Config aus:

    PHP:
    1. $config = array(    array(
    2.         'host' => 'server1.com',
    3.         'user' => 'username',
    4.         'password' => 'password',
    5.         'database' => 'database',
    6.         'name' => 'backup1'
    7.     ),
    8.     array(
    9.         'host' => 'server2.com',
    10.         'user' => 'username',
    11.         'password' => 'password',
    12.         'database' => 'database',
    13.         'name' => 'backup2'
    14.     ) );
    das user und password ist ja lediglich für die Verbinung mit dem Server an sich.
    Meine Datenbanken jedoch haben noch einen zusätzlichen User und Passwort.
    Wie kann ich das nun in der Config angeben?
     
    #3
  4. Chrisliebaer
    Online

    Chrisliebaer

    Öhm ja. Zwar ganz "nett", aber das selbe erreicht man auch mit einem Einzeler in bash:

    Code (Text):
    1. find /mysqldumps/ -type f -mtime +5 -delete && mysqldump -u root -p foobar > sicherung.sql
    Oder habe ich etwas übersehen?
     
    #4
  5. yawx197
    Offline

    yawx197

    Registriert seit:
    13. Dezember 2013
    Beiträge:
    6
    Wenn du nun mehrere Verbindungen mit unterschiedlichen Benutzern aufbauen möchtest, fügst du - wie im Codebeispiel zu sehen - einfach noch einen weitenen Array hinzu. Verbindungen zu gleichen Servern aber mit unterschiedlichen Zugangsdaten / Datenbanken sind möglich.

    CrossDBDump ist quasi eine PHP-Implementierung deiner Bash-Befehle und ist auch auf Webhosting-Paketen ohne SSH-Zugriff lauffähig. Verfügt man über mehrere Server mit SSH-Zugriff, würde ich deine Methode vorziehen.

    Viele Grüße,
    yawx
     
    #5
  6. ThetaHD
    Offline

    ThetaHD

    Registriert seit:
    23. November 2013
    Beiträge:
    48
    Hallo yawx197,
    ich sehe bei deinem Script zwei mögliche Probleme.
    Zum einen nutzt du exec(...) was auf einigen Plattformen aus Sicherheitsgründen deaktiviert ist. Damit wird dein Script komplett unbrauchbar.
    Hier solltest du entweder zuerst prüfen ob diese Funktion genutzt werden kann oder ohne diese Funktion arbeiten.
    Zum anderen setzt du voraus, dass mysqldump auf dem System existiert. Einige Provider betreiben die Datenbanken auf einem extra Server und nutzen SSH-Tunnel um Anfragen MySQL zu diesem weiterzuleiten. Hier würde der Aufruf von mysqldump ins leere gehen.
    Ebenfalls wären Fehlermeldungen und ein OOP-Ansatz sinnvoll.

    liebe grüße
    Theta
     
    #6
  7. yawx197
    Offline

    yawx197

    Registriert seit:
    13. Dezember 2013
    Beiträge:
    6
    Hi, Theta!
    Danke für die Meinung. Ich muss dir im großen und ganzen Recht geben. Die speziellen Anforderungen schränken die Einsatzmöglichkeiten natürlich erheblich ein. Da ich das Script zunächst nur für mich, angepasst auf meinen Webspace / Server, programmiert habe, blieben solche Überlegungen von Anfang an außen vor. Tiefgehende Anpassungen lohnen sich nicht, nach dem was ich hier gelesen habe. Ein OOP-Ansatz in diesem Fall wäre meiner Meinung aber wie mit Kanonen auf Spatzen schießen.

    Ich werde die Repository dicht machen, da es einfachere bzw. gebräuchlichere Wege gibt und MySQL-Backups anzufertigen (siehe Chrisliebaers Post). Man lernt doch nie aus! :D

    Viele Grüße,
    yawx
     
    #7
  8. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Auf Wunsch des Autors geschlossen, das Projekt wird nicht fortgesetzt.
     
    #8
Status des Themas:
Es sind keine weiteren Antworten möglich.