Auto-backup baz danych MySQL

mysql-backup

Prezentuje wam skrypt wykonujący automatyczne kopie zapasowe waszych wszystkich baz danych do konkretnego katalogu. Bazy danych pakują się do pliku .gz w katalogu o odpowiedniej nazwie, domyślnie nazwa katalogu = data

#! /bin/bash

TIMESTAMP=$(date +"%F")
BACKUP_DIR="/home/sqlbackup/$TIMESTAMP"
MYSQL_USER="xroot"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="password"
MYSQLDUMP=/usr/bin/mysqldump

mkdir -p "$BACKUP_DIR"

databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`

for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
done
  • TIMESTAMP=$(date +”%F”) – zmienna w której określamy nazwę katalogu, jak pisałem wyżej tutaj jest to data, wynikiem jest np: 2015-02-02
  • BACKUP_DIR=”/home/sqlbackup/$TIMESTAMP” – katalog w którym będą się te kopie gromadzić
  • MYSQL_USER=”xroot” – nazwa głównego usera i administratora bazy MYSQL
  • MYSQL=/usr/bin/mysql – ścieżka do binarki MYSQL, pozostaw bez zmian jak instalowałeś/aś apt-em
  • MYSQL_PASSWORD=”password” – hasło do konta administratora bazy
  • MYSQLDUMP=/usr/bin/mysqldump – ścieżka do binarki programu MYSQLDUMP, można zostawić domyślne

Po zapisaniu skryptu do pliku dodajemy go tylko do harmonogramu (CRONA), u mnie wykonuje się raz na dobę o 22:

22 0 * * * sh /scripts/bakup.sh > /dev/null 2>&1