Szukaj…


Składnia

  • mysqldump -u [nazwa użytkownika] -p [hasło] [inne opcje] nazwa_db> dumpFileName.sql /// Aby utworzyć kopię zapasową pojedynczej bazy danych
  • mysqldump -u [nazwa użytkownika] -p [hasło] [inne opcje] nazwa_bazy_danych [nazwa_bloku1 1 nazwa_bloku22 nazwa_bloku2 ...]> dumpFileName.sql /// Aby wykonać kopię zapasową jednej lub więcej tabel
  • mysqldump -u [nazwa użytkownika] -p [hasło] [inne opcje] - bazy danych nazwa_db 1 nazwa_db2 nazwa_db3 ...> dumpFileName.sql /// Aby wykonać kopię zapasową jednej lub więcej kompletnych baz danych
  • mysqldump -u [nazwa użytkownika] -p [hasło] [inne opcje] - wszystkie bazy danych> dumpFileName.sql /// Aby wykonać kopię zapasową całego serwera MySQL

Parametry

Opcja Efekt
- # Opcje logowania do serwera
-h ( --host ) Host (adres IP lub nazwa hosta) do połączenia. Domyślnie jest to localhost ( 127.0.0.1 ) Przykład: -h localhost
-u ( --user ) Użytkownik MySQL
-p (- --password ) Hasło MySQL. Ważne : w przypadku użycia opcji -p nie może być spacji między opcją a hasłem. Przykład: -pMyPassword
- # Opcje zrzutu
--add-drop-database Dodaj instrukcję DROP DATABASE przed każdą instrukcją CREATE DATABASE . Przydatne, jeśli chcesz zastąpić bazy danych na serwerze.
--add-drop-table Dodaj instrukcję DROP TABLE przed każdą instrukcją CREATE TABLE . Przydatne, jeśli chcesz zastąpić tabele na serwerze.
--no-create-db Pomiń instrukcje CREATE DATABASE na zrzucie. Jest to przydatne, gdy masz pewność, że baza danych, którą zrzucasz, już istnieje na serwerze, na którym załadujesz zrzut.
-t ( --no-create-info ) Pomiń wszystkie instrukcje CREATE TABLE na zrzucie. Jest to przydatne, gdy chcesz zrzucić tylko dane z tabel i użyje pliku zrzutu do zapełnienia identycznych tabel w innej bazie danych / serwerze.
-d ( --no-data ) Nie pisz informacji o tabeli. Spowoduje to jedynie zrzucenie instrukcji CREATE TABLE . Przydatny do tworzenia baz danych „szablonów”
-R (- --routines ) Dołącz procedury składowane / funkcje do zrzutu.
-K ( --disable-keys ) Wyłącz klucze dla każdej tabeli przed wstawieniem danych i włącz klucze po wstawieniu danych. Przyspiesza to wstawianie tylko w tabelach MyISAM z nieunikalnymi indeksami.

Uwagi

Dane wyjściowe operacji mysqldump to lekko skomentowany plik zawierający sekwencyjne instrukcje SQL, które są zgodne z wersją narzędzi MySQL użytych do jego wygenerowania (z uwzględnieniem zgodności z poprzednimi wersjami, ale bez gwarancji na przyszłe). Zatem przywrócenie bazy danych mysqldump ed obejmuje wykonanie tych instrukcji. Ogólnie ten plik

  • DROP jest pierwszą określoną tabelą lub widokiem
  • CREATE tę tabelę lub widok
  • Dla tabel zrzuconych z danymi (tj. Bez opcji --no-data )
    • LOCK to stół
    • INSERT wszystkie wiersze z oryginalnej tabeli w jednej instrukcji
  • UNLOCK TABLES
  • Powtarza powyższe dla wszystkich innych tabel i widoków
  • DROP to pierwsza dołączona procedura
  • CREATE tę rutynę
  • Powtarza to samo dla wszystkich innych procedur

Obecność DROP przed CREATE dla każdej tabeli oznacza, że jeśli schemat jest obecny, niezależnie od tego, czy jest pusty, użycie pliku mysqldump do jego przywrócenia spowoduje zapełnienie lub zastąpienie zawartych w nim danych.

Tworzenie kopii zapasowej bazy danych lub tabeli

Utwórz migawkę całej bazy danych:

mysqldump [options] db_name > filename.sql

Utwórz migawkę wielu baz danych:

mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql

Utwórz migawkę jednej lub więcej tabel:

mysqldump [options] db_name table_name... > filename.sql

Utwórz migawkę z wyłączeniem jednej lub więcej tabel:

mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql

Rozszerzenie pliku .sql jest całkowicie kwestią stylu. Każde rozszerzenie będzie działać.

Określanie nazwy użytkownika i hasła

> mysqldump -u username -p [other options]
Enter password:

Jeśli musisz podać hasło w wierszu poleceń (np. W skrypcie), możesz dodać je po opcji -p bez spacji:

> mysqldump -u username -ppassword [other options]

Jeśli hasło zawiera spacje lub znaki specjalne, pamiętaj, aby używać znaku zmiany znaczenia w zależności od powłoki / systemu.

Opcjonalnie formularz rozszerzony to:

> mysqldump --user=username --password=password [other options]

(Ze względów bezpieczeństwa nie jest zalecane podawanie wyraźnych danych w wierszu polecenia.)

Przywracanie kopii zapasowej bazy danych lub tabeli

mysql [options] db_name < filename.sql

Uwaga:

  • db_name musi być istniejącą bazą danych;
  • uwierzytelniony użytkownik ma wystarczające uprawnienia do wykonywania wszystkich poleceń w filename.sql ;
  • Rozszerzenie pliku .sql jest całkowicie kwestią stylu. Każde rozszerzenie będzie działać.
  • Nie można podać nazwy tabeli, do której ma zostać załadowany, nawet jeśli można podać nazwę, z której ma zostać zrzucony. Należy to zrobić w filename.sql .

Alternatywnie, korzystając z narzędzia wiersza polecenia MySQL , możesz przywrócić (lub uruchomić dowolny inny skrypt) za pomocą polecenia source:

source filename.sql

lub

\. filename.sql

mysqldump ze zdalnego serwera z kompresją

Aby zastosować kompresję na przewodzie w celu szybszego transferu, --compress opcję --compress do mysqldump . Przykład:

mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql

Ważne: Jeśli nie chcesz blokować źródłowej --lock-tables=false , powinieneś również dołączyć --lock-tables=false . Ale w ten sposób możesz nie uzyskać wewnętrznie spójnego obrazu bazy danych.

Aby zapisać skompresowany plik, możesz przesłać gzip do gzip .

mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz

przywróć skompresowany plik mysqldump bez rozpakowywania

gunzip -c dbname.sql.gz | mysql dbname -u username -p

Uwaga: -c oznacza zapis danych wyjściowych na standardowe wyjście.

Tworzenie kopii zapasowych bezpośrednio na Amazon S3 z kompresją

Jeśli chcesz wykonać pełną kopię zapasową dużej instalacji MySql i nie masz wystarczającej ilości lokalnej pamięci, możesz ją zrzucić i skompresować bezpośrednio do segmentu Amazon S3. Dobrą praktyką jest również robienie tego bez posiadania hasła DB jako części polecenia:

mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
        --verbose --hex-blob --routines --triggers --all-databases |
    gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz

Zostanie wyświetlony monit o podanie hasła, po którym rozpocznie się tworzenie kopii zapasowej.

Przesyłanie danych z jednego serwera MySQL na inny

Jeśli chcesz skopiować bazę danych z jednego serwera na drugi, masz dwie opcje:

Opcja 1:

  1. Zapisz plik zrzutu na serwerze źródłowym
  2. Skopiuj plik zrzutu na serwer docelowy
  3. Załaduj plik zrzutu na serwer docelowy

Na serwerze źródłowym:

mysqldump [options] > dump.sql

Na serwerze docelowym skopiuj plik zrzutu i wykonaj:

mysql [options] < dump.sql

Opcja 2:

Jeśli serwer docelowy może połączyć się z serwerem hosta, możesz użyć potoku do skopiowania bazy danych z jednego serwera na drugi:

Na serwerze docelowym

mysqldump [options to connect to the source server] | mysql [options]

Podobnie skrypt można uruchomić na serwerze źródłowym, wypychając go do miejsca docelowego. W obu przypadkach prawdopodobnie będzie znacznie szybszy niż opcja 1.

Kopia zapasowa bazy danych z procedurami i funkcjami przechowywanymi

Domyślnie przechowywane procedury i funkcje lub nie generowane przez mysqldump , musisz dodać parametr --routines (lub -R ):

mysqldump -u username -p -R db_name > dump.sql

Podczas korzystania z --routines czasu tworzenia i zmiany nie są zachowywane, zamiast tego należy zrzucić i ponownie załadować zawartość mysql.proc .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow