Отримання дампів даних та структури таблиць
Ця утиліта дозволяє отримати дамп («миттєвий знімок») вмісту бази даних або набору баз даних для створення резервної копії або передачі даних на інший SQL-сервер баз даних (не обов’язково MySQL-сервер). Дамп міститиме набір SQL-команд для створення та/або заповнення таблиць.
Якщо ж резервна копія створюється на сервері, замість описуваної утиліти слід використовувати mysqlhotcopy. Див. розділ See Розділ 4.8.6, «mysqlhotcopy, Копіювання баз даних і таблиць MySQL».
shell> mysqldump [OPTIONS] database [tables] или mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] или mysqldump [OPTIONS] --all-databases [OPTIONS]
Якщо не вказувати імена таблиць або використовувати параметри --databases або --all-databases, то буде отримано дамп бази даних загалом (відповідно — усіх баз даних).
Перелік опцій, підтримуваних вашою конкретною версією утиліти mysqldump, можна отримати, виконавши команду mysqldump --help.
Слід мати на увазі, що утиліта mysqldump, яка використовується без опцій --quick або --opt, перед тим як зробити дамп результату вибірки інформації, завантажить увесь результат у пам’ять. Це може створити проблеми при отриманні дампів великих баз даних.
Зверніть увагу, що не слід застосовувати параметри --opt або -e, якщо ви плануєте використовувати для отримання дампів нову копію програми mysqldump, а потім відтворювати їх на дуже старому MySQL-сервері.
Утиліта mysqldump підтримує наступні опції:
--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з новим багаторядковим синтаксисом (підвищує компактність та швидкодію операторів введення).-#, --debug[=option_string]Відстежувати проходження програми (для налагодження).--helpВивести довідкову інформацію та вийти з програми.--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...Ці опції використовуються спільно з параметром-Tі мають таке саме значення, що й відповідні оператори дляLOAD DATA INFILE. Див. розділ See Розділ 6.4.9, «Синтаксис оператораLOAD 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' (новий рядок + повернення каретки).--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, --xmlПредставляє дамп бази даних у форматі XML.-x, --first-slaveБлокує всі таблиці у всіх базах даних.-O net_buffer_length=#, where # < 16MПри створенні багаторядкових операторів введення (як і у випадках використання параметрів --extended-insert або --opt) утиліта mysqldump буде створювати рядки довжиною до значення, вказаного в net_buffer_length. При збільшенні значення цієї змінної необхідно також переконатися, що в MySQL-сервері для змінної max_allowed_packet вказано значення більше, ніж величина net_buffer_length.
