MySQL Dump oraz MySQL Import dla dużych zbiorów danych

Przydatne rozwiązanie na tworzenie zrzutu dużego zbioru danych z bazy MySQL oraz przywracanie go za pomocą wbudowanego narzędzia mysqldump oraz mysql.

W większości projektów w których mam przyjemność pracować, wykorzystywana jest relacyjna baza danych MySQL. Niektóre z baz osiągają rozmiary kilku GB i odtwarzanie ich stanu na lokalnym środowisku wymaga pewnej gimnastyki. Narzędzia GUI wspierające zarządzanie bazą danych oferują importowanie oraz eksportowanie jej zawartości. Jednak zaimplementowane mechanizmy (m.in. narzędzie MySQL Dump) niejednokrotnie nie potrafią poradzić sobie z dużym rozmiarem przetwarzanych danych.

Eksport takich baz danych realizuję za pomocą dostarczanego z MySQL narzędzia MySQL Dump. Import natomiast oparty jest o przełączenie standardowego wejścia (stdin) na sczytanie danych z pliku. Idealnie radzi sobie z tym po prostu konsolowa aplikacja MySQL.

Poniżej zamieszczam kilka najczęściej używanych poleceń obsługujących import oraz eksport poszczególnych baz danych jak i również wybranych tabel.

Tworzenie zrzutu bazy danych – MySQL Dump

Dla wybranej/wybranych bazy danych:

Dla wszystkich baz danych użytkownika:

Dla wybranej tabeli w bazie danych:

Przywracanie zrzutu bazy danych – MySQL Import

Dla wszystkich baz danych użytkownika:

Dla wybranej bazy danych:

lub:

Należy pamiętać, że operacja ta zadziała tylko jeśli wskazana baza danych została wcześniej stworzona.

Problemy

Podczas eksportu danych, często natrafiam na problem zablokowanej tabeli. Jego rozwiązanie zamieszczam poniżej.

Error 1016 „LOCK TABLES” – Podczas eksportowania bazy danych do pliku

Komunikat:

Error: MySQL - mysqldump: Got error: 1016: Can't open file: './exampledb/xxx.frm' (errno: 24) when using LOCK TABLES

Rozwiązanie:

Należy dodać parametr --lock-tables=false do uruchamianego polecenia mysqldump.

Na co dzień Software Engineer. Fascynat programowania, architektury, metodyk zwinnych i dobrych praktyk w szerokim ujęciu. Polyglot Programer kochający poznawać nowe języki jednocześnie wykorzystując ich najlepsze strony. Założyciel DevEnv i współautor podcastu Dev:Cast. After Hours czyli gdy nie pracuje i nie robi czegoś na DevEnv - podróżnik w miejsca zapomniane, pasjonat lokalnej historii. Mocno zajarany survivalem, urbexem i militariami. Jest jednym z opiekunów schronu bojowego WAWOK w Rybniku.
PODZIEL SIĘ