Backupy baz danych
1. Wprowadzenie
Backup (kopia zapasowa) to proces tworzenia zapasowej kopii danych w celu ich odtworzenia w przypadku:
- awarii systemu lub sprzętu,
- przypadkowego usunięcia danych,
- ataku hakerskiego (np. ransomware),
- błędu aplikacji lub administratora.
W przypadku MySQL kopie zapasowe są kluczowe, ponieważ baza danych często przechowuje dane krytyczne dla działania aplikacji (np. dane klientów, zamówień, transakcji).
2. Rodzaje backupów w MySQL
a) Backup logiczny
- Polega na eksportowaniu struktury i/lub zawartości bazy w postaci pliku tekstowego (np.
.sql). - Narzędzie: mysqldump.
Cechy:
* łatwe do wykonania,
* przenośne (można odtworzyć na innym serwerze lub innym systemie DBMS obsługującym SQL),
* wolniejsze przy dużych bazach,
* większy rozmiar kopii w porównaniu do backupów fizycznych.
b) Backup fizyczny
- Polega na kopiowaniu fizycznych plików bazy danych (np. pliki
.ibd,.frm,.myd,.myi). - Narzędzia:
mysqlhotcopy, Percona XtraBackup,mysqlbackup(Oracle MySQL Enterprise).
Cechy:
* szybki,
* przywracanie danych jest bardzo efektywne,
* zależny od wersji serwera i systemu operacyjnego.
c) Backup pełny (Full Backup)
- Kopia całej bazy danych.
- Zapewnia pełne bezpieczeństwo, ale zajmuje dużo miejsca i trwa dłużej.
d) Backup przyrostowy (Incremental Backup)
- Kopiowane są tylko zmiany od ostatniego backupu (pełnego lub przyrostowego).
- Narzędzie: Percona XtraBackup.
- Oszczędność miejsca i czasu.
e) Backup różnicowy (Differential Backup)
- Kopiowane są zmiany od ostatniego backupu pełnego.
- Mniej miejsca niż backup pełny, ale więcej niż przyrostowy.
3. Narzędzia do backupu w MySQL
a) mysqldump
- Standardowe narzędzie do wykonywania backupów logicznych.
Przykłady:
- Backup całej bazy:
- Backup wszystkich baz:
- Backup tylko struktury (bez danych):
b) mysqlpump
- Nowsze narzędzie (od MySQL 5.7), szybsze i wspierające równoległy eksport.
- Przykład:
c) Percona XtraBackup
- Popularne darmowe narzędzie do backupów fizycznych i przyrostowych.
Cechy:
* nie blokuje tabel podczas tworzenia backupu,
* wspiera duże bazy danych,
* idealne do systemów produkcyjnych.
d) Enterprise Backup (MySQL Enterprise Edition)
- Rozwiązanie komercyjne od Oracle.
- Obsługuje backupy pełne, różnicowe i przyrostowe, szyfrowanie i kompresję.
4. Strategie backupów
- Pełny backup raz dziennie + backup przyrostowy co godzinę → minimalizacja utraty danych.
- Backup różnicowy co kilka godzin + backup pełny raz na dobę → szybsze odtwarzanie niż przy przyrostowych.
- Backup hybrydowy – połączenie różnych metod w zależności od krytyczności danych.
Przykład:
- Pełny backup o północy,
- Kopie przyrostowe co godzinę w ciągu dnia,
- Kopia różnicowa w połowie dnia.
5. Dobre praktyki backupów w MySQL
- Automatyzacja – korzystanie z cron jobów, skryptów lub narzędzi do planowania zadań.
- Kopie zapasowe poza serwerem – przechowywanie backupów w lokalizacji zewnętrznej (np. chmura, inny serwer).
- Testowanie odtwarzania – regularne sprawdzanie, czy backupy faktycznie można odtworzyć.
- Szyfrowanie – zabezpieczenie backupów przed dostępem nieuprawnionych osób.
- Rotacja backupów – ustalenie polityki przechowywania (np. kopie z ostatnich 30 dni, a starsze archiwizowane).
- Kompresja – zmniejszenie rozmiaru plików kopii (
gzip,xz). - Monitorowanie logów – sprawdzanie logów MySQL i logów backupów w poszukiwaniu błędów.
6. Odtwarzanie danych (Restore)
a) Z backupu logicznego (mysqldump)
b) Z backupu fizycznego
- Zatrzymanie serwera MySQL,
- Podmiana plików danych backupem,
- Ponowne uruchomienie serwera.
c) Z użyciem Percona XtraBackup
- Przygotowanie danych (
--prepare), - Skopiowanie danych do katalogu MySQL,
- Uruchomienie serwera.
7. Scenariusze użycia backupów w MySQL
- Awaria serwera – odtworzenie danych z ostatniej kopii.
- Atak ransomware – wykorzystanie backupu offline/chmurowego.
- Testy i migracje – użycie backupów do odtworzenia środowiska testowego.
- Przywracanie pojedynczej bazy/tabeli – przydatne, gdy usunięto dane tylko w jednej części systemu.