Jak przywrócić plik zrzutu z mysqldump?


542

Dostałem plik bazy danych MySQL, który muszę przywrócić jako bazę danych na moim komputerze z systemem Windows Server 2008.

Próbowałem użyć MySQL Administrator, ale dostałem następujący błąd:

Wybrany plik został wygenerowany przez mysqldump i nie może zostać przywrócony przez tę aplikację.

Jak mogę to uruchomić?

Odpowiedzi:


586

Powinno to być tak proste, jak uruchomienie tego:

mysql -u <user> -p < db_backup.dump

Jeśli zrzut dotyczy pojedynczej bazy danych, może być konieczne dodanie wiersza u góry pliku:

USE <database-name-here>;

Jeśli był to zrzut wielu baz danych, instrukcje użycia już tam są.

Aby uruchomić te polecenia, otwórz wiersz polecenia (w systemie Windows) i cddo katalogu, w którym mysql.exeznajduje się plik wykonywalny (być może będziesz musiał się trochę rozejrzeć, zależy to od sposobu zainstalowania mysql, tj. Samodzielnego lub jako część pakiet taki jak WAMP). Gdy znajdziesz się w tym katalogu, powinieneś być w stanie po prostu wpisać polecenie tak, jak mam to powyżej.


1
Czy używam „MySQL Command Line Client”? Nigdy wcześniej nie korzystałem z MySQL.
Zack Peterson

1
Otwórz plik zrzutu w edytorze tekstów, dość łatwo jest go przejrzeć, jeśli są jakieś „używające” instrukcje, to w wielu bazach danych, jeśli nie ma, musisz dodać jeden na górze, zanim będziesz mógł uruchom to polecenie.
Justin Bennett,

6
Oczywiście baza danych, którą umieścisz w instrukcji „using”, będzie musiała istnieć jako pierwsza.
Justin Bennett,

112
zobacz odpowiedź vogsa. Składnia mysql -u<user> -p mydatabasename < db_backup.dump nie wymaga USEinstrukcji na początku pliku
Toskan

1
Sugestia „Otwórz plik zrzutu w edytorze tekstu” wydaje się dziwna. Może to działać z małymi bazami danych lub edytorem buforowanym tekstem, takim jak EditPad, ale ze wszystkimi innymi zadławi się. Byłoby miło, gdybyś nie musiał robić tego kroku.
mikato

718

Jeśli baza danych, którą chcesz przywrócić, jeszcze nie istnieje, musisz ją najpierw utworzyć.

W wierszu polecenia, jeśli jesteś w tym samym katalogu, w którym znajduje się zrzut pliku, użyj tych poleceń (z odpowiednimi podstawieniami):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

52
osobiście podoba mi się ta metoda. pokazuje postęp zrzutu, a także dokładnie ile czasu zajmuje różna sql.
ToughPal

11
@Phrogz Właściwie możesz podać hasło w wierszu poleceń mysql -u root -psecret bez spacji, ale ma to tę wadę, że twoje hasło pojawia się w postaci czystego tekstu na listach procesów i plikach dziennika. Lepiej, jak sugerujesz, użyć pustego -pi wpisz go w wierszu polecenia.
Joe Holloway,

Zaletą tej metody jest ustawienie zmiennych opartych na sesji (np. FOREIGN_KEY_CHECKS) bez konieczności edytowania pliku zrzutu
Chris Cooper

to wszystko dobrze i świetnie, gdy robisz tego rodzaju rzeczy ręcznie, ale nie działa ze skryptu bash.
chacham15

1
Jedna wada: nie można załadować skompresowanego zrzutu (np. Wygenerowanego z mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos An

246

Musisz po prostu uruchomić to:

mysql -p -u[user] [database] < db_backup.dump

Jeśli zrzut zawiera wiele baz danych, należy pominąć nazwę bazy danych:

mysql -p -u[user] < db_backup.dump

Aby uruchomić te polecenia, otwórz wiersz polecenia (w systemie Windows) i cddo katalogu, w którym mysql.exeznajduje się plik wykonywalny (być może będziesz musiał się trochę rozejrzeć, zależy to od sposobu zainstalowania mysql, tj. Samodzielnego lub jako część pakiet taki jak WAMP). Gdy znajdziesz się w tym katalogu, możesz po prostu wpisać polecenie.


60
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

spójrz tutaj - krok 3 : w ten sposób nie potrzebujesz instrukcji USE


33

Kiedy tworzymy plik zrzutu mysqldump, zawiera on duży skrypt SQL do odtwarzania zawartości bazy danych. Więc przywracamy go za pomocą uruchamiania klienta wiersza poleceń MySQL:

mysql -uroot -p 

(gdzie rootjest nasza nazwa administratora dla MySQL), a po połączeniu z bazą danych potrzebujemy poleceń, aby utworzyć bazę danych i wczytać do niej plik:

create database new_db;
use new_db;
\. dumpfile.sql

Szczegóły będą się różnić w zależności od opcji użytych podczas tworzenia pliku zrzutu.


19

Uruchom polecenie, aby wejść do bazy danych

 # mysql -u root -p 

Wprowadź hasło dla użytkownika Następnie utwórz nową bazę danych

mysql> create database MynewDB;
mysql> exit

I wyjdź, po czym uruchom komendę

# mysql -u root -p  MynewDB < MynewDB.sql

Następnie wprowadź db i wpisz

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit

To wszystko ... Twój zrzut zostanie przywrócony z jednego DB na inny DB

Albo istnieje alternatywny sposób przywracania zrzutu

# mysql -u root -p 

Następnie wprowadź db i wpisz

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit

14

Mam do pracy, wykonując następujące kroki…

  1. Otwórz MySQL Administrator i połącz się z serwerem

  2. Wybierz „Katalogi” po lewej stronie

  3. Kliknij prawym przyciskiem myszy w lewym dolnym polu i wybierz „Utwórz nowy schemat”

    Administrator MySQL http://img204.imageshack.us/img204/7528/adminsx9.th.gif powiększ zdjęcie

  4. Nazwij nowy schemat (przykład: „dbn”)

    Nowy schemat MySQL http://img262.imageshack.us/img262/4374/newwa4.th.gif powiększ zdjęcie

  5. Otwórz wiersz polecenia systemu Windows (cmd)

    Wiersz polecenia systemu Windows http://img206.imageshack.us/img206/941/startef7.th.gif powiększ zdjęcie

  6. Zmień katalog na folder instalacyjny MySQL

  7. Wykonaj polecenie:

    mysql -u root -p dbn < C:\dbn_20080912.dump

    … Gdzie „root” to nazwa użytkownika, „dbn” to nazwa bazy danych, a „C: \ dbn_20080912.dump” to ścieżka / nazwa pliku zrzutu. Mysqldump

    Wiersz polecenia przywracania zrzutu MySQL http://img388.imageshack.us/img388/2489/cmdjx0.th.gif powiększ zdjęcie

  8. Cieszyć się!



11

Jeśli chcesz zobaczyć postęp zrzutu, spróbuj:

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

Oczywiście będziesz potrzebować zainstalowanego „pv”. To polecenie działa tylko na * nix.


10

Jako konkretny przykład poprzedniej odpowiedzi:

Musiałem przywrócić kopię zapasową, aby móc ją importować / migrować do programu SQL Server. Zainstalowałem tylko MySql, ale nie zarejestrowałem go jako usługi ani nie dodałem go do mojej ścieżki, ponieważ nie muszę go utrzymywać.

Użyłem Eksploratora Windows, aby umieścić plik zrzutu w C: \ code \ dump.sql. Następnie otworzyłem MySql z pozycji menu Start. Utworzono bazę danych, a następnie uruchomiono komendę źródłową z pełną ścieżką:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql

9

Korzystając z pliku zrzutu 200 MB utworzonego w systemie Linux w celu przywrócenia w systemie Windows w / mysql 5.5, miałem większy sukces z

source file.sql

podejście z wiersza polecenia mysql niż z

mysql  < file.sql

podejście w wierszu poleceń, które spowodowało błąd „serwer zniknął” 2006 (w systemie Windows)

Co dziwne, usługa utworzona podczas instalacji (mysql) odnosi się do pliku my.ini, który nie istniał. Skopiowałem „duży” przykładowy plik do pliku my.ini, który już zmodyfikowałem zgodnie z zalecanymi wzrostami.

Moje wartości to

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

9
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file

To jest to samo, co kilka innych odpowiedzi, i to jest ośmioletnie pytanie.
miken32

2
Chociaż wybrana odpowiedź jest bardzo dobra, ta odpowiedź była dla mnie bardziej przydatna. Mój plik bazy danych był OGROMNY, a otwarcie go w Notepad ++ było koszmarem, po prostu nie było w stanie poradzić sobie z rozmiarem i nie pozwoliło mi dodać nazwy bazy danych na początku pliku sql. W takim przypadku możliwość podania nazwy db z wiersza poleceń jest w rzeczywistości bardziej pomocna.
Najeeb,

mysqlKomenda nie akceptuje przestrzenie pomiędzy opcjami i ich argumentami. Musi być -u<username>, a hasło w ogóle nie powinno być podawane w wierszu poleceń.
Roland Illig

4

Nie można użyć menu Przywróć w MySQL Admin, jeśli nie utworzono kopii zapasowej / zrzutu. Warto jednak spróbować. Jeśli zdecydujesz się „zignorować błędy” za pomocą tego pola wyboru, powiesz, że zakończyło się pomyślnie, chociaż wyraźnie wychodzi z tylko ułamka zaimportowanych wierszy ... to jest zrzut, pamiętaj.


2

Polecenie jednoliniowe, aby przywrócić wygenerowany kod SQL mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"

1
np.mysql -u root -p12345678 -e "source /tmp/backup.sql;"
Jossef Harush

Nie używaj takiego hasła, po prostu użyj -p, a wiersz polecenia wyświetli monit o bezpieczne hasło po naciśnięciu klawisza enter.
user2473015

Jeśli możesz sobie pozwolić na interaktywny monit, masz rację. Jeśli nie możesz (np. Skrypt nienadzorowany), prawdopodobnie użyjesz go wbudowanego
Jossef Harush

1

Możesz także użyć menu przywracania w MySQL Administrator. Musisz tylko otworzyć plik kopii zapasowej, a następnie kliknąć przycisk przywracania.


0

Jak przywrócić bazę danych MySQL za pomocą MySQLWorkbench

Możesz uruchomić upuszczanie i tworzyć polecenia w zakładce zapytania.

Upuść schemat, jeśli obecnie istnieje

DROP DATABASE `your_db_name`;

Utwórz nowy schemat

CREATE SCHEMA `your_db_name`;

Otwórz plik zrzutu

MySQLWorkbench otwórz plik sql

  1. Kliknij ikonę Otwórz skrypt SQL w nowej karcie zapytania i wybierz plik zrzutu db.
  2. Następnie kliknij Uruchom skrypt SQL ...
  3. Pozwoli to wyświetlić podgląd pierwszych wierszy skryptu zrzutu SQL.
  4. Następnie wybierz domyślną nazwę schematu
  5. Następnie wybierz domyślny zestaw znaków utf8 jest zwykle bezpiecznym zakładem, ale możesz go rozpoznać po spojrzeniu na linie podglądu czegoś takiego jak zestaw znaków .
  6. Kliknij Uruchom
  7. Zachowaj cierpliwość w przypadku dużych skryptów przywracania DB i obserwuj, jak miejsce na dysku topnieje! 🎉

0

Zakładając, że masz już utworzoną pustą bazę danych, możesz również przywrócić bazę danych z wiersza poleceń w następujący sposób:

sudo mysql databasename < backup.sql
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.