Kopie można wykonywać z wielu powodów. Najczęściej tworzy się kopie bezpieczeństwa, która pozwoli odtworzyć stan bazy z ostatniego dnia lub godziny. Ta czynność powinna być wykonywana tym częściej im ważniejsze dane przechowywane są w bazie.
Innym powodem może być chęć przeniesienia zawartości bazy danych pomiędzy różnymi systemami lub na inne serwery. Wtedy również wykonanie kopii tabel i baz jest konieczne aby nie wprowadzać wszystkich danych od nowa.
MySQL pozwala wykonywać kopie z wieloma parametrami, ale najczęściej wykorzystuje się tylko kilka z nich, które omówię na przykładach. Zobaczysz także jak odtworzyć kopię z naszego archiwum.
Tworzymy kopię
Aby wykonać kopię bazy należy uruchomić program mysqldump, który jest dołączony do dystrybucji MySQL. Tworzy on kopię bazy lub jej fragmentu w zwykłym pliku tekstowym. Składnia polecenia jest prosta:
Kod
mysqldump --all-databases -u root -ptajne45 >/kopie/wszystkie_bazy.txt
Przełącznik --all-databases informuje program, że robimy kopię wszystkich baz danych logując się jako użytkownik root (-u root) z hasłem "tajne45" podanym zaraz po przełącznikiem -p.
Po uruchomieniu polecenia zrzuci zawartość wszystkich baz do pliku. Taki "zrzut" w slangu komputerowym nazywany jest "dumpem". Jeżeli baz danych jest dużo proces może być bardzo czasochłonny.
W praktyce niezbyt często robi się kopię wszystkich baz. Zwykle wykonuje się kopię tylko konkretnej bazy. Aby w całości zachować jej strukturę i zawartość (rekordy) użyj przełącznika --all i podaj nazwę bazy danych:
Kod
mysqldump --all -u root -phaslo nazwa_bazy >/kopie/plik.txt
Przełącznik --all informuje program, że robimy kopię wszystkiego w wybranej bazie danych. W poleceniu podajemy nazwę bazy danych do skopiowania i miejsce docelowe, np. plik.txt w wybranym katalogu.
Oczywiście opcji i przełączników programu mysqldump jest sporo w zależności od zastosowań i potrzeb. Aby zrzucić tylko strukturę tabel w bazie, bez zawartości rekordów - możesz użyć przełącznika -d zamiast -all:
Kod
mysqldump -d -u root -phaslo nazwa_bazy >/kopie/plik.txt
W zasadzie te trzy polecenia stosuje się w praktyce najczęściej. Pierwsze do wykonania kopii wszystkich baz MySQL, drugie do kopiowania wybranych baz, a trzecie do kopiowania struktury wybranych baz danych.
Odtwarzamy kopie
Odtworzenie bazy danych nie jest skomplikowane. Wystarczy uruchomić klienta MySQL z przekierowaniem zawartości pliku do bazy danych:
Kod
mysql -u root -p < wszystkie_bazy.txt
Albo dla wybranej bazy:
Kod
mysql -u root -p baza < kopiabazy.txt
Warto znać te kilka poleceń aby szybko i sprawnie wykonać kopię bazy do pliku i odtworzyć bazę gdy będzie to konieczne.
Inny sposób to fizyczne przeniesienie plików z jednego komputera do inny. W katalogu z bazą danych znajduje się katalog data/ gdzie składowane są bazy (każdy katalog odpowiada nazwie bazy). Wewnątrz katalogów bazy znajdują się pliki z tabelami. Każda tabela składa się z trzech plików:
Kod
c:\mysql\data\baza1\tabela1.frm - definicja tabeli
c:\mysql\data\baza1\tabela1.myi - indeks tabeli
c:\mysql\data\baza1\tabela1.myd - dane w tabeli
Wystarczy skopiować całą bazę lub wybrane tabele i wgrać do innego komputera, gdzie też zainstalowany jest MySQL.