Zadanie 10 — Eksport i kopie zapasowe

Cel zadania

Celem tego zadania jest nauczenie Cię, jak tworzyć i przywracać kopie zapasowe (backupy) bazy danych. Dowiesz się, dlaczego regularne tworzenie kopii jest jednym z najważniejszych obowiązków administratora i dewelopera. Poznasz najpopularniejsze narzędzie wiersza poleceń – mysqldump – do tworzenia logicznych kopii zapasowych. Nauczysz się także, jak wykonywać te same operacje w wygodny sposób za pomocą klienta GUI, takiego jak HeidiSQL.

Scenariusz / opis zadania

Twoja baza danych biblioteka jest już w pełni funkcjonalna i zawiera cenne dane. Co by się stało, gdyby dysk twardy Twojego komputera uległ awarii lub gdybyś przez pomyłkę usunął kluczową tabelę? Utrata danych mogłaby być katastrofalna. Twoim ostatnim, ale niezwykle ważnym zadaniem w tym kursie, jest opanowanie sztuki tworzenia i odtwarzania kopii zapasowych. Wcielisz się w rolę przezornego administratora, który chce zabezpieczyć efekty swojej pracy. Najpierw użyjesz potężnego narzędzia mysqldump, aby wyeksportować całą strukturę i dane bazy biblioteka do jednego pliku .sql. Dowiesz się, jak dostosować polecenie, aby wyeksportować tylko wybrane tabele lub samą strukturę bez danych. Następnie przećwiczysz scenariusz awaryjny: usuniesz jedną z tabel, a potem odtworzysz ją z wykonanej wcześniej kopii zapasowej, używając standardowego klienta mysql. Aby poznać alternatywne metody, wykonasz te same operacje – eksport i import – za pomocą kilku kliknięć w interfejsie graficznym HeidiSQL. Zrozumiesz różnicę między backupem logicznym (plik SQL) a fizycznym (kopia plików bazy danych) oraz nauczysz się, jak zweryfikować poprawność utworzonego pliku zrzutu.

Pomocnik wykonania

  1. Sekcja 1: Kopia zapasowa z wiersza poleceń (mysqldump)
  2. Otwórz wiersz poleceń: Uruchom cmd.exe (Windows) lub terminal (Linux).
  3. Przejdź do katalogu bin MySQL: Na Windows wpisz: cd C:\xampp\mysql\bin. W Linuksie mysqldump jest zazwyczaj dostępne w systemowej ścieżce PATH.
  4. Eksport całej bazy danych: Użyj poniższego polecenia, aby wyeksportować całą bazę biblioteka do pliku biblioteka_backup.sql. Plik zostanie utworzony w bieżącym katalogu (C:\xampp\mysql\bin).
    mysqldump -u root -p biblioteka > biblioteka_backup.sql
    Zostaniesz poproszony o hasło użytkownika root.
  5. Analiza pliku backupu: Otwórz plik biblioteka_backup.sql w edytorze tekstu. Zobaczysz w nim polecenia SQL: CREATE TABLE dla każdej tabeli oraz INSERT INTO dla wszystkich danych. To jest właśnie backup logiczny.
  6. Eksport pojedynczej tabeli: Jeśli chcesz zrobić kopię tylko tabeli czytelnicy:
    mysqldump -u root -p biblioteka czytelnicy > czytelnicy_backup.sql
  7. Eksport samej struktury (bez danych): Czasem potrzebujesz tylko schematu bazy. Użyj flagi --no-data.
    mysqldump -u root -p --no-data biblioteka > biblioteka_struktura.sql
  8. Kompresja wyników (Linux): W Linuksie można łatwo skompresować backup "w locie" za pomocą potoku (pipe).
    mysqldump -u root -p biblioteka | gzip > biblioteka_backup.sql.gz
  9. Symulacja awarii: Zaloguj się do klienta mysql i celowo usuń jedną z tabel, np. pracownicy.
    USE biblioteka;
    DROP TABLE pracownicy;
    Sprawdź poleceniem SHOW TABLES;, że tabela zniknęła.
  10. Przywracanie bazy z kopii: Teraz odtworzymy całą bazę z naszego pliku backupu.
    mysql -u root -p biblioteka < biblioteka_backup.sql
  11. Weryfikacja przywrócenia: Zaloguj się ponownie do bazy i sprawdź, czy tabela pracownicy wróciła na swoje miejsce wraz ze wszystkimi danymi.
  12. Sekcja 2: Kopia zapasowa w HeidiSQL
  13. Uruchom HeidiSQL: Połącz się z serwerem i wybierz bazę biblioteka z drzewa po lewej stronie.
  14. Narzędzie eksportu: Kliknij prawym przyciskiem myszy na nazwę bazy biblioteka, a następnie wybierz "Eksportuj bazę danych jako SQL".
  15. Konfiguracja eksportu: W nowym oknie upewnij się, że:
  16. Wykonaj eksport: Kliknij przycisk "Eksportuj".
  17. Przywracanie z pliku w HeidiSQL: Aby zaimportować dane z pliku .sql, przejdź do menu "Plik" -> "Wczytaj plik SQL...". Wybierz swój plik backupu i kliknij "Otwórz". Następnie kliknij niebieską ikonę "play" (lub wciśnij F9), aby wykonać skrypt.

Przykłady kodu i poleceń

Poniżej zestawienie najważniejszych poleceń dla Windows i Linux.

Windows (cmd.exe)

rem Przejscie do katalogu narzedzi MySQL
cd C:\xampp\mysql\bin

rem Eksport całej bazy 'biblioteka'
mysqldump -u root -p biblioteka > C:\Users\TwojaNazwa\Desktop\biblioteka_backup.sql

rem Przywracanie bazy 'biblioteka' z pliku
mysql -u root -p biblioteka < C:\Users\TwojaNazwa\Desktop\biblioteka_backup.sql
    

Linux (bash)

# Eksport całej bazy 'biblioteka' do katalogu domowego
mysqldump -u root -p biblioteka > ~/biblioteka_backup.sql

# Eksport z kompresją
mysqldump -u root -p biblioteka | gzip > ~/biblioteka_backup.sql.gz

# Przywracanie bazy 'biblioteka' z pliku
mysql -u root -p biblioteka < ~/biblioteka_backup.sql

# Przywracanie ze skompresowanego pliku
gunzip < ~/biblioteka_backup.sql.gz | mysql -u root -p biblioteka
    

Ilustracja konsoli

+---------------------------------------------------+
|                                                   |
|   C:\xampp\mysql\bin> mysqldump -u root -p biblioteka > backup.sql |
|   Enter password: ****                            |
|                                                   |
|   C:\xampp\mysql\bin> _                             |
|   (brak komunikatu oznacza sukces)                |
|                                                   |
|   ...                                             |
|   C:\xampp\mysql\bin> mysql -u root -p biblioteka < backup.sql |
|   Enter password: ****                            |
|                                                   |
|   C:\xampp\mysql\bin> _                             |
|                                                   |
+---------------------------------------------------+
    

Informacje dodatkowe / uwagi