Oftmals muss man Datenbanken kopieren und sichern.
Die eigentliche Funktion ist simpel.
Mit einem Script kann man sich regelmäßigkeit natürlich auch sparen.
Installation:
sudo apt-get install mysqldump
Datenbanksicherung:
Mit einem simplen Befehl kann man es sichern:
mysqldump -u DATENBANKUSERNAME -p DATENBANKNAME > SQLfile.sql
Info:
- Option –opt: ist standardmäßig aktiviert.
- Option -u: Benutzername
- Option -p: Password verwenden
Datenbank Sicherung zurückspielen
Die Sicherung wird anschließend dem gleichen Befehl zurückgespielt, der einzige Unterschied ist die Ausgaberichtung:
mysql -u DATENBANKUSERNAME -p DATENBANKNAME < SQLfile.sql
Automatisierung:
Möchte man das ganze automatisieren kann man das als Script realisieren:
#!/bin/bash
#Variablen
# Anzahl, der max. Speicherungen
SAFE=2
#Pfad
PATH="/home/$USER"
#Datenbank
DATABASE=db_xyz
DBUSER=MyUser
DBPW=MyPw
BACKUPS=`find $PATH -name "mysqldump-*.gz" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $SAFE]
do
ls -tr1 $PATH/mysqldump-*.gz | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done
DATE=`date +%Y%m%d%H%M%S`
rm -f $PATH/.mysqldump-${DATE}.gz_INPROGRESS
/usr/syno/mysql/bin/mysqldump --opt -u$DBUSER -p$DBPW $DATABASE | gzip -c -9 > $PATH/.mysqldump-${DATE}.gz_INPROGRESS
mv -f $PATH/.mysqldump-${DATE}.gz_INPROGRESS $PATH/mysqldump-${DATE}.gz
exit 0
Cronjob:
# Command jede Minute ausführen:
* * * * * root sh /home/$USER/mysqlbackup.sh
# Jeden Tag um 22:00 h ausführen
0 22 * * * root sh /home/$USER/mysqlbackup.sh
# Jeden Sa. um 22:00 h ausführen
0 22 * * 6 root sh /home/$USER/mysqlbackup.sh
# Alle 5 min ausführen
*/5 * * * * root sh /home/$USER/mysqlbackup.sh
# Alle 2 Std. ausführen
00 */2 * * * root sh /home/$USER/mysqlbackup.sh
# Von Mo. bis Fr. um 01:00 h ausführen
0 1 * * 1-5 root sh /home/$USER/mysqlbackup.sh