Jak zrobić zrzut wielu baz MySQL do osobnych plików

Wykonując kopię bezpieczeństwa serwera MySQL dobrze jest zachować zrzut każdej bazy w osobnym pliku co bardzo przyspiesza jej późniejsze odtworzenie w razie awarii lub pomyłki. Całość nie jest skompilowana i sprowadza się do raczej prostego skryptu w bashu.

Chesz przetestować działanie poniższych instrukcji, a nie masz dostępu do serwera Linuxowego? Po rejestacji na DigitalOcean otrzymasz 100 dolarów do wykorzystania w ciągu 60 dni, a z przyjaznym interfejsem uruchomisz ulubioną dystrybucję w ciągu paru minut.

Przykładowy skrypt zakłada użycie parametru --defaults-extra-file w którym przechowywane jest hasło do konta mającego stosowne uprawnienia do wykonywania backupów. Jego działanie sprowadza się do pobrania listy baz danych dostępnych na serwerze, a następnie zapisania zawartości każdej z nich do osobnego pliku.

#!/bin/bash
# Zmienne przechowujace sciezke pliku z poswiadczeniami
CREDENTIALS_FILE="/home/radek/mysql_backup_user.credentials"
# Oraz katalogu gdzie beda przechowywane zrzuty baz
LOCALBACKUP="/home/radek/mysql_backup"

# Pobranie listy baz danych; pomijane sa bazy: Database, information_schema oraz performance_schema
DATABASES=`/usr/bin/mysql --defaults-extra-file=$CREDENTIALS_FILE -u backup_user -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`

# Z rzucanie każdej z baz do osobnego pliku
for database in $DATABASES; do
        /usr/bin/mysqldump --defaults-extra-file=$CREDENTIALS_FILE -u backup_user --routines $database > $LOCALBACKUP/$database.sql
done