lokale MySQL Sicherung mit Logrotate

Logrotate kann falsch genutzt werden um eine lokale MySQL Sicherung zu erstellen.

“logrotate” ist ein sehr weit verbreitetes Linux Werkzeug welches mit den meisten Linux Distribuntionen vorkonfiguriert ausgeliefert wird.

Im Verzeichnis /var/log sind die Dateien nach dem folgenden Schema angeordnet.:

Das ist wofür “logrotate” geschrieben wurde. Die Logdatei wird von /var/log/auth.log umbenannt zu /var/log/auth.log.0 und am folgenden Tag komprimiert und umbenannt in /var/log/auth.log.1.gz. Wenn mehr als vier sicherungen der Logdatei existieren werden überzählige Sicherungen gelöscht. Genau was eine lokale Datenbank-Sicherung erreichen soll.

Normalerweise mache ich meine MySQL Sicherungen mit einem Cronjob, der mir dann relativ schnell die Festplatte mit Datenbanksicherungen füllt. Da es die Aufgabe von “logrotate” ist Logdateien umzubenennen, zu komprimieren und alte Logdateien zu löschen eignet es sich auch sehr gut für eine kleine lokale Datensicherung.

Mit ein wenig chreativem falsch gebrauch des Werkzeugs “logrotate” kann es verwendet werden um MySQL Sicherungen zu rotieren.

Hier die Kurzanleitung wie ich dies erreicht habe:

Zuerst erstelle ich das Verzeichnis /var/backups/mysql/ in dem die Datensicherung der MySQL Datenbank angelegt werden soll.

Um den “logrotate” Deamon dazu zu bringen die Datenbank zu sicher erstelle ich die Datei /etc/logrotate.d/0-mysql-backup mit dem folgenden Inhalt:

Diese “logrotate” Konfigurationsdatei läuft täglich (daily), behält 10 Backups (rotate 10), läuft auch wenn die Datei nicht vorhanden ist (missingok), komprimiert die Daten mit dem in logrotate eingestellten Kompressionsalgorithmus (compress), erstellt im Anschluss keine neue Datei (nocreate) und erstellt vor dem lauf von „logrotate“ den MySQL Dump.

Da Logrotate ohne vorhandene Datei nicht einmal den Befehl im Bereich prerotate ausführt muss die sicherungsdatei database.sql zuerst angelegt werden.

Ob wir alles richtig gemacht haben können wir auf der Shell testen.

Bei dieser Sicherung handelt es sich nicht um ein vollwertiges Backup da das Sicherungsverzeichnis /var/backups/mysql/ sich auf dem gleichen Computer (oder sogar auf der gleichen Festplatte) befindet auf der auch der MySQL Server selbst läuft. Hier kann natürlich auch vor der Sicherung das Verzeichnis gemounted werden.

MySQL root Passwort vergessen 2

Da es mehrere Wege gibt wieder an das MySQL root-Passwort zu kommen, hier ein zweiter weg:

recover.sql Inhalt
SET PASSWORD FOR ‚root’@’localhost‘ = PASSWORD(‚Anminpasswort‘);

anschließend die Datenbank stoppen:
/etc/init.d/mysql stop

Das Passwort zurücksetzen:
mysqld_safe –init-file=~/recover.sql

Und die MySQL Datenbank neu starten:
/etc/init.d/mysql start

anschließend die Datei ‘recover.sql’ löschen.
Das neue Passwort lautet jetzt ‘Anminpasswort’. (natürlich ohne die ´ )

Achtung: bei Systemen mit Plesk lautet der Benutzer nicht ‘root’ sondern ‘admin’, in diesem fall dort muss das Wort ´root´ in der Datei recover.sql durch das Wort ´admin´ ausgetauscht werden.

MySQL root Passwort vergessen (eins)

Es gibt viele Wege das MySQL root-Passwort neu zu vergeben. Hier die erste einfache Anleitung um das Passwort zu überschreiben.:

1.) MySQL Datenbank stoppen und anschließend ohne Netzwerkunterstützung und ohne Recheverwaltung neu starten

2.) Zur MySQL Datenbank verbinden und in der Tabelle user in der Datenbank mysql bearbeiten.

Alternativ kann hier das Passwort auch direkt mit dem MySQL-Shel-Befehl gesetzt werden:

3.) MySQL beenden und den regulären MySQL Dienst wieder starten:

Weitere Wege das root-Passwort für die MySQL Datenbank neu zu vergeben: