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.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

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.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

MySQL Shellausgaben schöner anzeigen

Leider scrollt die Ausgaben von MySQL Befehlen viel zu schnell aus der Shell…

Zum Glück lässt sich dies einfach verhindern indem die MySQL Ausgabe in einen entsprechenden Texteditor pagen läßt.
mysql> pager vim
PAGER set to ‚vim‘

abschalten geht einfach mit
mysql> nopager

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

MySQL root Passwort vergessen

/etc/init.d/mysql stop
/usr/bin/mysqld_safe –skip-grant-tables –skip-networking &

mysql -u root
use mysql
UPDATE user SET Password=PASSWORD(„mein neues Passwort“) WHERE User=“root“&
exit&
oder alternativ
mysql -c „mysqladmin –user root password ‚mein neues Passwort'“

/etc/init.d/mysql stop
/etc/init.d/mysql start

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate