Tworzenie i przywracanie kopii bazy danych MySQL

Pracując z bazą danych MySQL / MariaDB, nie raz się okaże że trzeba zrobić kopię bazy danych, czy to w ramach bezpieczeństwa, czy żeby po prostu przenieść bazę między serwerami. W tym wpisie przedstawię dwa sposoby na import i eksport bazy – za pomocą panelu phpMyAdmin oraz za pomocą wiersza poleceń.

phpMyAdmin

Zanim przystąpimy do pracy w panelu phpMyAdmin, chciałbym zwrócić Twoją uwagę na dosyć ważny szczegół. Otóż rozmiar pliku którego będziemy importować za pomocą panelu, nie może przekraczać 2MB. Rozmiar ten może się różnić w zależności od ustawień PHP na serwerze. Jeśli plik jest większy, możemy podzielić plik na mniejsze części, zmodyfikować ustawienia serwera, lub zaimportować plik za pomocą wiersza poleceń, o czym wspomnę w dalszej części wpisu. Teraz pokażę jak wykonać i przywrócić kopię za pomocą panelu phpMyAdmin.

  1. Logujemy się w panelu phpMyAdmin (http://localhost/phpmyadmin/)
  2. Z lewego panelu wybieramy bazę danych dla której chcemy stworzyć kopię.
    Panel phpMyAdmin - wybór bazy dancyh
    Panel phpMyAdmin – wybór bazy danych
    • Jeśli chcemy stworzyć kopię tylko jednej tabeli z wybranej bazy danych, to po wybraniu bazy, wybieramy z listy docelową tabelę.
  3. Wybieramy zakładkę Eksport z górnego panelu.
  4. Jeśli nie interesują nas dodatkowe ustawienia i chcemy skopiować całą zawartość, klikamy Wykonaj.
    Panel phpMyAdmin - eksport
    Panel phpMyAdmin – eksport
    • Możliwości ustawień eksportu jest dużo i warto się z nimi zapoznać. Z podstawowych możliwości, warto znać m.in. :
      • wybór tabel do eksportu
      • wybór zapisu struktury i danych, samej struktury, oraz samych danych
      • format w jakim chcemy zapisać kopię (poza zapytaniami SQL, mamy możliwość zapisu w wielu innych formatach, m.in. CSV, JSON, XML czy nawet jako tablice PHP).
      • i wiele innych
  5. Zależnie od wielkości naszej bazy danych, po pewnym czasie pojawi się okno z prośbą o zapisanie pliku lub zostanie zapisany automatycznie – kwestia ustawień przeglądarki.

Mamy już kopię bazy danych lub tabeli. Możemy teraz przystąpić do przywrócenia kopii na docelowym serwerze.

  1. Logujemy się w panelu phpMyAdmin (http://localhost/phpmyadmin/)
  2. Z lewego panelu klikamy Nowa. W otwartej zakładce podajemy dowolną nazwę dla naszej bazy danych oraz metodę porównywania napisów. Uwaga!! Tworzymy nową bazę tylko i wyłącznie w przypadku gdy chcemy przywrócić / przenieść całą bazę danych, w momencie kiedy chcemy zaktualizować strukturę tabel lub same dane, wybieramy istniejącą już bazę danych i przechodzimy do kolejnego etapu.

    Panel phpMyAdmin - nowa baza danych
    Panel phpMyAdmin – nowa baza danych
  3. Po utworzeniu nowej bazy, wybieramy zakładkę Import.
  4. W otwartej zakładce, w dziale Plik do importu klikamy na Wybierz plik i wybieramy utworzony uprzednio plik.
  5. Po wybraniu pliku, klikamy Wykonaj i czekamy aż proces zakończy się sukcesem.

    Panel phpMyAdmin - import
    Panel phpMyAdmin – import

W tym momencie przywróciliśmy kopię naszej bazy danych i możemy spokojnie kontynuować pracę.

Wiersz poleceń

Tak jak wspomniałem wcześniej, import / eksport za pomocą panelu phpMyAdmin jest ograniczony jeśli chodzi o rozmiar plików. Problem ten nie występuje w przypadku importu za pomocą wiersza poleceń. Kolejne etapy przedstawię na przykładzie pakietu XAMPP, ale sam proces eksportu / importu w innym środowisku wygląda praktycznie tak samo, musimy po prostu wszelkie operacje wykonywać z poziomu konsoli / wiersza poleceń. Jak go uruchomić, to zależy od oprogramowania z jakim pracujesz.

  1. Uruchamiamy panel kontrolny XAMPP i wybieramy narzędzie Shell.

    Panel kontrolny XAMPP - uruchamianie konsoli
    Panel kontrolny XAMPP – uruchamianie konsoli
  2. W celu wykonania kopii bazy danych, w otwartym oknie konsoli wpisujemy:

Mamy już zapisaną kopię bazy,  możemy przystąpić do importowania.

  1. Tak jak przy eksporcie, uruchamiamy panel kontrolny XAMPP i wybieramy narzędzie Shell.
  2. Logujemy się do bazy danych za pomocą komendy.

    • Po zatwierdzeniu system poprosi nas o hasło użytkownika.
  3. Tworzymy nową bazę – do niej zaimportujemy nasz plik. Tak jak w przypadku importu za pomocą phpMyAdmin, tak i tutaj pomijamy ten krok jeśli docelowa baza danych istnieje i chcemy tylko i wyłącznie zaktualizować jej tabele / dane.
  4. W  celu przywrócenia kopii bazy danych użyjemy polecenia:

Po odczekaniu chwili (im większa baza tym dłuższy czas wykonania), będziemy mieli zaktualizowaną bazę danych i możemy przystąpić do dalszych prac.

Podsumowanie

Przedstawiłem dwie możliwości na zarządzanie kopią bazy danych, ale tak jak wspomniałem wcześniej – w panelu phpMyAdmin możemy napotkać pewne ograniczenia. Plik nie może przekraczać standardowo 2MB (może być mniej lub więcej – zależy od ustawień serwera). Ustawienie to można zmienić na serwerze w pliku php.ini, ale z kolei dochodzi jeszcze kwestia wykonywania operacji przez skrypt, który też jest ograniczony za pomocą ustawień. Aby móc importować większe pliki musimy zmodyfikować parametry upload_max_filesizepost_max_sizememory_limit oraz max_execution_time. Najważniejsze oczywiście są tylko te dwa: upload_max_filesize max_execution_time, ale musimy pamiętać że post_max_size musi być większy od upload_max_file_size, a z kolei memory_limit musi być większy od post_max_size. Po zmodyfikowaniu tych parametrów, powinniśmy mieć możliwość importowania większych plików.

Modyfikacje tych parametrów nam nie zaszkodzą, ale jeśli nasza aplikacja internetowa nie potrzebuje zwiększonych limitów, to po zaimportowaniu bazy, warto wrócić do ustawień domyślnych.