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.
Niniejszy wpis jest częścią cyklu o przeprowadzeniu zrzutów baz danych MySQL na który składają się następujące wpisy:
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
Kolejny bardzo przydatny artykuł z poradami. Dla mnie do codziennych działań w firmie bardzo się wiele z tych rzeczy przydaje ;)