Benutzer-Werkzeuge

Webseiten-Werkzeuge


mariadb:backup

Automatisch alle Datenbanken eines mySQL / mariaSQL Datenbank Servers erstellen und nach /backup sichern. Auch Datenbanken die erst später erstellt werden werden mit dem nächsten Lauf mitgesichert.

Datenbank User mit globalen Leserechten erstellen und die Rechte neu laden

GRANT LOCK TABLES, SELECT ON *.* TO 'dbdump'@'localhost' IDENTIFIED BY 'changeME';
flush privileges;

Den Ordner /backup erstellen Das Backup Script nach /usr/local/sbin speichern.

Password für den dbdump User anpassen

backup_mysql.sh
#!/bin/bash
# Shell script to backup MySql database
# To backup MySQL databases file to /backup dir and later pick up by your
# script. You can skip few databases from backup too.
# For more info please see (Installation info):
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html
# Last updated: Aug - 2005
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2004, 2005 nixCraft project
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
MyUSER="dbdump"     # USERNAME
MyPASS="changeME"       # PASSWORD
MyHOST="localhost"          # Hostname
 
# Linux bin paths, change this if it can not be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
 
# Get hostname
HOST="$(hostname)"
 
# Backup Dest directory, change this if you have someother location
DEST="/backup/"
 
# Main directory where backup will be stored
MBD="$DEST/$HOST"
 
# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"
 
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
 
# DO NOT BACKUP these databases
IGGY="test information_schema lost+found"
 
[ ! -d $MBD ] && mkdir -p $MBD || :
dayofmonth=`date '+%d'`
 
# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
 
for db in $DBS
do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
      for i in $IGGY
      do
        [ "$db" == "$i" ] && skipdb=1 || :
      done
    fi
 
    if [ "$skipdb" == "-1" ] ; then
      FILE="$MBD/$db.$dayofmonth.gz"
      # do all inone job in pipe,
      # connect to mysql using mysqldump for select mysql database
      # and pipe it out to gz file in backup dir :)
         $MYSQLDUMP --single-transaction -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
    fi
done

Shell Script ausführbar machen

chmod 700 /usr/local/sbin/backup_mysql.sh

Testen durch sudo /usr/local/sbin/backup_mysql.sh

wenn keine Fehlermeldungen kommen sollte im Ordner /backup ein ordner servername mit den Tagesbackups der Datenbank vorhanden sein.

Crontab Eintrag für den root user erstellen sudo crontab -e

9 20 *  * * /usr/local/sbin/backup_mysql.sh > /dev/null 2>&1
mariadb/backup.txt · Zuletzt geändert: von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki