SQL Datenbank(en) sichern

Hier ein kleines Script das ich gefunden habe um eure SQL Datenbank zu sichern.

Der Vorteil von dem Script ist das es für jede Datenbank eine einzelne Sicherung anlegt.

So kann man gezielt einzelne Datenbank(en) wiederherstellen.


Quelle:

https://marketmix.com/de/mysql-datenbanken-komplett-sichern/

#!/bin/bash
#
# backup-mysql.sh 1.0.5
#
# Dumps all databases to seperate files.
# All files are created in a folder named by the current date.
# Folders exceeding the defined hold time are purged automatically.
# 
# (c)2015-2019 Harald Schneider
#

# Setup.start
#

HOLD_DAYS=7 
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/Users/hschneider/Work/_BACKUP/MySQL"

MYSQL_USR="root"
MYSQL_PWD="XXXXXXXXXXX"

# Use this on Linux
#
#MYSQL_CMD=/usr/bin/mysql  
#MYSQL_DMP=/usr/bin/mysqldump  
#MYSQL_CHECK=/usr/bin/mysqlcheck

# Use this for MAMP on macOS:
#
#MYSQL_CMD=/Applications/MAMP/Library/bin/mysql
#MYSQL_DMP=/Applications/MAMP/Library/bin/mysqldump
#MYSQL_CHECK=/Applications/MAMP/Library/bin/mysqlcheck

# Use this for AMPPS on macOS:
#
MYSQL_CMD=/Applications/AMPPS/mysql/bin/mysql
MYSQL_DMP=/Applications/AMPPS/mysql/bin/mysqldump
MYSQL_CHECK=/Applications/AMPPS/mysql/bin/mysqlcheck

#
# Setup.end


# Check and auto-repair all databases first
#
echo
echo "Checking all databases - this can take a while ..."
$MYSQL_CHECK -u $MYSQL_USR --password=$MYSQL_PWD --auto-repair --all-databases

# Backup
#
echo
echo "Starting backup ..."
mkdir -p "$BACKUP_DIR/$TIMESTAMP"
databases=`$MYSQL_CMD --user=$MYSQL_USR -p$MYSQL_PWD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
 
for db in $databases; do
  echo "Dumping $db ..."
  $MYSQL_DMP --force --opt --user=$MYSQL_USR -p$MYSQL_PWD --databases "$db" | gzip > "$BACKUP_DIR/$TIMESTAMP/$db.gz"
done

echo
echo "Cleaning up ..."
find $BACKUP_DIR -type d -mtime +$HOLD_DAYS -maxdepth 1 -mindepth 1 -exec rm -rf {} \;
echo "-- DONE!"

Um die einzelne SQL datei dann zu imporierten gibt man:

~$ mysql -u root -p „HierDieSicherungsDateiAngeben“

Man kann auch die ganze SQL Datenbank in eine Backupdatei dumpen, aus Erfahrung kann ich davon allerdings nur abraten: Bei meinem Systemumzug viel mir das nur auf die Füße, irgend eine Zeile konnte SQL damals nicht verstehen und brach alles andere dadurch ab. Eine mehrere hundert MB Text Datei nach Fehlern durchsuchen ist unlustig. So könnte man IMHO recht einfach die anderen Datenbanken wenigstens schonmal sicher importieren und weiß im Fehlerfall welche DB Ärger macht und kann dann leichter auf Fehlersuche gehen.