Dlaczego kopie zapasowe? Kopia zapasowa bazy (backup) to zrzut struktury i danych, który pozwala odtworzyć bazę po awarii czy błędnej operacji użytkownika. Dobry backup powinien być wykonywany regularnie, przechowywany poza serwerem i testowany przez odtworzenie na środowisku testowym.
mysqldump to standardowe narzędzie MySQL do tworzenia kopii w postaci pliku tekstowego z poleceniami SQL (CREATE TABLE, INSERT). Można nim tworzyć kopie samej struktury, danych lub wszystkiego razem.
--no-data – zrzut samej struktury (bez rekordów).Import odbywa się z użyciem klienta mysql, który odczytuje plik .sql i wykonuje zawarte w nim instrukcje. Przed importem docelowa baza powinna istnieć (lub być utworzona).
Diagnostyka korzysta z narzędzi typu CHECK TABLE, REPAIR TABLE, mysqlcheck oraz z logu błędów serwera. Pozwala wykryć uszkodzone tabele, niespójne indeksy czy błędy odczytu/zapisu.
Teoria: Zrzut samej struktury bazy służy do przeniesienia schematu (tabele, klucze, indeksy) bez danych, np. na inne środowisko lub do wersjonowania w repozytorium. Opcja --no-data w mysqldump pomija instrukcje INSERT, zostawiając tylko definicje CREATE TABLE.
projekty_it (bez danych) i zapisz ją w pliku backup_struktura.sql.
-- Tworzenie kopii struktury bazy (bez danych) mysqldump -u root -p --no-data projekty_it > backup_struktura.sql; -- Alternatywnie w SQL (pojedyncze tabele): SHOW CREATE TABLE Projekty; SHOW CREATE TABLE Klienci;
backup_struktura.sql zawierający tylko definicje tabel, kluczy i relacji. Kopia może być użyta do odtworzenia struktury bazy w nowym środowisku (np. na serwerze testowym).
Teoria: Przywracanie (restore) polega na wczytaniu pliku SQL do serwera MySQL. Najczęściej najpierw odtwarza się strukturę (CREATE TABLE), a następnie dane (INSERT). Ważne jest, by przywracać kopie na zgodną lub nowszą wersję serwera oraz mieć bazę o odpowiedniej nazwie.
projekty_it z pliku backup_struktura.sql oraz pliku danych backup_dane.sql.
-- (opcjonalnie) utworzenie pustej bazy przed przywróceniem: CREATE DATABASE projekty_it CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Przywracanie struktury bazy mysql -u root -p projekty_it < backup_struktura.sql; -- Przywracanie danych mysql -u root -p projekty_it < backup_dane.sql;
projekty_it zostaje przywrócona do stanu z momentu utworzenia kopii. Wszystkie tabele i rekordy zostają odtworzone, co umożliwia szybkie odzyskanie środowiska pracy po awarii lub błędnym usunięciu danych.
Teoria: Eksport bazy (dump) do pliku SQL pozwala przenieść ją na inny serwer lub wykonać kopię „na żądanie”. Import wykorzystuje ten sam plik do odtworzenia bazy pod inną nazwą, np. projekty_backup, co jest wygodne przy testowaniu zmian bez ryzyka dla produkcji.
projekty_it do pliku SQL, a następnie zaimportuj ją do nowej bazy projekty_backup.
-- Eksport bazy do pliku (struktura + dane) mysqldump -u root -p projekty_it > projekty_full.sql; -- Tworzenie nowej bazy CREATE DATABASE projekty_backup CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Import do nowej bazy mysql -u root -p projekty_backup < projekty_full.sql;
| Baza źródłowa | Baza docelowa | Operacja |
|---|---|---|
| projekty_it | projekty_backup | Eksport → Import (klon bazy) |
Teoria: Narzędzia diagnostyczne sprawdzają spójność tabel i indeksów. CHECK TABLE wykrywa problemy, REPAIR TABLE próbuje je naprawić (np. w MyISAM), a log błędów MySQL zapisuje informacje o uszkodzeniach, przerwach w pracy serwera czy błędach zapytań. Program mysqlcheck pozwala wykonywać te operacje zbiorczo na wielu tabelach.
projekty_it z wykorzystaniem poleceń diagnostycznych MySQL.
-- Sprawdzenie integralności tabel CHECK TABLE Projekty; CHECK TABLE Klienci; -- Naprawa uszkodzonych tabel (np. MyISAM) REPAIR TABLE Projekty; REPAIR TABLE Klienci; -- Przykład użycia mysqlcheck dla całej bazy: mysqlcheck --auto-repair -o projekty_it -u root -p -- Analiza logów serwera MySQL (znalezienie ścieżki do logu błędów) SHOW VARIABLES LIKE 'log_error';
Podsumowanie: W praktyce INF.03 najważniejsze jest opanowanie: tworzenia kopii zapasowych (mysqldump), przywracania bazy (mysql), diagnostyki i naprawy (CHECK/REPAIR/mysqlcheck) oraz czytania logów błędów. Poniższa tabelka to szybka ściąga z najczęściej używanymi poleceniami.
| Cel | Polecenie / narzędzie | Uwagi |
|---|---|---|
| Kopia samej struktury | mysqldump --no-data projekty_it > backup_struktura.sql |
Tylko definicje tabel, bez rekordów. |
| Pełny backup bazy | mysqldump projekty_it > projekty_full.sql |
Struktura + dane wszystkich tabel. |
| Przywracanie z pliku | mysql projekty_it < backup_dane.sql |
Baza docelowa musi istnieć przed importem. |
| Sprawdzenie tabel | CHECK TABLE Projekty; / mysqlcheck -c projekty_it |
Wykrywa błędy i niespójności struktur. |
| Naprawa i optymalizacja | REPAIR TABLE Projekty;mysqlcheck --auto-repair -o projekty_it |
Naprawa uszkodzonych tabel, uporządkowanie indeksów. |