Pobieranie zrzutów danych i struktury tabeli
To narzędzie umożliwia uzyskanie zrzutu („migawki”) zawartości bazy danych lub zbioru baz w celu utworzenia kopii zapasowej lub przesyłania danych na inny serwer baz danych SQL (niekoniecznie serwer MySQL). Zrzut będzie zawierał zestaw poleceń SQL służących do tworzenia i/lub wypełniania tabel.
Jeśli kopia zapasowa tworzona jest na serwerze, zamiast opisywanego narzędzia należy użyć mysqlhotcopy. Patrz rozdział See Rozdział 4.8.6, „mysqlhotcopy, Kopia zapasowa baz danych i tabel MySQL”.
shell> mysqldump [OPTIONS] database [tables] или mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] или mysqldump [OPTIONS] --all-databases [OPTIONS]
Jeśli nie podano nazw tabel lub użyto parametrów --databases lub --all-databases, zostanie uzyskany zrzut całej bazy danych (odpowiednio – wszystkich baz danych).
Listę opcji obsługiwanych przez Twoją konkretną wersję narzędzia mysqldump można uzyskać, wykonując polecenie mysqldump --help.
Należy pamiętać, że narzędzie mysqldump, używane bez opcji --quick lub --opt, przed wykonaniem zrzutu wyniku zapytania załaduje cały wynik do pamięci. Może to spowodować problemy przy tworzeniu zrzutu dużej bazy danych.
Pamiętaj, że nie należy stosować parametrów --opt lub -e, jeśli planujesz użyć nowej kopii programu mysqldump do uzyskania zrzutu, a następnie odtworzyć go na bardzo starym serwerze MySQL.
Narzędzie mysqldump obsługuje następujące opcje:
--add-locksDodaj poleceniaLOCK TABLESprzed wykonaniem orazUNLOCK TABLEpo wykonaniu każdego eksportu tabeli (w celu przyspieszenia dostępu do MySQL).--add-drop-tableDodaj polecenieDROP TABLEprzed każdym poleceniemCREATE TABLE.-A, --all-databasesWykonaj eksport wszystkich baz danych. Odpowiada opcji--databasesz podaniem wszystkich nazw baz danych.-a, --allWłącz wszystkie opcje tworzenia obiektów specyficzne dla MySQL.--allow-keywordsZezwalaj na tworzenie nazw kolumn, które pokrywają się ze słowami kluczowymi. Brak konfliktów jest zapewniany poprzez dodanie nazwy tabeli jako prefiksu do nazwy każdej kolumny.-c, --complete-insertUżywaj pełnych poleceńINSERT(z nazwami kolumn).-C, --compressUżywaj kompresji wszystkich danych między klientem a serwerem, jeśli oba obsługują kompresję.-B, --databasesWykonaj eksport wielu baz danych. Zwróć uwagę na różnicę w użyciu: w tym przypadku nie podaje się tabel. Wszystkie nazwy argumentów są traktowane jako nazwy baz danych. InstrukcjaUSE db_name;jest dołączana do wyjścia przed każdą nową bazą danych.--delayedUżywaj poleceniaINSERT DELAYEDpodczas wstawiania wierszy.-e, --extended-insertUżywaj poleceniaINSERTz nowym, wielowierszowym składnią (zwiększa zwięzłość i wydajność instrukcji ładowania).-#, --debug[=option_string]Śledź przebieg programu (w celu debugowania).--helpWyświetl informacje pomocnicze i zakończ działanie programu.--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...Te opcje są używane wraz z parametrem-Ti mają to samo znaczenie, co odpowiednie instrukcje dlaLOAD DATA INFILE. Zobacz sekcję Sekcja 6.4.9, „Składnia instrukcjiLOAD DATA INFILE”.-F, --flush-logsZapisz na dysku dane dziennika systemowego z bufora serwera MySQL przed rozpoczęciem eksportu.-f, --force,Kontynuuj działanie nawet po wystąpieniu błędu SQL podczas eksportu tabeli.-h, --host=..Wykonaj eksport danych serwera MySQL na wskazanym hoście. Domyślna wartość hosta tolocalhost.-l, --lock-tables.Zablokuj wszystkie tabele przed rozpoczęciem eksportu. Tabele są blokowane instrukcjąREAD LOCAL, aby umożliwić równoległe zapisy dla tabelMyISAM. Należy zauważyć, że podczas eksportu zbioru baz danych opcja--lock-tablesblokuje tabele każdej bazy osobno. W związku z tym użycie tego parametru nie gwarantuje, że tabele będą spójne logicznie w ramach tych baz danych. W różnych bazach danych tabele podczas eksportu mogą znajdować się w zupełnie różnych stanach.-K, --disable-keysDodaje wyrażenia/*!40000 ALTER TABLE tb_name DISABLE KEYS */;i/*!40000 ALTER TABLE tb_name ENABLE KEYS */;do wyjścia. Przyspieszy to ładowanie danych na serwer MySQL 4.0, ponieważ indeksy są tworzone po wprowadzeniu wszystkich danych.-n, --no-create-dbW wyjściu wyrażenieCREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;nie będzie obecne. Ten wiersz zostanie dodany w każdym przypadku przy użyciu opcji--databaseslub--all-databases.-t, --no-create-infoNie zapisuj informacji o tworzeniu tabeli (polecenieCREATE TABLE).-d, --no-dataNie zapisuj informacji z wierszy tabeli. Jest to bardzo przydatne do uzyskania eksportu struktury tabeli!--optTo samo co--quick --add-drop-table --add-locks --extended-insert --lock-tables. Powinno zapewnić najszybszy eksport do odczytu na serwerze MySQL.-pyour_pass, --password[=your_pass]Hasło używane podczas łączenia się z serwerem. Jeśli argument=your_passnie zostanie podany,mysqldumppoprosi o wprowadzenie hasła.-P port_num, --port=port_numNumer portu TCP/IP używanego do łączenia się z hostem.--protocol=(TCP | SOCKET | PIPE | MEMORY)Określa protokół połączenia, który należy użyć. Nowość w MySQL 4.1.0.-q, --quickWyświetlaj eksport bezpośrednio na standardowym wyjściustdoutbez buforowania zapytania. Do tego celu używana jest funkcjamysql_use_result().-Q, --quote-namesZamykaj nazwy tabel i kolumn w cudzysłowach bez znaków '`'.-r, --result-file=...Bezpośrednie wypisywanie do określonego pliku. Opcję tę należy używać w systemie MS DOS, ponieważ zapobiega ona konwersji znaku nowej linii '\n' na sekwencję '\n\r' (nowa linia + powrót karetki).--single-transactionTa opcja wydaje instrukcję SQLBEGINprzed wykonaniem eksportu danych z serwera. Najczęściej jest używana z tabelamiInnoDBi poziomem izolacji transakcjiREAD_COMMITTED, ponieważ tylko w tym trybie można uzyskać eksport o spójnym stanie bazy danych po wykonaniu instrukcjiBEGINbez blokowania jakichkolwiek aplikacji. Korzystając z tej opcji, należy pamiętać, że podczas eksportu tylko tabele transakcyjne będą w spójnym stanie, tj. niektóre tabeleMyISAMlubHEAPprzy użyciu tej opcji mogą nadal zmieniać swój stan. Opcja--single-transactionzostała dodana w wersji 4.0.2. Jest wzajemnie wykluczająca się z opcją--lock-tables, ponieważ instrukcjaLOCK TABLESjuż przyjmuje otwartą transakcję.-S /path/to/socket, --socket=/path/to/socketPlik gniazda do łączenia się zlocalhost(domyślna wartość hosta).--tablesNadpisuje parametr --databases (-B).-T, --tab=path-to-some-directoryDla każdej podanej tabeli tworzy plik atable_name.sql, zawierający instrukcję SQLCREATEtworzącą tabelę, oraz pliktable_name.txtz danymi tabeli. Plik.txtma format zgodny z parametrami--fields-xxxi--lines--xxx. Uwaga: Ten parametr działa tylko pod warunkiem, że narzędziemysqldumpjest uruchomione na tym samym komputerze co demonmysqld, a użytkownik/grupa, która uruchomiła ten procesmysqld(zazwyczaj jest to użytkownikmysqli grupamysql), musi mieć prawo do tworzenia/zapisu pliku pod podanym adresem.-u user_name, --user=user_nameNazwa użytkownika serwera MySQL używana podczas łączenia się z serwerem. Domyślną wartością jest nazwa użytkownika systemu Unix.-O var=option, --set-variable var=optionUstaw wartości zmiennych. Dostępne do użycia zmienne wymieniono poniżej. W MySQL 4.0 wystarczy użyć--var=option.-v, --verboseTryb rozszerzony wyjścia. Wyświetlanie bardziej szczegółowych informacji o działaniu programu.-V, --versionWyświetl informacje o wersji i zakończ działanie programu.-w, --where='where-condition'Wykonaj eksport tylko wybranych rekordów. Należy pamiętać, że cudzysłowy są obowiązkowe."--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-X, --xmlZapisuje zrzut bazy danych w formacie XML.-x, --first-slaveBlokuje wszystkie tabele we wszystkich bazach danych.-O net_buffer_length=#, where # < 16MPodczas tworzenia wielowierszowych instrukcji wejściowych (tak jak w przypadkach użycia parametrów --extended-insert lub --opt) narzędzie mysqldump będzie generować wiersze o długości do wartości określonej w net_buffer_length. Przy zwiększaniu wartości tej zmiennej należy również upewnić się, że w serwerze MySQL dla zmiennej max_allowed_packet ustawiono wartość większą niż wielkość net_buffer_length.
