15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
01.11.2024
4 +1

Importowanie i eksportowanie baz danych MySQL: Kompletny przewodnik

Efektywne zarządzanie bazami danych jest fundamentem każdej niezawodnej aplikacji internetowej. Niezależnie od tego, czy wykonujesz rutynowe kopie zapasowe, migrujesz dane między serwerami, czy konfigurujesz nowe środowisko, umiejętność importowania i eksportowania baz danych MySQL jest niezbędną umiejętnością dla każdego programisty i administratora systemu.

Ten kompleksowy przewodnik przeprowadzi Cię przez każdą metodę, polecenie i krok rozwiązywania problemów, które musisz znać, aby pewnie zarządzać bazami danych MySQL — od wiersza poleceń do phpMyAdmin.

Dlaczego operacje importu i eksportu MySQL są ważne

Eksport i import baz danych MySQL służą kilku krytycznym celom:

  • Kopie zapasowe i odzyskiwanie po awarii — ochrona danych przed przypadkowym usunięciem lub awarią serwera
  • Migracja serwera — przenoszenie baz danych między środowiskami hostingowymi bez utraty danych
  • Rozwój i staging — klonowanie produkcyjnych baz danych do celów testowych
  • Kontrola wersji — zrzut stanu bazy danych przed głównymi aktualizacjami aplikacji

Aby te operacje przebiegały sprawnie, infrastruktura hostingowa ma znaczenie. Środowisko VPS Hosting z pamięcią NVMe, pełnym dostępem root i wysoką przepustowością I/O zapewnia, że nawet duże zrzuty baz danych są wykonywane szybko i niezawodnie.

1. Wymagania wstępne: Co musisz mieć przed rozpoczęciem

Przed przystąpieniem do eksportu lub importu upewnij się, że masz następujące elementy:

  • Dostęp do serwera MySQL z wystarczającymi uprawnieniami użytkownika (SELECT, LOCK TABLES, SHOW VIEW, TRIGGER do eksportów; CREATE, INSERT, ALTER do importów)
  • Klient MySQL zainstalowany na lokalnym komputerze lub serwerze
  • Terminal lub klient SSH do operacji wiersza poleceń
  • phpMyAdmin (opcjonalnie) jeśli wolisz interfejs graficzny
  • Wystarczająca ilość miejsca na dysku dla pliku zrzutu .sql, szczególnie dla dużych baz danych

> Wskazówka pro: Jeśli zarządzasz wieloma bazami danych w różnych projektach, rozważ VPS z cPanel dla usprawnionego, opartego na GUI zarządzania bazami danych.

2. Eksportowanie bazy danych MySQL

Eksportowanie bazy danych MySQL generuje plik .sql zawierający kompletny schemat bazy danych (strukturę) i dane. Plik ten może być później użyty do przywrócenia lub migracji bazy danych.

Metoda 1: Korzystanie z wiersza poleceń MySQL (mysqldump)

Narzędzie mysqldump jest najbardziej niezawodnym i powszechnie używanym narzędziem do eksportowania baz danych MySQL. Działa bezpośrednio z terminala i obsługuje szeroki zakres opcji.

Krok 1: Otwórz terminal

Połącz się z serwerem za pośrednictwem SSH lub otwórz sesję terminala lokalnie.

Krok 2: Uruchom polecenie mysqldump

mysqldump -u username -p database_name > export_file.sql

Zastąp symbole zastępcze w następujący sposób:

Symbol zastępczyOpis
usernameTwoja nazwa użytkownika MySQL (np. root lub dedykowany użytkownik bazy danych)
database_nameNazwa bazy danych, którą chcesz wyeksportować
export_file.sqlŻądana nazwa i ścieżka pliku wyjściowego

Krok 3: Wprowadź hasło MySQL

Zostaniesz poproszony o wprowadzenie hasła. Eksport będzie kontynuowany natychmiast po uwierzytelnieniu.

Przykład:

mysqldump -u root -p my_wordpress_db > /home/backups/wordpress_backup_2024.sql

Przydatne flagi mysqldump:

# Export all databases
mysqldump -u root -p --all-databases > all_databases.sql

# Export only the database structure (no data)
mysqldump -u root -p --no-data database_name > structure_only.sql

# Compress the output on the fly
mysqldump -u root -p database_name | gzip > export_file.sql.gz

# Export specific tables only
mysqldump -u root -p database_name table1 table2 > partial_export.sql

Metoda 2: Eksportowanie za pośrednictwem phpMyAdmin

phpMyAdmin zapewnia przyjazny dla użytkownika interfejs graficzny do eksportowania baz danych, idealny dla tych, którzy wolą nie używać wiersza poleceń.

Krok 1: Zaloguj się do phpMyAdmin

Otwórz przeglądarkę i przejdź do instalacji phpMyAdmin (np. https://yourdomain.com/phpmyadmin).

Krok 2: Wybierz bazę danych

Na lewym pasku bocznym kliknij bazę danych, którą chcesz wyeksportować.

Krok 3: Przejdź do karty Eksport

Kliknij kartę Eksport w górnym menu nawigacji.

Krok 4: Wybierz metodę eksportu

  • Szybki — Eksportuje całą bazę danych z ustawieniami domyślnymi. Odpowiedni dla większości przypadków użycia.
  • Niestandardowy — Pozwala wybrać określone tabele, format wyjściowy, kompresję i dodatkowe opcje.

Krok 5: Wybierz format SQL

Upewnij się, że format jest ustawiony na SQL (domyślnie). Możesz również wybrać CSV, XML lub inne formaty w zależności od potrzeb.

Krok 6: Kliknij Przejdź

phpMyAdmin wygeneruje i pobierze plik .sql na lokalny komputer.

3. Importowanie bazy danych MySQL

Importowanie pliku .sql przywraca wcześniej wyeksportowaną bazę danych na serwer MySQL. Jest to standardowa metoda migracji, przywracania i wdrażania.

Metoda 1: Korzystanie z wiersza poleceń MySQL

Krok 1: Upewnij się, że docelowa baza danych istnieje

Przed importem docelowa baza danych musi już istnieć. Jeśli jej nie ma, utwórz ją:

mysql -u root -p -e "CREATE DATABASE new_database_name;"

Krok 2: Uruchom polecenie importu

mysql -u username -p database_name < import_file.sql

Zastąp symbole zastępcze:

Symbol zastępczyOpis
usernameTwoja nazwa użytkownika MySQL
database_nameDocelowa baza danych do importu
import_file.sqlŚcieżka do pliku .sql

Przykład:

mysql -u root -p my_wordpress_db < /home/backups/wordpress_backup_2024.sql

Importowanie skompresowanego pliku:

gunzip < export_file.sql.gz | mysql -u root -p database_name

Krok 3: Zweryfikuj import

Po zakończeniu polecenia zaloguj się do MySQL i zweryfikuj dane:

mysql -u root -p
USE database_name;
SHOW TABLES;

Metoda 2: Importowanie za pośrednictwem phpMyAdmin

Krok 1: Zaloguj się do phpMyAdmin

Otwórz phpMyAdmin w przeglądarce.

Krok 2: Wybierz lub utwórz docelową bazę danych

  • Jeśli baza danych już istnieje, kliknij ją na lewym pasku bocznym.
  • Jeśli nie, kliknij Bazy danych w górnym menu, wprowadź nową nazwę bazy danych i kliknij Utwórz.

Krok 3: Przejdź do karty Import

Kliknij kartę Import w górnym menu nawigacji.

Krok 4: Wybierz plik

Kliknij Wybierz plik i wybierz plik .sql z lokalnego komputera.

Krok 5: Skonfiguruj ustawienia importu

  • Zestaw znaków: Upewnij się, że odpowiada kodowaniu bazy danych (zwykle utf8mb4)
  • Import częściowy: Przydatny do wznowienia przerwanych importów
  • Format: Powinien być automatycznie ustawiony na SQL

Krok 6: Kliknij Przejdź

phpMyAdmin rozpocznie proces importu. Czekaj na zielony komunikat potwierdzenia sukcesu przed zamknięciem karty.

> Uwaga: phpMyAdmin ma domyślny limit rozmiaru przesyłanego pliku (zwykle 2MB–128MB). W przypadku większych baz danych użyj metody wiersza poleceń lub dostosuj ustawienia PHP, jak opisano w sekcji rozwiązywania problemów poniżej.

4. Zaawansowane techniki eksportu i importu

Automatyzacja kopii zapasowych MySQL za pomocą zadań Cron

W środowiskach produkcyjnych ręczne eksporty nie wystarczają. Zautomatyzuj kopie zapasowe bazy danych za pomocą zadania cron:

# Open the crontab editor
crontab -e

# Add this line to run a daily backup at 2:00 AM
0 2 * * * mysqldump -u root -pYourPassword database_name | gzip > /backups/db_$(date +%F).sql.gz

Gwarantuje to, że zawsze masz niedawną kopię zapasową bez ręcznej interwencji.

Migracja baz danych między serwerami

Aby migrować bazę danych bezpośrednio z jednego serwera na drugi bez tworzenia pliku pośredniego:

mysqldump -u root -p database_name | ssh user@remote_server "mysql -u root -p remote_database"

Potok ten wysyła wyjście zrzutu bezpośrednio przez SSH do zdalnej instancji MySQL — efektywnie i szybko w środowisku VPS Hosting o wysokiej przepustowości.

Obsługa dużych baz danych

W przypadku baz danych przekraczających kilka gigabajtów rozważ te optymalizacje:

# Use single-transaction for InnoDB tables (avoids table locks)
mysqldump --single-transaction -u root -p database_name > export.sql

# Disable foreign key checks during import for speed
mysql -u root -p database_name -e "SET foreign_key_checks = 0;"
mysql -u root -p database_name < import_file.sql
mysql -u root -p database_name -e "SET foreign_key_checks = 1;"

5. Rozwiązywanie typowych błędów importu/eksportu MySQL

Błąd 1049: Nieznana baza danych

ERROR 1049 (42000): Unknown database 'database_name'

Przyczyna: Docelowa baza danych nie istnieje.

Rozwiązanie: Utwórz bazę danych przed importem:

mysql -u root -p -e "CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

Błąd 2002: Nie można połączyć się z serwerem MySQL

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

Przyczyna: Usługa MySQL nie jest uruchomiona lub ścieżka gniazda jest nieprawidłowa.

Rozwiązanie: Sprawdź i uruchom ponownie usługę MySQL:

# Check MySQL status
sudo systemctl status mysql

# Start MySQL if it's stopped
sudo systemctl start mysql

# For MariaDB
sudo systemctl start mariadb

Błąd 1044: Dostęp zabroniony

ERROR 1044 (42000): Access denied for user 'username'@'localhost' to database 'database_name'

Przyczyna: Użytkownik MySQL nie ma wystarczających uprawnień.

Rozwiązanie: Przyznaj niezbędne uprawnienia:

mysql -u root -p
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

Limit rozmiaru pliku phpMyAdmin przekroczony

Przyczyna: Plik .sql przekracza limit przesyłania phpMyAdmin.

Rozwiązanie: Edytuj plik konfiguracji PHP (php.ini):

upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 600
memory_limit = 512M

Po zapisaniu uruchom ponownie serwer internetowy:

sudo systemctl restart apache2
# or
sudo systemctl restart nginx

Alternatywnie przełącz się na metodę importu wiersza poleceń, która nie ma ograniczeń rozmiaru pliku.

Import zatrzymuje się w połowie (Timeout)

Przyczyna: Duże importy przekraczają limity timeout PHP lub MySQL.

Rozwiązanie: Użyj wiersza poleceń dla dużych plików lub zwiększ timeout MySQL:

SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;

6. Najlepsze praktyki bezpieczeństwa dla eksportów i importów MySQL

Ochrona zrzutów bazy danych jest równie ważna jak ich tworzenie. Postępuj zgodnie z tymi najlepszymi praktykami:

  • Szyfruj wrażliwe zrzuty — Użyj GPG do szyfrowania wyeksportowanych plików przed przechowywaniem lub transferem:
  gpg --symmetric --cipher-algo AES256 export_file.sql
  • Ogranicz uprawnienia do pliku — Upewnij się, że pliki zrzutu nie są czytelne dla wszystkich:
  chmod 600 export_file.sql
  • Użyj dedykowanych użytkowników MySQL — Unikaj używania root do rutynowych eksportów. Utwórz użytkownika kopii zapasowej z minimalnymi wymaganymi uprawnieniami.
  • Przechowuj kopie zapasowe poza serwerem — Prześlij zrzuty do zdalnej lokalizacji lub magazynu obiektów
15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij