Automatyczny backup mysql

Jak mówi powiedzenie użytkownicy dzielą się na tych, którzy robią backup i tych, którzy będą robić backup 🙂 W tej notce zaprezentuję prosty skrypt bash do automatycznego backupu mysql.

Należy zacząć od utworzenie użytkownika do wykonywania kopii zapasowych. Dobrze, żeby miał dostęp do wszystkich baz, ale z minimalnymi uprawnieniami do wykonania dump‚a.

mysql> CREATE USER 'backup'@'localhost' IDENTIFIED BY 'pass1,';
mysql> GRANT SHOW VIEW, EVENT, TRIGGER, LOCK TABLES, SELECT ON *.* TO 'backup'@'localhost';

Stworzenie takiego użytkownika jest jednym ze sposobów uchronienia nas przed usunięciem lub uszkodzeniem danych przez skrypt backupu oraz zabezpieczeniem na wypadek przejęcia danych konta backupowego.

Pierwszym krokiem jest pobranie wszystkich dostępnych baz danych:

databases=`$mysql --user=$backup_user -p$backup_password -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`

Ścieżkę dostępu do mysql  umieściłem w zmiennej a grep  wyników zapytania pozwala na otrzymanie w efekcie samych nazw baz. Z przygotowanej zmiennej $databases wyciągam następnie w pętli pojedyncze nazwy i dla każdej z baz wykonuję mysqldump do wskazanego katalogu z nazwą bazy:

#make databases backup into separated dirs
for base in $databases; do
  mkdir -p "$main_backup_dir/mysql/$base"
  $mysqldump --force --opt --user=$backup_user -p$backup_password --databases $base | gzip > "$main_backup_dir/mysql/$base/$base-$timestamp.gz"
done

Użycie parametru -p programu mkdir powoduje, że program nie zwróci błędu gdy katalog już istnieje oraz w razie potrzeby utworzy katalogi nadrzędne. Przekazanie strumienia mysqldump do gzip pozwala na spakowanie pliku wynikowego i zaoszczędzenie miejsca na dysku.

Tak przygotowany skrypt możemy wywoływać cyklicznie za pomocą cron. Poniżej przykład wpisu w tablicy cron:

30 0 * * * /var/sqlBck.sh

Kompletny skrypt można pobrać z linku poniżej notki (tradycyjnie już – ze względów bezpieczeństwa plik jest w formacie *txt).

Mikołaj Niedbała

I'm a Poland based IT administrator, linux administrator and IT engineer creating professional IT infrastructure solutions based on Linux and virtual environments.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *