Andwil.de

ls -a /home/andwil

BlogSchlagwörter

Artikel zum Thema mysql

Gezeigt werden nur Blog-Artikel, die mit dem Schlagwort mysql versehen sind. Wenn du alle Blog-Artikel lesen möchtest, wechsle direkt in die Sektion Blog.

Was man soll und was man kann

Verfasst am 5. November 2010, früh morgens.

Gestern war urplötzlich eine meiner MySQL-Datenbanken „verschwunden“. Höchst ärgerlich, deshalb wendete ich mich gleich an den Support meines Hosters.

Dieser erkannte, dass das Problem mit dem Namen der Datenbank zusammenhing und meinte:

Sie hätten gar keine Datenbank mit diesem Namen erstellen können sollen. Ich werde den Inhalt der genannten Datenbank unter einem anderen Datenbank-Namen für Sie verfügbar machen […]

Der Grund für das Problem war schnell gefunden: Durch einen Bug wurden falsche Datenbanknamen erzeugt. Dieser Fehler wurde behoben und dabei meine Datenbank versehentlich ins Nirwana befördert.

Ärgerlich, aber der Support reagierte prompt auf meine Anfrage und löste das Problem schnell und unkompliziert.

Schlagwörter: , ,

Außerdem: kommentieren | weitersagen

MySQL-Backups beim Webhoster

Verfasst am 26. Februar 2010, früh abends.

Kürzlich zeigte ich, wie man bequem an tägliche MySQL-Backups kommt. Dafür verwendete ich einen Cronjob, der auf dem heimischen System lief. Doch nicht jeder Webhoster erlaubt es Kunden (oder auch Hackern) von „zuhause aus“ auf seinen Datenbank-Server zuzugreifen – so auch meiner seit einigen Tagen.

Dafür bieten viele Hoster jedoch ihren Kunden ebenfalls Cronjobs auf ihren Servern an. In meinem Fall ist ein Cronjob, der alle 24 Stunden ausgeführt wird und den Prozessor maximal eine eine Minute lang foltert, sogar kostenlos und Bash-Skripte sind neben PHP auch erlaubt.

1.) Datenbank-Backup auf dem Server erstellen

Unseren alten Bash-Zweizeiler kann man mit minimalen Änderungen per FTP hochladen. So könnte er aussehen:

#!/bin/bash
mysqldump -hdatenbank.meinhoster.example -ubenutzername-pgeheimespasswort -C --all-databases > MeineDatenbank.sql

Wichtiger Hinweis: Achte unbedingt darauf, dieses Skript an eine Stelle hochzuladen, an die niemand ohne Passwort per http kommen kann! Damit meine ich: Wenn jemand einfach über http://www.meineseite.de/mysqlsicherung.sh o.ä. an das Skript kommt (in dem deine Datenbank-Zugangsdaten im Klartext stehen) ist Holland in Not!

Die Bash-Datei muss man jetzt noch im Administrations-Backend bei seinem Hoster als Cronjob einrichten. Daraufhin wird bspw. alle 24 Stunden eine Datei MeineDatenbank.sql erzeugt (die alte Datei wird jeweils überschrieben).

2.) Das Backup auf den heimischen PC übertragen

Jetzt müssen wir das Backup nur noch nachhause holen. Linux-Nutzer erledigen das wieder ganz bequem mit einem Skript, das auf dem heimischen Rechner z.B. unter /etc/cron.daily/ abgespeichert ist. Dort wird es täglich automatisch ausgeführt und lädt z.B. per wget den tagesaktuellen Datenbank-Dump herunter. Hier ein primitives Beispiel:

#!/bin/bash

cd /home/benutzername/Backups/Datenbank
wget ftp://benutzername:passwort@ftp.meinhoster.de/MeineDatenbank.sql
mv MeineDatenbank.sql `date +"%Y-%m-%d"`.sql

Nicht elegant, aber zur Veranschaulichung genügt es. Der Dump wird im Ordner Backups/Datenbank abgelegt und nach Datum umbenannt. Heute würde zum Beispiel die Datei Backups/Datenbank/2010-02-26.sql angelegt.

Abschließende Betrachtungen

Beachte, dass die Code-Beispiele bewusst simpel gehalten sind und in Sachen Sicherheit eine mittelschwere Katastrophe auslösen können. Ich möchte nur die Möglichkeit dieser Vorgehensweise erläutern und Raum für deine eigene Ideen und Optimierungen lassen (Rückmeldungen willkommen!). Denkbar wäre z.B. die Möglichkeit, den Webmaster per E-Mail über fehlgeschlagene Backups zu informieren.

Ein weiterer Punkt, an den man ansetzen kann: Die gezeigte Backup-Lösung ist für die Katz, wenn dein Rechner nicht wenigstens alle paar Tage läuft, um sich das neue Backup herunterzuladen.

Es sei außerdem daran gedacht, dass ein Hacker, der sich Zugriff auf deinen FTP-Server verschafft hat, jetzt auch an deine Datenbank-Zugangsdaten kommen kann. Das Sicherheitsprinzip, für FTP und Datenbank verschiedene Passwörter zu verwenden, ist damit ausgehebelt.

Wohl also denen, die sich lieber einen Server mieten und damit volle Kontrolle und nahezu unbegrenzte Möglichkeiten für ihre Backup-Konzepte haben (doch mit großer Macht kommt auch große Verantwortung; außerdem passt gemieteter Webspace deutlich besser ins Budget eines Studenten ;-)).

Schlagwörter: , , ,

Außerdem: kommentieren | weitersagen

Backups leicht gemacht

Verfasst am 4. Februar 2010, spät abends.

Kurz notiert: Tägliche lokale Backups einer externen MySQL-Datenbank lassen sich ratzfatz mit mysqldump erledigen.

Da die Software hinter meiner Internetseite massiv auf die Datenbank setzt (selbst Templates und CSS-Dateien werden allein in der Datenbank verwaltet), habe ich auf meinem PC sogleich folgendes kleines Skript in /etc/cron.daily/ abgelegt:

#!/bin/bash

mysqldump -hdatenbankbei.meinemhoster.de -uBenutzername -pPasswort --all-databases > /home/andre/andwil.de/dbdumps/`date +"%Y-%m-%d"`.sql

So wird nun jeden Tag ein genaues Abbild („Dump“) der MySQL-Datenbanken auf meiner Festplatte abgelegt – heute also unter dem Namen 2010-02-04.sql. Was die Parameter im Detail bedeuten, kann man in den Manpages (man mysqldump) oder auf oben genannter Internetseite nachlesen.

Kein Tippfehler: hinter -h (Host), -u (Username) und -p (Password) folgt kein Leerzeichen!

Wenn man sich die Datenbank vermurkst hat, kann man einen MySQL-Dump auf verschiedene Weise in die Datenbank einspielen: Mausschubser verwenden z.B. phpMyAdmin, Freunde der Konsole kommen mit mysql [Login-Parameter] < meindump.sql zum Ziel.

Dank für den Tipp geht hierbei an Daniel!

Wie man seine Datenbanken sichert, wissen wir jetzt also alle. ;-)

Wie man aber seine lokalen Festplattendaten schnell und bequem sichern kann, habe ich im längeren Artikel „Datensicherung im Alltag“ (abgelegt in der Linux-Schublade) beschrieben. Backup-Muffel sollten vielleicht mal einen Blick riskieren.

Nachtrag: Wenn dein Webhoster nicht zulässt, dass du von zuhause aus mit mysqldump auf seinen Datenbank-Server zugreift, ist dieser Artikel für dich interessant.

Das ist zum Beispiel dann der Fall, wenn du die Fehlermeldung

mysqldump: Got error: 2003: Can’t connect to MySQL server on ‘datenbank.meinhoster.de’ (110) when trying to connect

erhälst.

Schlagwörter: , ,

Außerdem: kommentieren | weitersagen

Kontakt, Impressum, Datenschutz