Pobieranie zrzutu MySQL z wiersza poleceń

306

Odchodzę od Linode, ponieważ nie mam niezbędnych umiejętności sysadmin w Linuksie; zanim zakończę przejście do bardziej przyjaznej noob usługi, muszę pobrać zawartość bazy danych MySQL. Czy mogę to zrobić z wiersza poleceń?

Phillip Copley
źródło
mysqldump jest tym, czego szukasz.
Faruk Sahin
1
@AZinkey Myślę, że znajdziesz zaakceptowaną odpowiedź tego posta i wkleisz treść mojej odpowiedzi (słowo w słowo) do pierwszej części odpowiedzi kilka miesięcy później ...
nickhar

Odpowiedzi:

656

Można to zrobić za pomocą funkcji wiersza polecenia mysqldump .

Na przykład:

Jeśli jest to cała baza danych, to:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

Jeśli to wszystko DB, to:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

Jeśli są to określone tabele w bazie danych, to:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

Możesz nawet posunąć się do automatycznej kompresji danych wyjściowych za pomocą gzip (jeśli twój DB jest bardzo duży):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

Jeśli chcesz to zrobić zdalnie i masz dostęp do danego serwera, to działałyby następujące czynności (zakładając, że serwer MySQL znajduje się na porcie 3306):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

Powinien upuścić .sqlplik w folderze, z którego uruchamiasz wiersz poleceń.

EDYCJA: Zaktualizowano, aby uniknąć dodawania haseł do komend CLI, użyj -popcji bez hasła. Zostaniesz o to poproszony, a nie nagrany.

nickhar
źródło
1
Twoja odpowiedź w połączeniu z stackoverflow.com/questions/2989724/... - Powinien zrobić to, o co prosi, ponieważ dodał, że musi go pobrać. Jest to albo albo wgetalbo scpbędzie potrzebne, aby odzyskać wspomniany plik po zbudowaniu.
Zak.
47
Mała uwaga, że ​​bezpieczniej jest nie wpisywać hasła bezpośrednio w poleceniu. Tylko użycie opcji -p bez hasła spowoduje wyświetlenie monitu o hasło po uruchomieniu, w ten sposób hasło nie jest przechowywane w historii poleceń (i potencjalnie zostało odzyskane). Więc używając następującego polecenia: mysqldump -P 3306 -h [adres_ip] -u [uname] -p nazwa_db> db_backup.sql
Pitt
3
Zamiast używać >do zapisywania, raczej używam -r, aby uniknąć problemów z obcymi postaciami lub tego koszmaru dotyczącego problemów z kodowaniem, jak stwierdzono w tym artykule .
Pathros,
1
W przypadku dużych / aktywnie aktualizowanych zestawów danych użyj parametru --single-transaction. To tworzy punkt kontrolny i pomaga zapewnić spójność. Ponadto użyj przełączników --routines --triggers, jeśli masz zapisane procedury / funkcje / wyzwalacze
accord_guy
1
Powinieneś użyć --result-file=db_backup.sqlzamiast > db_backup.sql. Cytat z dokumentacji MySQL : „UTF-16 nie jest dozwolony jako zestaw znaków połączenia (patrz Niedopuszczalne zestawy znaków klienta ), więc plik zrzutu nie ładuje się poprawnie. Aby obejść ten problem, użyj --result-fileopcji, która tworzy dane wyjściowe w Format ASCII ”.
Martin Braun,
13

W najnowszych wersjach mysql, przynajmniej w mojej, nie możesz podać swojej komendy bezpośrednio w poleceniu.

Musisz uruchomić:

mysqldump -u [uname] -p db_name > db_backup.sql

a następnie poprosi o hasło.

Lorenzo Lerate
źródło
2
usuwanie spacji między -popcją a rzeczywistą hasło załatwia sprawę
Y2K-Shubham
8

W przypadku pobierania ze zdalnego serwera, oto prosty przykład:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

-P wskazuje, że wprowadzisz hasło, nie odnosi się ono do nazwy_db. Po wprowadzeniu polecenia pojawi się monit o podanie hasła. Wpisz go i naciśnij enter.

Andrzej
źródło
5

W systemie Windows musisz określić pojemnik mysql, w którym znajduje się plik mysqldump.exe.

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

zapisz to w pliku tekstowym, takim jak backup.cmd

drooh
źródło
lub zwykle mysql w zmiennej PATH, dzięki czemu możesz uruchamiać mysqlpolecenia z dowolnego miejsca, nie będąc w jego katalogu.
behz4d
2

Otwórz wiersz polecenia i wpisz bezpośrednio to polecenie. Nie wchodź do mysql, a następnie wpisz to polecenie.

mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Nithin Raja
źródło
1
Kopiowanie pierwszego wiersza kodu z zaakceptowanej odpowiedzi na 5-letnie pytanie jest odważną strategią dla hodowli karmy.
Phillip Copley,
Próbowałem tego polecenia MySQLdump w wierszu polecenia MySQL i nie działałem. więc właśnie odpowiedziałem :-)
Nithin Raja,
2

Przejdź do katalogu instalacyjnego MySQL i stamtąd otwórz cmd. Następnie wykonaj poniższe polecenie, aby uzyskać kopię zapasową bazy danych.

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql
użytkownik8376416
źródło
1

Po prostu wpisz mysqldumplubmysqldump --help w cmd pokażehow to use

Oto mój wynik cmd

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
Suganthan Madhavan Pillai
źródło
1

Jeśli korzystasz z MySQL innego niż domyślny port:

mysqldump.exe -u username -p -P PORT_NO database > backup.sql
Anand Raj
źródło
1

Dla tych, którzy chcą wpisać hasło w wierszu polecenia. Jest to możliwe, ale zaleca się przekazywanie go w cudzysłowie, aby znak specjalny nie powodował żadnych problemów.

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql
Tara Prasad Gurung
źródło
-1

Użyj tego Jeśli masz bazę danych o nazwie archiedb, użyj tego mysql -p --databases archiedb> /home/database_backup.sql

Zakładając, że jest to Linux, wybierz miejsce, w którym zostanie zapisany plik kopii zapasowej.

Nabaasa Archie
źródło
shell> mysqldump -p mojehasło - bazy danych mydb> /home/backup.sql.
Nabaasa Archie
-1

Użytkownicy systemu Windows mogą przejść do folderu mysql, aby uruchomić polecenie

na przykład

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql
Narayan P.
źródło
1
Pytanie sugerowało, że MySQL działa w systemie Linux.
gmauch,
-1

Uwaga: ten krok pojawia się dopiero po zrzuceniu pliku MySQL (na który odpowiedział większość odpowiedzi powyżej).

Zakłada się, że masz plik zrzutu na zdalnym serwerze, a teraz chcesz go sprowadzić na komputer lokalny.

Aby pobrać zrzucony .sqlplik ze zdalnego serwera na komputer lokalny, wykonaj następujące czynności:

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
Ruto Collins
źródło