Poradniki > Jak eksportować i importować duże bazy danych MySQL na Linuksie

Jak eksportować i importować duże bazy danych MySQL na Linuksie

Zobacz poradnik tutaj

Opublikowany: 21 lipca 2020

Database Linux

Wstęp

W przypadku baz danych MySQL może zaistnieć potrzeba uniknięcia utraty danych, zwłaszcza w przypadku dużej bazy danych.

Aby wyeksportować te informacje, użyj polecenia „dump”, aby zachować kopię danych w pliku kopii zapasowej. Ten plik kopii zapasowej można wykorzystać do przywrócenia bazy danych w przypadku awarii urządzenia lub do przeniesienia tych samych danych z jednego komputera na inny.

W tym samouczku dowiesz się, jak eksportować duże bazy danych MySQL (lub MariaDB) i jak importować je do innej struktury danych.

Wymagania

Aby wykonać tę operację, trzy warunki muszą zostać wpierw spełnione:

  • Możliwość dostępu (bezpośrednio lub przez SSH) do serwera Linux, na którym jest zainstalowany MySQL (lub MariaDB);
  • Znajomość nazwy bazy danych do wyeksportowania;
  • Posiadanie danych dostępu do tej bazy danych (jeśli są dostępne).
Aby rozpocząć, połącz się ze swoim serwerem przez połączenie SSH. Jeśli jeszcze tego nie zrobiłeś, skorzystaj z naszego przewodnika, aby bezpiecznie połączyć się za pomocą protokołu SSH. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal swojego serwera.

Eksportowanie bazy danych

Zarówno MySQL, jak i MariaDB nie posiadają narzędzia, które umożliwia bezpośrednie wykonanie kopii bazy danych. W związku z tym pobierz bazę danych, wykonując „zrzut” bazy danych. Operacja „dump” bazy danych umożliwia zapisanie całej zawartości tabel w pliku .SQL.

Właśnie dlatego, że plik zrzutu może zająć dużo miejsca na dysku, biorąc pod uwagę ilość zapisywanych danych, dobrą praktyką jest kompresowanie jego zawartości w archiwum zip.

Następnie przejdź do folderu, w którym chcesz zapisać bazę danych:

$ cd /path/twoj_folder

Uwaga: Zastąp „/ path / twoj_folder” ścieżką do swojego folderu..

Then, type the following command to start exporting your database:

$ mysqldump -u nazwa_uzytkownika -p moja_baza_danych | gzip > backup.sql.gz

W ten sposób zostanie użyty klient „mysqldump”. Klient „mysqldump” wyodrębni dane przechowywane w bazie danych.

Uwaga: W instrukcji upewnij się, że zastąpiłeś pole „nazwa_uzytkownika” nazwą użytkownika, który ma dostęp do tej bazy danych, „moja_baza_danych” nazwą bazy danych do wyeksportowania, a „backup” nazwą, z którą ma być skojarzony plik kopii zapasowej. Zalecane jest dodanie daty wykonania kopii zapasowej w nazwie pliku kopii zapasowej.

Po wykonaniu polecenia zostaniesz poproszony o podanie hasła dostępu do MySQL (lub MariaDB) podanego dla wskazanego użytkownika. Operacja może zająć więcej lub mniej czasu w zależności od ilości informacji do wyeksportowania.

Po zakończeniu operacji wszystkie dane zostaną wyeksportowane do archiwum „backup.sql.gz”.

Imortowanie bazy danych

Aby zaimportować wcześniej zapisaną bazę danych, rozpakuj archiwum. Podobnie jak poprzednio przejdź do ścieżki, w której zamierzasz wypakować archiwum i wpisz:

$ gzip -d backup.sql.gz

Uwaga: W przypadku zastąpienia „backup” inną nazwą, upewnij się, że zmieniłeś ją, aby wskazać poprawne archiwum.

W tym momencie wystarczy wejść do MySQL (lub MariaDB), utworzyć nową bazę danych i zaimportować jej zawartość. Następnie wpisz:

$ mysql -u user -p

Uwaga: Zastąp pole „user” nazwą użytkownika upoważnionego do dostępu do powłoki i posiadającego uprawnienia do tworzenia nowej bazy danych. Alternatywnie zaloguj się jako root (jeśli jest to dozwolone) przez:

sudo mysql

Teraz, gdy jesteś w powłoce, zacznij tworzyć nową bazę danych, do której zaimportujesz dane. Następnie wpisz:

> CREATE DATABASE restored_db;

To polecenie utworzy bazę danych „restored_db”: zastąp ją dowolną nazwą. Jednak żadna inna baza danych o tej nazwie nie powinna istnieć. W takim przypadku zostałby odebrany komunikat o błędzie i cała operacja powinna zostać powtórzona, podając nową nazwę.

Aby sprawdzić, które bazy danych są już obecne, użyj:

> SHOW DATABASES;
Teraz ustaw w MySQL (lub MariaDB), aby wszystkie przyszłe operacje musiały być wykonywane w tej bazie danych.
> USE restored_db;

Na koniec zaimportuj dane przez:

> SOURCE /path/file.sql;
Import Backup

Uwaga: zastąp „/path/file.sql” dokładną ścieżką wyodrębnionego pliku.

Sprawdź, czy dane zostały poprawnie skopiowane, używając następujących poleceń:

> USE stara_baza;
> SHOW TABLES
> USE nowa_baza;
> SHOW TABLES

Uwaga: Zastąp odpowiednio „stara_baza” i „nowa_baza” nazwą źródłowej i docelowej bazy danych.

Zwróć uwagę, że bez ręcznego importowania wszystkich tabel, tabele są obecne zarówno w starej, jak i nowej bazie danych. 

Podsumowanie

Jeśli wykonałeś wszystkie kroki tego przewodnika, nauczyłeś się, jak prawidłowo wykonać kopię zapasową bazy danych MySQL i zaimportować ją do nowej struktury danych.

Dobrą zasadą jest regularne wykonywanie tego typu kopii zapasowych, aby nie ryzykować utraty ważnych danych. W takim przypadku można wykorzystać potencjał Crona, narzędzia wspomnianego w poradniku zarządzanie zaplanowanymi operacjami za pomocą Crontab.