Nach dem ich die Backupfunktion via raspiBackup umgesetzt hatte, wollte ich auch noch eine regelmäßige Sicherung der MySQL Datenbanken erreichen. Durch das DMS System, welches auf dem Pi installiert ist, ändern sich die Datanbanken schon häufiger als gedacht.
Vom Webserver kannte ich automysqlbackup, als ich danach suchte, bin ich ziehmlich schnell bei sourceforge.net rausgekommen. Hier gibt es immer die neueste Version als download. Zuerst hatte ich es via Debian Paketmanager versucht, hier gibt es aber nur eine sehr alte Version. Also habe ich mich für die manuelle Installation entschieden. Diese ist recht schnell erledigt.
cd /tmp wget -O automysqlbackup-v3.0_rc6.tar.gz http://downloads.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fautomysqlbackup%2F&ts=1468584871&use_mirror=tenet tar xvzf automysqlbackup-v3.0_rc6.tar.gz ./install.sh
Nach kurzem einlesen in die Konfigurationsdatei /etc/automysqlbackup/automysqlbackup.conf habe ich meine Zugangsdaten zur Datenbank und den Backuppfad eingetragen. Danach konnte ich schon einen ersten Test mehr oder weniger erfolgreich abschließen.
root@pi:/# automysqlbackup Invoking backup method. Parsed config file "/etc/automysqlbackup/automysqlbackup.conf" # Checking for permissions to write to folders: base folder /media/nas/backup ... exists ... ok. backup folder /media/nas/backup/mysql-wz/ ... exists ... writable? yes. Proceeding.
Danach gibt es im Backupverzeichnis schon die Tabellen als sql Export im gzip Format.
Zum Schluss noch mit einem cronjob das ganze automatisieren und das wars.
10 03 * * * root /usr/sbin/automysqlbackup
Dieser Job wird jeden Tag um 3:10 Uhr ausgeführt.
Fehler
Warning: Skipping the data of table mysql.event. Specify the –events option explicitly.
Diesen Fehler bekam ich immer per Mail von Cron, nach dem der Job ausgeführt wurde. Abhilfe schafft hier nur die direkte Bearbeitung im Script.
joe /usr/sbin/automysqlbackup
Bitte nach dem folgenden Ausdruck suchen, bei mir war es die Zeile 440.
opt=( '--quote-names' '--opt' )
An diese Zeile müssen wir die Option –events anhängen, dass die Zeile dann so aussieht.
opt=( '--quote-names' '--opt' '--events' )
Danch sollte der Fehler weg sein.
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user ‚root’@’localhost‘ for table ‚cond_instances‘ when using LOCK TABLES
Diesen Fehler konnte ich mit der Configdatei beheben. Einfach die beiden Tabellen nicht mit sichern. (information_schema, performance_schema ) Bei einem Fullbackup der Datenbanken sind diese enthalten. Bei einem separaten Wiederherstellen der DB, brauch man diese Tabellen nicht. In der Konfigdatei /etc/automysqlbackup/automysqlbackup.conf folgenden Parameter suchen und diesen wie unten ergänzen.
CONFIG_db_exclude=( 'information_schema' 'performance_schema' )
Das war es. Danach lief die Sicherung ganz normal ohne Fehler durch.