Dobijanje izliva podataka i strukture tabele
Ovaj alat omogućava dobijanje izliva (``trenutnog snimka'') sadržaja baze podataka ili skupa baza radi kreiranja rezervne kopije ili prenos podataka na drugi SQL server za baze podataka (ne mora biti MySQL server). Izliv će sadržati skup SQL komandi za kreiranje i/ili popunjavanje tabela.
Ako se rezervna kopija kreira na serveru, umesto opisanog alata treba koristiti mysqlhotcopy. Pogledajte odeljak See Odeljak 4.8.6, «mysqlhotcopy, Kopiranje baza podataka i tabela MySQL».
shell> mysqldump [OPTIONS] database [tables] или mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] или mysqldump [OPTIONS] --all-databases [OPTIONS]
Ako se ne navedu imena tabela ili se koriste parametri --databases ili --all-databases, dobiće se izliv cele baze podataka (odnosno - svih baza podataka).
Spisak opcija koje podržava vaša specifična verzija alata mysqldump možete dobiti izvršavanjem komande mysqldump --help.
Imajte na umu da alat mysqldump, korišćen bez opcija --quick ili --opt, pre nego što napravi izliv rezultata upita, učitava ceo rezultat u memoriju. To može stvoriti probleme pri dobijanju izliva velike baze podataka.
Imajte na umu da ne treba koristiti parametre --opt ili -e ako planirate da koristite novu kopiju programa mysqldump za dobijanje izliva, a zatim ga reprodukuju na veoma starom MySQL serveru.
Alat mysqldump podržava sledeće opcije:
--add-locksДодајте наредбеLOCK TABLESпре извршавања иUNLOCK TABLEнакон извршавања сваког издвајања табеле (за убрзање приступа MySQL-у).--add-drop-tableДодајте наредбуDROP TABLEпре сваке наредбеCREATE TABLE.-A, --all-databasesИздвојите све базе података. Слично опцији--databasesса навођењем свих база података.-a, --allУкључите све опције креирања објеката специфичне за MySQL.--allow-keywordsДозволите креирање имена колона која се поклапају са кључним речима. Избегавање сукоба се обезбеђује додавањем имена табеле као префикса сваком имену колоне.-c, --complete-insertКористите пуне наредбеINSERT(са именима колона).-C, --compressКористите компресију свих података између клијента и сервера, ако оба подржавају компресију.-B, --databasesИзвршите издвајање више база података. Имајте на уму разлику у коришћењу: у овом случају табеле се не наводе. Сва имена аргумената се третирају као имена база података. ИзразUSE db_name;се укључује у излаз пре сваке нове базе података.--delayedКористите наредбуINSERT DELAYEDпри уметању редова.-e, --extended-insertКористите наредбуINSERTса новом вишеструком синтаксом (повећава компакtnост и брзину извршавања изразa за уметање).-#, --debug[=option_string]Прати ток програма (за дебаговање).--helpИсписати помоћну информацију и изаћи из програма.--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...Ове опције се користе заједно са параметром-Tи имају исто значење као одговарајући изрази заLOAD DATA INFILE. Види одељак Одељак 6.4.9, „Синтакса изразaLOAD DATA INFILE“.-F, --flush-logsЗапишите на диск податке системског журнала из бафера MySQL сервера пре почетка издвајања.-f, --force,Наставите чак и при добијању SQL грешке при извршавању издвајања табеле.-h, --host=..Извршите издвајање података MySQL сервера на наведеном хосту. Подразумевана вредност хоста јеlocalhost.-l, --lock-tables.Закључајте све табеле пре почетка издвајања. Табеле се закључавају изразомREAD LOCAL, како би се омогућило паралелно уписивање заMyISAM-табеле. Треба напоменути да при извршавању издвајања скупа база података опција--lock-tablesзакључава табеле сваке базе појединачно. Дакле, коришћење овог параметра не гарантује да ће табеле бити логички конзистентне унутар тих база података. У различитим базама података, током издвајања табеле могу бити у потпуно различитим стањима.-K, --disable-keysДодаје израз/*!40000 ALTER TABLE tb_name DISABLE KEYS */;и/*!40000 ALTER TABLE tb_name ENABLE KEYS */;у резултирајући излаз. Ово ће убрзати учитавање података на MySQL сервер 4.0, јер се индекси креирају након уношења свих података.-n, --no-create-dbУ резултирајућем излазу изразCREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;ће бити одсутан. Ова линија ће бити додата у сваком случају при коришћењу опција--databasesили--all-databases.-t, --no-create-infoНе записујте информације о креирању табеле (наредбаCREATE TABLE).-d, --no-dataНе записујте информације из редова табеле. Ово је веома корисно за добијање издвајања структуре табеле!--optИсто као и--quick --add-drop-table --add-locks --extended-insert --lock-tables. Требало би да пружи најбрже издвајање за читање на MySQL серверу.-pyour_pass, --password[=your_pass]Лозинка која се користи при повезивању са сервером. Ако аргумент=your_passније унет,mysqldumpће понудити унос лозинке.-P port_num, --port=port_numБрој TCP/IP порта који се користи за повезивање са хостом.--protocol=(TCP | SOCKET | PIPE | MEMORY)За навођење протокола везе који треба користити. Ново у MySQL 4.1.0.-q, --quickИсписати издвајање директно на стандардни излазstdoutбез буферизације упита. За то се користи функцијаmysql_use_result().-Q, --quote-namesЗаградите имена табела и колона без карактера '`'.-r, --result-file=...Директан излаз наведене датотеке. Ову опцију треба користити у MS DOS-у, јер спречава конверзију карактера нове линије '\n' у секвенцу '\n\r' (нова линија + повратак каретe).--single-transactionОва опција издаје SQL наредбуBEGINпре извршавања издвајања података са сервера. Најчешће се користи саInnoDB-табелама и нивоом изолације транзакцијаREAD_COMMITTED, јер је у овом режиму могуће добити издвајање са конзистентним стањем базе података након извршавања наредбеBEGINбез закључавања било којих апликација. Користећи ову опцију, треба имати на уму да при извршавању издвајања само транзакционе табеле ће бити у конзистентном стању, тј. некеMyISAM- илиHEAP-табеле при коришћењу ове опције могу ипак променити своје стање. Опција--single-transactionдодата је у верзији 4.0.2. Она је међусобно искључујућа у односу на опцију--lock-tables, јер наредбаLOCK TABLESвећ прихвата отворену транзакцију.-S /path/to/socket, --socket=/path/to/socketДатотека сокета за повезивање саlocalhost(подразумевана вредност хоста).--tablesПревазилази параметар --databases (-B).-T, --tab=path-to-some-directoryЗа сваку задату табелу креира датотеку atable_name.sql, која садржи SQLCREATEнаредбу за креирање табеле, и датотекуtable_name.txtса подацима табеле. Датотека.txtима формат у складу са параметрима--fields-xxxи--lines--xxx. Напомена: Овај параметар ради само под условом да је алаткаmysqldumpпокренута на истом рачунару као и демонmysqld, и да корисник/група који су покренули овај процесmysqld(обично је то корисникmysqlи групаmysql), имају право креирања/уписивања датотеке на наведеној адреси.-u user_name, --user=user_nameИме корисника MySQL сервера које се користи при повезивању са сервером. Подразумевана вредност је име Unix корисника.-O var=option, --set-variable var=optionПоставите вредности променљивих. Доступне променљиве за коришћење су наведене испод. У MySQL 4.0 једноставно користите--var=option.-v, --verboseПроширени режим излаза. Испис детаљнијих информација о раду програма.-V, --versionИсписати информацију о верзији и изаћи из програма.-w, --where='where-condition'Извршите издвајање само изабраних записа. Имајте на уму да су наводници обавезни."--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-X, --xmlPredstavlja dampu baze podataka u XML formatu.-x, --first-slaveBlokira sve tabele u svim bazama podataka.-O net_buffer_length=#, where # < 16MPrilikom kreiranja višelinijskih upitnih operacija (kao i u slučajevima primene parametara --extended-insert ili --opt) alat mysqldump će kreirati linije dužine do vrednosti navedene u net_buffer_length. Povećanjem vrednosti ove promenljive potrebno je takođe proveriti da li je na MySQL serveru za promenljivu max_allowed_packet navedena veća vrednost od veličine net_buffer_length.
