Co to jest mysqldump i jak z niego korzystać?

Spisu treści:

Co to jest mysqldump i jak z niego korzystać?
Co to jest mysqldump i jak z niego korzystać?
Anonim

Jako jedna z wiodących bezpłatnych baz danych MySQL jest popularnym wyborem dla wielu aplikacji internetowych. Twoja aplikacja jest wystawiona na działanie Internetu i jest narażona na złośliwe ataki. Jeśli twój serwer jest zagrożony, w najlepszym razie musisz ponownie zainstalować aplikację; w najgorszym przypadku możesz stracić swoje dane. Ponadto możesz znaleźć się w sytuacji, w której będziesz musiał przeprowadzić migrację bazy danych z jednego serwera na drugi.

Do czego służy mysqldump?

Narzędzie mysqldump zapewnia ochronę zarówno w sytuacjach zagrożenia serwera, jak i migracji. Jego podstawową funkcją jest pobranie bazy danych MySQL i zrzucenie jej jako pliku tekstowego. Ale nie żaden plik tekstowy; plik jest zbiorem instrukcji SQL. Instrukcje te, po wykonaniu, rekonstruują bazę danych do dokładnego stanu, w jakim znajdowała się podczas wykonywania zrzutu.

Użyj mysqldump do tworzenia eksportów bazy danych jako kopii zapasowych lub podczas przenoszenia bazy danych na nowy host. W obu przypadkach plik tekstowy zostanie zaimportowany z powrotem do serwera bazy danych MySQL. Wykona wszystkie instrukcje SQL w pliku, co odbuduje bazę danych do jej pierwotnego stanu. Ta część nie używa polecenia mysqldump, ale nie byłoby to również możliwe bez tego narzędzia.

Dokumentacja MySQL zawiera listę innych metod tworzenia kopii zapasowych, ale mają one wady:

  • Kopiowanie bazy danych z MySQL Enterprise na gorąco to świetny sposób na wykonanie tych kopii zapasowych - jeśli nie przeszkadza Ci cena Enterprise.
  • Kopiowanie katalogów danych bazy danych może być trudne podczas przemieszczania się między systemami operacyjnymi, ponieważ miejsca docelowe będą różne.
  • Eksportowanie do rozdzielanego pliku tekstowego da ci zawartość, ale będziesz musiał odtworzyć strukturę.
  • Często można wykonać kopię zapasową baz danych z programów z graficznym interfejsem użytkownika, takich jak MySQL Workbench. Ale jest to proces ręczny; nie coś, co można napisać lub dołączyć do zadania wsadowego.

Zainstaluj narzędzie mysqldump

W systemie Windows zapoznaj się z naszymi instrukcjami, aby zainstalować MySQL w systemie Windows 7 (proces instalacji jest taki sam w systemie Windows 10). W systemie macOS zapoznaj się z naszymi wskazówkami dotyczącymi instalacji MySQL w systemie macOS 10.7 (ponownie, starszym, ale nadal mającym zastosowanie). Użytkownicy systemów Linux opartych na Ubuntu mogą użyć następującego polecenia, aby zainstalować klienta i narzędzia MySQL:

sudo apt install mysql-client

Wyodrębnij zrzut MySQL

Po zainstalowaniu użyj mysqldump, aby uzyskać pełną kopię zapasową bazy danych.

mysqldump -h [nazwa lub adres IP hosta bazy danych] -u [nazwa użytkownika bazy danych] -p [nazwa bazy danych] > db_backup.sql

Oto opis flag użytych w tym poleceniu:

  • - h: Ta flaga to host bazy danych. Może to być pełna nazwa hosta (na przykład mójhost.domena.com) lub adres IP. Pozostaw to pole puste, jeśli uruchamiasz polecenie na tym samym hoście, co serwer MySQL.
  • - u: Twoja nazwa użytkownika.
  • - p: Jeśli poprawnie zabezpieczyłeś instalację MySQL, będziesz potrzebować hasła do połączenia. Ta flaga bez argumentu monituje o hasło podczas wykonywania polecenia. Czasami przydatne jest podanie hasła bezpośrednio jako argumentu tej flagi, na przykład w skrypcie kopii zapasowej. Ale po wyświetleniu monitu nie powinieneś, ponieważ jeśli ktoś uzyska dostęp do twojego komputera, może uzyskać to hasło w historii poleceń.
  • > db_backup.sql: Ta część mówi mysqldump, aby skierował swoje wyjście do pliku. Zwykle polecenie wyświetla wszystko na konsoli, co oznacza, że na ekranie zobaczysz kilka instrukcji SQL. Symbol > kieruje dane wyjściowe do nazwanego pliku tekstowego. Jeśli ten plik nie istnieje, jest tworzony automatycznie.

Po zakończeniu otrzymasz plik. SQL. Jest to plik tekstowy zawierający instrukcje SQL. Możesz go otworzyć w dowolnym edytorze tekstu, aby sprawdzić zawartość. Oto eksport z bazy danych WordPress, który pokazuje, jak te pliki są połączone.

Image
Image

Plik jest podzielony na sekcje. Pierwsza sekcja przedstawia tabelę komentarzy WordPress. Druga sekcja odtwarza zawartość tych tabel (w tym przykładzie rekordy komentarzy). Po ponownym zaimportowaniu zrzutu MySQL polecenie działa na pliku, wykonuje instrukcje i odbudowuje bazę danych w takiej postaci, w jakiej była.

Importuj plik MySQL Dump

Zanim zaimportujesz plik zrzutu, będziesz potrzebować już utworzonej bazy danych oraz prawidłowej nazwy użytkownika i hasła. Powinieneś także mieć wszystkie uprawnienia do bazy danych. Nie potrzebujesz pozwolenia GRANT, ale łatwiej jest je wszystkie przyznać.

Dowiedz się więcej o uprawnieniach bazy danych, zanim zmienisz role zabezpieczeń w bazie danych.

Aby ponownie zaimportować dane, zaloguj się do serwera MySQL za pomocą polecenia mysql. Wpisz use [nazwa bazy danych] w wierszu polecenia i zastąp nazwę bazy danych. Wpisz source [nazwa pliku] i zastąp nazwę pliku zrzutu, który zrobiłeś wcześniej.

Kiedy skończysz, pojawi się lista komunikatów informujących o wykonywaniu instrukcji SQL. Miej oko na błędy, ale jeśli masz odpowiednie uprawnienia, powinno być dobrze.

Image
Image

Po zakończeniu procesu będziesz mieć duplikat oryginalnej bazy danych. Aby zweryfikować podobieństwo między bazami danych, wykonaj kolejny zrzut, a następnie porównaj dwa dane wyjściowe. Użyj edytora tekstu lub dedykowanego narzędzia do porównywania, aby porównać oba pliki.

Image
Image

Istnieją dwie różnice między tymi plikami, reprezentowane przez czerwone linie na górze i na dole prawego paska przewijania. Pierwszy to wiersz zawierający nazwę bazy danych, a ten jest inny, ponieważ pliki zostały inaczej nazwane. Drugi to sygnatura czasowa pliku zrzutu. Jest to inne, ponieważ druga baza danych została odtworzona po pierwszej. W przeciwnym razie pliki są dokładnie takie same, co oznacza, że bazy danych, które je wygenerowały, również są takie same.

FAQ

    Jak naprawić błąd mysqldump: Odmowa dostępu podczas korzystania z blokad tabel?

    Poproś administratora bazy danych o przyznanie Ci uprawnienia LOCK. Jeśli to nie rozwiąże problemu, spróbuj uruchomić to samo polecenie mysqldump, dodając flagę - -single-transaction, taką jak [ $ mysqldump --single-transaction] [-u użytkownik] [-p NAZWA DANYCH] > backup.sql

    Czy możesz użyć klauzuli "gdzie" z mysqldump?

    Użyj klauzuli WHERE podczas tworzenia kopii zapasowej zawierającej tylko wiersze spełniające dany warunek. Na przykład, aby zrzucić dane tylko z wierszy, których kolumna identyfikatora jest większa niż 100, wprowadź „mysqldump moja_nazwa_bazy_danych moja_nazwa_tabeli --where="id > 100" > moja_kopia zapasowa.sql”.

Zalecana: