Získání datových výpisů a struktury tabulek
Tento nástroj umožňuje získat výpis (``momentální snímek'') obsahu databáze nebo sady databází pro vytvoření zálohy nebo přenos dat na jiný SQL server databází (není nutně MySQL server). Výpis bude obsahovat sadu SQL příkazů pro vytvoření a/nebo vyplnění tabulek.
Pokud je záloha vytvářena na serveru, místo popsaného nástroje by měl být použit mysqlhotcopy. Viz sekci See Sekce 4.8.6, «mysqlhotcopy, Kopírování databází a tabulek MySQL».
shell> mysqldump [OPTIONS] database [tables] или mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] или mysqldump [OPTIONS] --all-databases [OPTIONS]
Pokud nejsou uvedeny názvy tabulek nebo jsou použity parametry --databases nebo --all-databases, bude získán výpis celé databáze (příslušně - všech databází).
Seznam podporovaných možností vaší konkrétní verze nástroje mysqldump lze získat provedením příkazu mysqldump --help.
Mějte na paměti, že nástroj mysqldump, používaný bez možností --quick nebo --opt, před vytvořením výpisu výsledku dotazu načte celý výsledek do paměti. To může způsobit problémy při získávání výpisu velké databáze.
Vezměte v úvahu, že byste neměli používat parametry --opt nebo -e, pokud plánujete použít novou kopii programu mysqldump pro získání výpisu a poté jej přehrát na velmi starém MySQL serveru.
Nástroj mysqldump podporuje následující možnosti:
--add-locksPřidat příkazyLOCK TABLESpřed provedením aUNLOCK TABLEpo provedení každého dumpu tabulky (pro zrychlení přístupu k MySQL).--add-drop-tablePřidat příkazDROP TABLEpřed každý příkazCREATE TABLE.-A, --all-databasesProvést dump všech databází. Analogické k možnosti--databasess uvedením všech názvů databází.-a, --allZapnout všechny specifické možnosti vytváření objektů pro MySQL.--allow-keywordsPovolit vytváření názvů sloupců, které se shodují s klíčovými slovy. Nedochází ke konfliktům díky přidání názvu tabulky jako prefixu k názvu každého sloupce.-c, --complete-insertPoužít úplné příkazyINSERT(s názvy sloupců).-C, --compressPoužít kompresi všech dat mezi klientem a serverem, pokud oba podporují kompresi.-B, --databasesProvést dump více databází. Vezměte na vědomí rozdíl v použití: v tomto případě se tabulky neuvádějí. Všechny názvy argumentů jsou považovány za názvy databází. PříkazUSE db_name;je zahrnut do výstupu před každou novou databází.--delayedPoužít příkazINSERT DELAYEDpři vkládání řádků.-e, --extended-insertPoužít příkazINSERTs novým víceřádkovým syntaxem (zvyšuje kompaktnost a výkon příkazů INSERT).-#, --debug[=option_string]Sledovat průběh programu (pro ladění).--helpVypsat nápovědu a ukončit program.--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...Tyto možnosti se používají společně s parametrem-Ta mají stejný význam jako odpovídající příkazy proLOAD DATA INFILE. Viz část Část 6.4.9, „Syntaxe příkazuLOAD DATA INFILE“.-F, --flush-logsZapsat na disk data systémového protokolu z vyrovnávací paměti serveru MySQL před začátkem provádění dumpu.-f, --force,Pokračovat i při získání chyby SQL při provádění dumpu tabulky.-h, --host=..Provést dump dat serveru MySQL na zadaném hostiteli. Výchozí hodnota hostitele jelocalhost.-l, --lock-tables.Uzamknout všechny tabulky před začátkem provádění dumpu. Tabulky jsou uzamčeny příkazemREAD LOCAL, aby bylo umožněno paralelní zápis pro tabulkyMyISAM. Je třeba poznamenat, že při provádění dumpu sady databází možnost--lock-tablesuzamyká tabulky každé databáze zvlášť. Tímto způsobem použití tohoto parametru nezaručuje, že tabulky budou logicky konzistentní v rámci těchto databází. V různých databázích mohou být tabulky při provádění dumpu v zcela odlišných stavech.-K, --disable-keysPřidává výraz/*!40000 ALTER TABLE tb_name DISABLE KEYS */;a/*!40000 ALTER TABLE tb_name ENABLE KEYS */;do výstupu výsledku. To zrychlí načítání dat na server MySQL 4.0, protože indexy jsou vytvářeny po přidání všech dat.-n, --no-create-dbVe výstupu výsledku bude chybět výrazCREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;. Tento řádek bude přidán v každém případě při použití možností--databasesnebo--all-databases.-t, --no-create-infoNezapisovat informace o vytvoření tabulky (příkazCREATE TABLE).-d, --no-dataNezapisovat informace z řádků tabulky. To je velmi užitečné pro získání dumpu struktury tabulky!--optStejné jako--quick --add-drop-table --add-locks --extended-insert --lock-tables. Mělo by poskytnout nejrychlejší dump pro čtení na serveru MySQL.-pyour_pass, --password[=your_pass]Heslo používané při připojení k serveru. Pokud není zadán argument=your_pass,mysqldumpvyzve k zadání hesla.-P port_num, --port=port_numČíslo portu TCP/IP používaného pro připojení k hostiteli.--protocol=(TCP | SOCKET | PIPE | MEMORY)Pro určení protokolu připojení, který má být použit. Novinka v MySQL 4.1.0.-q, --quickVypsat dump přímo na standardní výstupstdoutbez bufferování dotazu. K tomu se používá funkcemysql_use_result().-Q, --quote-namesUvést názvy tabulek a sloupců do uvozovek bez znaků '`'.-r, --result-file=...Přímý výstup do zadaného souboru. Tuto možnost by měly používat systémy MS DOS, protože zabraňuje převodu znaku nového řádku '\n' na sekvenci '\n\r' (nový řádek + návrat vozíku).--single-transactionTato možnost vydává SQL příkazBEGINpřed provedením dumpu dat ze serveru. Nejčastěji se používá s tabulkamiInnoDBa úrovní izolace transakcíREAD_COMMITTED, protože právě v tomto režimu lze získat dump s konzistentním stavem databáze po provedení příkazuBEGINbez blokování jakýchkoli aplikací. Při použití této možnosti je třeba si pamatovat, že při provádění dumpu budou pouze transakční tabulky ve konzistentním stavu, tj. některé tabulkyMyISAMneboHEAPmohou při použití této možnosti stále změnit svůj stav. Možnost--single-transactionbyla přidána ve verzi 4.0.2. Je vzájemně se vylučující s možností--lock-tables, protože příkazLOCK TABLESjiž přijímá otevřenou transakci.-S /path/to/socket, --socket=/path/to/socketSoubor soketu pro připojení klocalhost(výchozí hodnota hostitele).--tablesPřepisuje parametr --databases (-B).-T, --tab=path-to-some-directoryPro každou zadanou tabulku vytvoří soubor atable_name.sql, který obsahuje SQL příkazCREATEpro vytvoření tabulky, a soubortable_name.txts daty tabulky. Soubor.txtmá formát podle parametrů--fields-xxxa--lines--xxx. Poznámka: Tento parametr funguje pouze za předpokladu, že utilitamysqldumpje spuštěna na stejném počítači jako démonmysqld, a uživatel/skupina, která spustila tento procesmysqld(obvykle uživatelmysqla skupinamysql), musí mít právo vytvářet/zapisovat soubor na zadanou adresu.-u user_name, --user=user_nameNázev uživatele serveru MySQL používaný při připojení k serveru. Výchozí hodnotou je název uživatele Unix.-O var=option, --set-variable var=optionNastavit hodnoty proměnných. Dostupné proměnné jsou uvedeny níže. V MySQL 4.0 jednoduše použijte--var=option.-v, --verboseRozšířený režim výstupu. Výstup podrobnějších informací o provozu programu.-V, --versionVypsat informace o verzi a ukončit program.-w, --where='where-condition'Provést dump pouze vybraných záznamů. Vezměte na vědomí, že uvozovky jsou povinné."--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-X, --xmlVytváří dump databáze ve formátu XML.-x, --first-slaveUzamkne všechny tabulky ve všech databázích.-O net_buffer_length=#, where # < 16MPři vytváření víceřádkových příkazů pro vkládání (stejně jako v případech použití parametrů --extended-insert nebo --opt) bude utilita mysqldump generovat řádky o délce až do hodnoty uvedené v net_buffer_length. Při zvýšení hodnoty této proměnné je třeba se také ujistit, že na MySQL serveru je pro proměnnou max_allowed_packet nastavena hodnota větší než hodnota net_buffer_length.
