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.
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.
cmd.exe (Windows) lub terminal (Linux).cd C:\xampp\mysql\bin. W Linuksie mysqldump jest zazwyczaj dostępne w systemowej ścieżce PATH.biblioteka do pliku biblioteka_backup.sql. Plik zostanie utworzony w bieżącym katalogu (C:\xampp\mysql\bin).
root.
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.czytelnicy:
--no-data.
mysql i celowo usuń jedną z tabel, np. pracownicy.
SHOW TABLES;, że tabela zniknęła.
pracownicy wróciła na swoje miejsce wraz ze wszystkimi danymi.biblioteka z drzewa po lewej stronie.biblioteka, a następnie wybierz "Eksportuj bazę danych jako SQL"..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.Poniżej zestawienie najważniejszych poleceń dla Windows i Linux.
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
# 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
+---------------------------------------------------+
| |
| 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> _ |
| |
+---------------------------------------------------+
mysqldump): Tworzy plik z poleceniami SQL. Jest bardziej elastyczny (można go wczytać na innej wersji serwera lub na innym systemie bazodanowym po modyfikacjach), ale wolniejszy przy bardzo dużych bazach..sql, warto go przejrzeć. Sprawdź, czy nie jest pusty i czy na końcu pliku znajduje się komunikat w stylu -- Dump completed on .... To daje podstawową pewność, że proces nie został przerwany w połowie.mysqldump regularnie, np. każdej nocy.