Importowanie i eksportowanie baz danych w MySQL za pomocą wiersza poleceń
Zarządzanie kopiami zapasowymi i migracjami baz danych jest niezbędnym zadaniem dla każdego administratora baz danych MySQL. Korzystając z wiersza poleceń, można łatwo eksportować bazy danych do plików kopii zapasowych lub importować je do nowego środowiska. Ten przewodnik opisuje, jak importować i eksportować bazy danych w MySQL za pomocą wiersza poleceń.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że:
- MySQL jest zainstalowany i uruchomiony na serwerze lub komputerze lokalnym.
- Masz dostęp do terminala lub wiersza poleceń.
- Posiadasz niezbędne dane uwierzytelniające MySQL, w tym nazwę użytkownika i hasło.
Eksportowanie baz danych za pomocą mysqldump
Narzędzie mysqldump jest standardowym narzędziem do eksportowania baz danych w MySQL. Tworzy plik .sql, który zawiera instrukcje SQL potrzebne do odtworzenia bazy danych.
1. Eksport pojedynczej bazy danych
Aby wyeksportować pojedynczą bazę danych, należy użyć następującej składni:
mysqldump -u [nazwa_użytkownika] -p [nazwa_bazy_danych] > [nazwa_pliku].sql
- -u [nazwa_użytkownika]: Nazwa użytkownika MySQL.
- -p: Pyta o hasło MySQL.
- [database_name]: Nazwa bazy danych, którą chcesz wyeksportować.
- [nazwa_pliku].sql: Nazwa pliku wyjściowego, który będzie zawierał kopię zapasową bazy danych.
Przykład:
To polecenie wyświetli monit o hasło użytkownika root i utworzy plik o nazwie mydatabase_backup.sql zawierający wszystkie dane i strukturę mydatabase.
2. Eksportowanie wielu baz danych
Aby wyeksportować wiele baz danych, należy użyć flagi –databases, a następnie nazw baz danych:
mysqldump -u [username] -p --databases [database1] [database2] > [nazwa_pliku].sql
Przykład:
mysqldump -u root -p --databases db1 db2 > multiple_databases_backup.sql
To polecenie wyeksportuje zarówno db1, jak i db2 do pliku multiple_databases_backup.sql.
3. Eksport wszystkich baz danych
Aby wyeksportować wszystkie bazy danych na serwerze MySQL, użyj flagi –all-databases:
mysqldump -u [username] -p --all-databases > all_databases_backup.sql
Przykład:
mysqldump -u root -p --all-databases > all_databases_backup.sql
Spowoduje to utworzenie pełnej kopii zapasowej wszystkich baz danych w pliku all_databases_backup.sql.
4. Eksport tylko struktury tabeli (bez danych)
Jeśli potrzebujesz tylko struktury tabel bez danych, dodaj flagę –no-data:
mysqldump -u [nazwa_użytkownika] -p --no-data [nazwa_bazy_danych] > structure_only.sql
Przykład:
mysqldump -u root -p --no-data mydatabase > structure_only.sql
5. Eksportowanie określonych tabel
Aby wyeksportować określone tabele z bazy danych, wymień je po nazwie bazy danych:
mysqldump -u [nazwa_użytkownika] -p [nazwa_bazy_danych] [tabela1] [tabela2] > [nazwa_pliku].sql
Przykład:
mysqldump -u root -p mydatabase table1 table2 > tables_backup.sql
Importowanie baz danych za pomocą mysql
Aby zaimportować bazę danych z pliku SQL, należy użyć polecenia mysql.
1. Import pojedynczej bazy danych
Aby zaimportować plik SQL do bazy danych MySQL, użyj następującego polecenia:
mysql -u [ nazwa_użytkownika ] -p [nazwa_bazy_danych] < [nazwa_pliku].sql
- -u [nazwa_użytkownika]: Nazwa użytkownika MySQL.
- -p: Pyta o hasło MySQL.
- [database_name]: Nazwa bazy danych, do której zostaną zaimportowane dane.
- [nazwa_pliku].sql: Nazwa pliku .sql do zaimportowania.
Przykład:
mysql -u root -p mydatabase < mydatabase_backup.sql
To polecenie wyświetli monit o hasło użytkownika root i zaimportuje zawartość pliku mydatabase_backup.sql do mydatabase.
2. Import do nowej bazy danych
Jeśli chcesz zaimportować dane do nowej bazy danych, musisz najpierw utworzyć bazę danych, a następnie zaimportować plik .sql.
Krok 1: Utwórz nową bazę danych.
mysql -u [username] -p -e "CREATE DATABASE [new_database_name];"
Krok 2: Zaimportuj plik .sql do nowej bazy danych.
mysql -u [nazwa_użytkownika] -p [nowa_nazwa_bazy_danych] < [nazwa_pliku].sql
Przykład:
mysql -u root -p -e "CREATE DATABASE newdatabase;"
mysql -u root -p newdatabase < mydatabase_backup.sql
3. Importowanie wszystkich baz danych
Jeśli kopia zapasowa wszystkich baz danych została utworzona przy użyciu opcji –all-databases, można zaimportować je z powrotem przy użyciu tej opcji:
mysql -u [nazwa_użytkownika] -p < all_databases_backup.sql
Przykład:
mysql -u root -p < all_databases_backup.sql
To polecenie przywróci wszystkie bazy danych zawarte w pliku all_databases_backup.sql.
Wskazówki dotyczące korzystania z mysqldump i mysql
- Użyj kompresji: Aby zaoszczędzić miejsce na dysku i czas transferu, można skompresować plik kopii zapasowej za pomocą gzip:
mysqldump -u root -p mydatabase | gzip > mydatabase_backup.sql.gz
I zaimportować go:
gunzip < mydatabase_backup.sql.gz | mysql -u root -p mydatabase
- Weryfikacja bazy danych przed importem: Upewnij się, że baza danych, do której importujesz, jest pusta lub zawiera kompatybilne dane, aby uniknąć konfliktów.
- Sprawdź zestaw znaków: Jeśli masz do czynienia ze znakami innymi niż ASCII, upewnij się, że eksportujesz i importujesz z prawidłowym zestawem znaków za pomocą opcji –default-character-set:
mysqldump -u root -p --default-character-set=utf8 mydatabase > mydatabase_backup.sql
- Obsługa błędów: Jeśli napotkasz błędy podczas importu, sprawdź typowe problemy, takie jak brakujące bazy danych lub struktury tabel i upewnij się, że plik .sql jest kompletny.
Podsumowanie
Eksportowanie i importowanie baz danych MySQL za pomocą wiersza poleceń jest proste dzięki mysqldump i mysql. Narzędzia te pozwalają na elastyczność w zarządzaniu kopiami zapasowymi, migracji baz danych między serwerami i tworzeniu eksportów tylko struktury lub danych. Rozumiejąc polecenia i ich opcje, można zapewnić płynne operacje na bazach danych i zachować integralność danych podczas transferów.