Робимо дамп бази MySQL та експорт даних у консолі. Дамп бази даних - блог кодера

Цей пост містить найчастіше використовувані команди для створення або розгортання резервних копій баз даних MySQL.

Ну, просто набридло мені постійно гуглити ключі, коли вони мені «раптом» знадобляться.

Трохи теорії.

MySQLDUMP – це інструмент, який дозволяє створювати резервні копії баз даних MySQL. На вихлопі ми отримуємо .sql файл із дампом бази даних. У даному файліміститься Sql кодяк тексту, тобто. його завжди можна відкрити текстовим редакторомщоб подивитися, відредагувати і т.д.
Відновити такий дамп можна за допомогою утиліти MySQL через STDIN.

До речі, є ще така утиліта, як MySqlHotCopy, яку найкраще використовувати для створення гарячих резервних копій, оскільки вона ставить базу на блокування та копіює файли БД потрібне місце. Але ця штука буде працювати тільки якщо її запускати на сервері, працює тільки з MyISAM і Archive-таблицями і більше підійде для великих БД.
Відновити дані можна копіюванням збережених файлів у каталог даних MySQL.

Але, загалом, мова не про неї… може напишу про «гарячу копію» в іншій статті…

Створення резервної копії бази даних

Почнемо з найпоширенішої команди створення дампа сайту site.ru у файл site.ru:

Mysqldump -uroot -h10.30.30.10 -p site_ua > site_ua.sql

    Докладніше про ключі:
  • -u(—user=…) це ім'я користувача БД;
  • -h(—host=…) це хост, у якому розташовується сам сервер. Якщо сервер локальний, то цей параметр можна або не використовувати або прописати туди localhost. Також майте на увазі, що ip сервера після ключа потрібно писати без пробілу;
  • -p(password=…) це пароль користувача. Якщо цей ключ не використовувати, то підключення до БД буде можливим у тому випадку, якщо пароля немає. Також ніхто не забороняє вписати пароль у команду, причому після ключа не повинно бути пропуску (наприклад: -p1234567890, де 1234567890 це пароль);
  • site_uaце ім'я БД на сервері MySql;
  • site_ua.sqlце файл для дампи.

Щоб створити резервну копію кількох БД, можна скористатися ключем -Bі вказати кілька БД, ось приклад:

Mysqldump -uroot -h10.30.30.10 -p site_ua site2_ua site3_ua > sites.sql

Якщо ситуація не дає часу на роздуми, і потрібно робити резервну копію всіх баз даних, то в цій ситуації можна скористатися ключем -all-databases, ось приклад:

Mysqldump -uroot -h10.30.30.10 -p -A > all-db.sql

До речі є нюанс.

Якщо ви робіть резервну копію бази даних на працюючому, і причому активно використовуваному сервері, то ви ризикуєте отримати порушення логічних зв'язків. Є кілька способів уникнути цього.

Перший спосіб полягає у блокуванні таблиць, тобто. можна скористатися параметром -lock-tables, ось приклад:

Mysqldump -uroot -h10.30.30.10 -p --lock-tables site_ua > site_ua.sql

Але в момент створення резервної копії запити клієнтів будуть підвішені. а отже можуть бути тайм-аути.

Другий спосіб це використання ключа - flush-log при створенні резервної копії. Цей ключ закриє старий логдій та створить новий. Якщо хтось щось запише в процесі створення копії, це відобразиться на початку журналу і можна буде перенести цю зміну до бази. Далі, щоб напевно, після створення резервної копії, потрібно виконувати команду mysqladmin -flush-logs і залишати копію передостаннього бінарного журналу.

Відновлення резервної копії бази даних

Тут уже правитиме утиліта «mysql». Ось приклад:

Mysql -uroot -h10.30.30.10 -p site_ua< site_ru.sql

Ще один спосіб, більш педантичний:

Mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with; or \g. Your MySQL connection id is 35 Server version: 5.6.35-1+deb.sury.org~xenial+0.1 (Ubuntu) Copyright (c) 2000, 2016, Oracle and/or its affiliates. Всі права захищені. Oracle є registered trademark of Oracle Corporation і його affiliates. Інші назви можуть бути торговими марками своїх власників. Type "help;" або "h" for help. Type "c" для очищення поточного вхідного стану. mysql> use site_ua; mysql>source site_ru.sql;

Ну а якщо у вас БД збережена в gz-архіві, то можна скомбінувати команди mysqlі zcat ось так:

Zcat site_ua.sql.gz | mysql -uroot -h10.30.30.10 -p site_ua

Ще варіанти використання mysqldump

Наприклад нам потрібна база даних на dev зону, пісочницю, а розмір основної БД дуже великий. Можна скористатися ключем -where="true limit 150", якому ми явно вкажемо вибірку даних не більше 150 записів. Ось приклад:

Mysqldump -uroot -h10.30.30.10 -p --where="true limit 150" site_ua > site_ua.sql

Якщо нам потрібна лише структура без даних, то можна скористатися ключем - no-data, ось приклад

Mysqldump -uroot -h10.30.30.10 -p --no-data site_ua > site_ua.sql

Якщо нам потрібна копія лише однієї таблиці, то приклад команди:

Mysqldump -u root -p testdb tablename > testdb_table_backup.sql

Якщо нам потрібна копія тригерів, процедур та подій (вбудованого планувальника), то ось приклад:

Mysqldump --no-create-info --no-data --triggers --routines --events -uroot -p site_ua | gzip > ~/database.sql.gz

Ще можна одразу створити заархівований дамп бази. Зробити це можна ось так:

Mysqldump -uroot -p site_ua | gzip > /path/to/site_ua.sql.gz

І ще можна вказати дату створення архіву, ось так:

Mysqldump -uroot -p site_ua | gzip > `date +/path/to/site_ua.sql.%Y%m%d.%H%M%S.gz`

Ключі для mysqldump

Нижче будуть наведені найбільш популярні ключі mysqldump:

Розгорнути список...

  • -add-drop-database - Додає оператор DROP DATABASE перед кожним оператором CREATE DATABASE.
  • -add-drop-table - Додає оператор DROP TABLE перед кожним оператором CREATE TABLE.
  • —add-locks — Додає оператор LOCK TABLES перед виконанням та UNLOCK TABLE після виконання кожної дампи таблиці (для прискорення доступу до MySQL).
  • -all-databases, -A - Зберігає всі таблиці з усіх баз даних, які знаходяться під керуванням поточного сервера.
  • —allow-keywords — Дозволити створювати імена стовпців, які збігаються із ключовими словами. Відсутність конфліктів забезпечується додаванням імені таблиці як префікс до імені кожного стовпця.
  • -comments, -i - Даний параметр дозволяє додати в дамп додаткову інформацію, Таку, як версія mysqldump, версія MySQL, ім'я хоста, на якому розташований сервер MySQL.
  • —compact — Цей параметр вимагає від mysqldump створити дамп, використовуючи якомога компактніший формат. Параметр є протилежним -comments.
  • —compatible=name — Параметр генерує висновок, який сумісний з іншими СУБД або старішими версіями MySQL. Замість ключового слова name можна використовувати: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options" . Можна використовувати кілька значень, розділивши їх комами.
  • -complete-insert, -c - Використовується повна форма оператора INSERT (з іменами стовпців).
  • —create-options — Додає додаткову інформацію до операторів CREATE TABLE. Це може бути тип таблиці, початкове значення AUTO_INCREMENT та інші параметри.
  • -databases, -B - Параметр дозволяє вказати імена декількох баз даних, для яких необхідно створити дамп.
  • -delayed - Використовувати команду INSERT DELAYED при вставці рядків.
  • -delete-master-logs - На головному сервері реплікації автоматично видаляються бінарні логи (logbin) після того, як дамп був успішно створений за допомогою mysqldump. Цей параметр автоматично включає параметр «master-data».
  • —disable-keys, -K — Для кожної таблиці оточує оператор INSERT виразами /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; та /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; у виведенні результату дампа. Це прискорить завантаження даних на сервер для таблиць типу MyISAM, оскільки індекси створюються після внесення всіх даних.
  • -extended-insert, -e - Використовувати команду INSERT з новим багаторядковим синтаксисом(Підвищує компактність і швидкодію операторів введення).
  • -flush-logs, -F - Записати на диск дані системного журналуз буфера MySQL-сервера перед початком виконання дампа
  • -force, -f - Продовжувати навіть якщо в процесі створення дампа сталася помилка.
  • —hex-blob — Параметр дозволяє подати бінарні дані в полях типу BINARY, VARBINARY, BLOB та BIT у шістнадцятковому форматі. Так послідовність "abc" буде замінена на 0x616263.
  • -ignore-table=db_name.tbl_name — Дозволяє ігнорувати таблицю tbl_name бази даних db_name під час створення дампи. Якщо з дампа необхідно виключити кілька таблиць, необхідно використовувати кілька параметрів "ignore-table", вказуючи по одній таблиці в кожному з параметрів.
  • -insert-ignore - Додає ключове слово IGNORE - оператор INSERT.
  • —lock-all-tables, -x — Вказання цього параметра призводить до блокування всіх таблиць у всіх базах даних під час створення повного дампа всіх баз даних.
  • —lock-tables, -l — Вказання цього параметра призводить до блокування таблиць бази даних, для якої створюється дамп.
  • —no-autocommit — Включає всі оператори INSERT, що належать до однієї таблиці, до однієї транзакції, що призводить до збільшення швидкості завантаження даних.
  • -no-create-db, -n - Пригнічує створення в дампі операторів CREATE DATABASE, які автоматично додаються при використанні параметрів -databases і -all-databases.
  • -no-data, -d - Пригнічує створення операторів INSERT в дампі, що може бути корисно при створенні дампа структури бази даних без даних.
  • —opt — Параметр призначений для оптимізації швидкості резервування даних і є скороченням, яке включає такі опції: —quick —add-drop-table —add-locks —create-options —disable-keys —extended-insert —lock-tables —set-charset . Починаючи з MySQL 4.1, параметр opt використовується за умовчанням, тобто. всі вищезазначені параметри включаються за замовчуванням, навіть якщо вони не вказуються. Щоб виключити таку поведінку, необхідно скористатися параметрами -skip-opt
  • —order-by-primary — Вкажіть параметр. що кожна таблиця сортується за первинного ключаабо першим унікальним індексом.
  • -port, -P - Номер TCP порту, що використовується для підключення до хоста.
  • —protocol=(TCP|SOCKET|PIPE|MEMORY) — Параметр дозволяє встановити протокол підключення до сервера.
  • -quick, -q - Дозволяє почати формування дампа, не чекаючи повного завантаженняданих з сервера та заощаджуючи тим самим пам'ять.
  • -quote-names, -Q - Поміщає імена баз даних, таблиць і стовпців у зворотні апострофи. Починаючи з MySQL 4.1, цей параметр увімкнено за замовчуванням.
  • —replace — Додає ключове слово REPLACE до оператора INSERT. Цей параметр вперше з'явився у MySQL 5.1.3.
  • -result-file=/path/to/file, -r /path/to/file - Параметр направляє дамп в файл file. Цей параметр особливо зручний у Windows без використання командного рядка. коли можна перенаправити результат у файл за допомогою послідовностей > та >>.
  • -routines, -R - Даний параметр створює дамп збережених процедур і функцій. Доступний з MySQL 5.1.2.
  • -single-transaction - Параметр створює дамп у вигляді однієї транзакції.
  • -skip-comments - Даний параметр дозволяє придушити виведення в дамп додаткової інформації.
  • -socket=/path/to/socket, -S /path/to/socket — Файл сокету для підключення до localhost.
  • —tab=/path/, -T /path/ — При використанні цього параметра в каталозі path для кожної таблиці створюються два окремі файли: tbl_name.sql, що містить оператор CREATE TABLE, та tbl_name.txt, який містить дані таблиць, розділені символом табуляції . Формат даних може бути перевизначений за допомогою параметрів —fields-xxx і —lines-xxx.
  • —tables — Перекриває параметри —databases (-B). Всі аргументи, що йдуть за цим параметром, трактуються як імена таблиць.
  • - Triggers - Створюється дамп тригерів. Цей параметр увімкнено за замовчуванням. для його відключення слід використовувати параметр -skip-triggers.
  • -events, -E - Створюється дамп подій. Дивіться MySQL Event Scheduler або вбудований диспетчер подій у MySQL.
  • -tz-utc - при використанні даного параметра в дамп буде додано оператор виду SET TIME_ZONE = '+00:00', який дозволить обмінюватися дампа в різних часових зонах.
  • -verbose, -v - Розширений режим виведення. Висновок більше детальної інформаціїпро роботу програми.
  • -version, -V - Вивести інформацію про версію програми.
  • -where='where-condition', -w 'where-condition' — Виконати дамп лише вибраних записів. Зверніть увагу, що лапки обов'язкові.
  • -xml, -X - Представляє дамп бази даних у вигляді XML.
  • -first-slave, -x - Блокує всі таблиці у всіх базах даних.
  • -debug = ..., - # - Відстежувати проходження програми (для налагодження).
  • -help - Вивести довідкову інформаціюта вийти з програми.

Ідея статті, створити якісний посібник з встановлення та роботи з програмою mysqldump. Застосовуючи безліч прикладів і зібравши все корисні опціїта параметри роботи з цією утилітою. Все в одну статтю складно вмістити, тому все буде стисло і по суті. Якщо хтось, чогось не розуміє, звертаємось у коментарі до статті.

Розділи:

Встановленняmysqldump:

Що таке mysqldump?

MySQLdump– це серверний додаток, що дозволяє робити резервне копіювання (далі дамп) баз даних та зберігати їх у окремому файлі. При цьому можна здійснювати гнучкі налаштування дампа: кілька або всі бази даних, архівація gzip, додавання команд lock, drop і багато іншого. Також можливий зворотний імпортрезервних копій БД. Здійснювати можна з допомогою PHPАле це неприйнятно для великих проектів, які мають велику вагу даних.

Ця програма дуже корисна при реалізації експорту та імпорту даних із БД. Вона може бути стандартно встановлена ​​на вашому хостингу (точніше mysql сервері). Але для того, щоб відточити майстерність роботи з mysqldump і навчиться встановлювати, можна поставити її на denwer. Що ми зараз і зробимо.

Завантажити mysqldump

Ви завжди можете скачати програму mysqldump у нас на сайті, при цьому завантаження програми абсолютно безкоштовно. Завантажте mysqldump за прямим посиланням нижче.

Як встановити mysqldump?

Встановлювати будемо на локальний сервер Denwer. Встановити програму легко і просто, для цього дотримуйтеся нижченаведених інструкцій та скріншот.

1.Копіюємо файл mysqldump.exe в папку з денвером:

D:\WebServers\usr\local\mysql5\bin\
При цьому у вас може бути трохи інша назва папки mysql5, наприклад, mysql-5.1 або трохи видозмінена. Тому, для більшої ясності, нижче надано скріншот:

2.Запускаємо денвер

Напевно, ви і самі знаєте як запустити Denwer.


3.Запускаємо консоль:

Пуск->Виконати->cmd.exeабо в Windows 7: Пуск->Пошук->Вводимоcmd.exe->Enter, як показано на скріншоті:

4.Тестуємо:

За допомогою команд у консолі, переходимо на віртуальний диск денвера (у мене W:\) та в папку з додатком mysqldump. Для підтвердження виконання команди тиснемо Enter.

Вводимо команди:

W:- заходимо на віртуальний диск денвера

cdusr\local\mysql5\bin- Заходимо в папку з додатком

mysqldump -uroot ім'я_вашої_бд>ім'я_файлу.sql- Тестуємо, робимо дамп довільної бази даних у файл, який збережеться в папку bin.

У мене установка виконана успішно, сподіваюся, у вас теж. У папці bin знаходимо файл резервної копії БД. Щоб навчитися ширше використовувати програму, читайте такі розділи статті.

Початок роботи: експорт та імпорт БД

Експорт бази даних

Ми вже встановили програму та навчилися користуватися консолем. Тестовий дамп ми вже робили. Тепер зробимо простий дамп бази даних у потрібний нам каталог. Для цього я створив раніше використовувану базу даних під назвою “test”. Вона знаходиться на локальному сервері denwer. Нижче надані покрокові командиконсоля для дампа бд test у потрібну папку та потрібний файл.

W: cdusr\local\mysql5\bin mysqldump -uroot test>D:\test\easydump.sql

На скріншоті нижче показаний дамповий файл у папці тест:

Експорт виконано успішно. Тепер спробуємо імпортувати цей файл на наш сервер.

Імпорт бази даних

Для імпорту БД, очищаємо БД у phpmyadmin, та користуємося наступною командою у cmd.exe:

Mysql -uroot test

Важливо: якщо при експорті ми використовували mysqldump…, то при імпорті потрібно починати команду з mysql. У цьому прикладі полягає базове використання програми mysqldump для створення резервних копій (бекапу) баз даних. Ще більше команд і прикладів, ви знайдете в розділі та статті .

MySQLdump приклади

Нижче наведені приклади використання mysqldump. За допомогою яких можна не тільки робити бекап, але й додавати деякі параметри резервного копіювання: стиснення за допомогою gzip, додавання дати бекапу, робити дамп лише кількох таблиць або структури БД, використовувати гнучкі налаштування. Ці параметри дозволяють збільшити швидкість виконання дампа та економно використовувати місце дискового простору.

Створення дампа

mysqldump –uUSER -h82.82.82.82 -pPASSWORD DATABASE > /path/to/file/dump.sql

-uабо --user=...- Ім'я користувача

-hабо --host=... - віддалений хост(для локального хоста можна опустити цей параметр)

-pабо --password- Запитати пароль

database- ім'я бази даних, що експортується

/path/to/file/dump.sql- шлях та файл для дампа

Робимо дамп декількох баз даних, для цього використовуємо атрибут --databases або скорочено -B, дивіться на прикладі:

Mysqldump -uroot -h82.82.82.82 -p -B database1 database2 database3 > databases.sql

Якщо ви бажаєте створити дамп всіх баз даних, необхідно використовувати параметр -all-databases або -А в скороченому вигляді, дивимося приклад:

Mysqldump -uroot -h82.82.82.82 -p -A > all-databases.sql

Створюємо структуру бази без даних

Для цього необхідно використовувати параметр --no-data як показано на прикладі:

Mysqldump --no-data - uUSER -pPASSWORD DATABASE > /path/to/file/schema.sql

Створюємо дамп лише однієї чи кількох таблиць БД

mysqldump -uUSER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > dump.sql

Створюємо дамп і архівуємо його вgzip

mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Створюємо дамп із зазначенням дати в імені файлу

mysqldump -uUSER -pPASSWORD DATABASE | gzip > `date +dump.sql.%Y%m%d.%H%M%S.gz`

Використовуємо додаткові атрибути

mysqldump -Q -c -e -uUSER -pPASSWORD DATABASE > /path/to/file/dump.sql

Як згадувалося раніше, ці атрибути зменшують підсумковий розмір файлу і прискорюють процес резервного копіювання. А точніше:

-Qобертає імена зворотними лапками

-cробить повну вставку, включаючи імена колонок

-eробить розширену вставку.

Робити дамп (бекап) бази даних дуже важливо. Тому я зробив деякі коментарі з прикладами до такої чудовою утилітоюяк mysqldump.

mysqldump – утиліта дозволяє отримати дамп вмісту бази даних або сукупності баз для створення резервної копії або пересилання даних на інший SQL-сервер баз даних (не обов'язково MySQL-сервер). Дамп міститиме набір команд SQL для створення та/або заповнення таблиць.

mysqldump-u root -p -f name_database >

Цією командою ми робимо бекап базиданих під ім'ям name_database на диск С файл mydb_backup_name_database.txt

Файл можна створювати, MySQL створить його сам.

mysql-u root -p -f name_database< C:\mydb_backup_name_database.txt

цією командою ми імпортуємо дані бекапу з файлу C:\mydb_backup_name_database.txt

Примітка: -f, --force - опція, яка вказує на продовження навіть при отриманні помилки SQL, тобто. ігнорувати помилки. Наприклад, якщо в таблиці вже існує у всьому ідентичний рядок.

Щоб пароль не вимагався, потрібно писати його відразу після -p, тобто без пробілів. Якщо пароль Pwd, то приклад вигладить так:

mysqldump-u root -p Pwd-f name_database > C:\mydb_backup_name_database.txt

Якщо ви часто використовуєте цю команду, то краще зробити окремого користувачаз необхідними правами, щоб менше світити пароль root-а

Розглянемо більше тонкі налаштування mysqldump:

--databasesдозволяє зробити так, що mysqldump включить до сценарію відновлення команди CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME та USE DBNAME. Це дозволить створювати робочі бази "з нуля". Тобто без використання --databases мається на увазі, що користувач відновлює одну базу даних і явно вказує, куди потрібно поміщати відновлювані дані. Якщо ж backup створюється з метою зробити повністю робочу копію даних, наприклад, на іншому MySQL-сервері, потрібно використовувати цей ключ;

--all-databasesдозволяє зробити копії всіх баз даних, які існують на даному MySQL-сервері. Якщо ж потрібно зробити копії лише деяких баз, потрібно просто вказати їх через пропуск при виклику mysqldump з командного рядка (див. вище);

Ключ --help. Програма mysqldump має багато версій. Подивитися, які можливості підтримуються безпосередньо Вашою версією, можна за допомогою цього ключа;

--add-drop-table- ключ, який змусить mysqldump додавати до підсумкового сценарію команду drop table перед створенням таблиць. Це дозволить уникнути деяких помилок під час відновлення бази з резервної копії. Звичайно, потрібно враховувати те, що таблиці, що знаходяться в робочій копії (якщо таблиці з таким же ім'ям існують у backup), перед відновленням із резервної копії будуть видалені з основної бази та перестворені з backup;

--no-data. За допомогою цього ключа можна швидко зробити копію структури таблиці/баз без даних. Наприклад, Ви створили складну таблицю та хотіли б зберегти на майбутнє її структуру, а самі дані, що знаходяться в цій таблиці, Вам у резервній копії не потрібні;

--result-file=...- цей ключ можна використовувати для перенаправлення виведення файлу. Можна використовувати звичайне unix-перенаправлення командою ">", а можна – ось цей ключ. Кому що подобається;

Ще один дуже корисна порадаз використання mysqldump в середовищі хостингу. Як правило, при використанні хостингу користувача накладаються деякі обмеження. Наприклад, не можна зайняти більше деякої кількості фізичної пам'яті(RAM, ОЗП). mysqldump за умовчанням поміщає всі отримані від MySQL-сервера дані на згадку, та був записує усе це на диск. Відповідно, якщо провайдер дає Вам зайняти, наприклад, 30Мб пам'яті, а база, копію якої Ви робите за допомогою mysqldump, займає 50Мб, звичайно тут виникне помилка - mysqldump не зможе відпрацювати коректно і завершиться аварійно, про що Вам повідомить. Щоб "змусити" mysqldump писати дані відразу на диск, а не зберігати їх, нехай навіть тимчасово, в пам'яті, використовуйте ключ --quick. Це вирішить проблему.

Наведемо ще кілька корисних прикладів:

mysqldump -u root -p Pwd-f --default-character-set=cp1251 DBNAME| gzip -c > filename.txt .gz

розпаковувати такий архів можна командою:

gunzip filename.txt .gz

Щоб знати, за яке число було зроблено бекап, можна написати таку команду:

mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME | gzip -c > `date "+%Y-%m-%d"`.gz

а якщо доводиться робити дампи з різними кодуваннями, то зручно користуватися змінними:

set DBCHARACTER= utf8

set DBNAME= breach

mysqldump -u root -p Pwd-f --default-character-set=$ DBCHARACTER $DBNAME| bzip2 -c > sql. $DBNAME.`date "+%Y-%m-%d"`.bz2

Якщо Ви хочете автоматизувати видалення старих архівів, спробуйте скористатися cron командою findяка зазвичай є в unix. Запускаючи періодично

find~/каталог-з-архівами -name "*.gz" -mtime +7 -exec rm -f() \;

Тим самим Ви видалятимете архіви, які "старші" семи днів.

Дана утиліта дозволяє отримати дамп ("моментальний знімок") вмісту бази даних або сукупності баз для створення резервної копії або пересилання даних на інший SQL-сервер баз даних (не обов'язково MySQL-сервер). Дамп міститиме набір команд SQL для створення та/або заповнення таблиць.

Якщо ж резервна копіястворюється на сервері, то замість описуваної утиліти слід використовувати mysqlhotcopy. See section 4.8.6 mysqlhotcopy , Копіювання баз даних та таблиць MySQL .

Shell> mysqldump database або mysqldump --databases DB1 або mysqldump --all-databases

Якщо не вказувати імена таблиць або використовувати параметри --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 section 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, що використовується для підключення до хоста (застосовується при підключенні до хостів, відмінних від localhost, для якого використовуються сокети Unix). -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 Для кожної заданої таблиці створює файл a `table_name.sql" , що містить SQL CREATE команди для створення таблиці, і файл `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 Установіть значення змінних. Доступні для використання змінні наведені нижче. -v, --verbose Розширений режим виведення. Виведення більш детальної інформації про роботу програми. -V, --version Вивести інформацію про версію та вийти з програми. -w, --where="where-condition" Виконати дамп лише вибраних записів. Зверніть увагу, що лапки обов'язкові. "--where=user="jimf"" "-wuserid>1" "-wuserid -X, --xml Представляє дамп бази даних у вигляді XML. -x, --first-slave Блокує всі таблиці у всіх базах даних. -O net_buffer_length=#, where # Найчастіше утиліта mysqldump використовується для отримання резервної копії всіх баз даних See section 4.4.1 Резервне копіювання баз даних mysqldump --opt database > backup-file.sql

Mysql database

Mysql -e "source /patch-to-backup/backup-file.sql" database

Ця утиліта досить часто використовується і для перенесення інформації з бази даних на інший MySQL-сервер:

Mysqldump --opt database | mysql --host = remote-host -C database

Цілком можливо отримати дамп кількох баз даних за допомогою однієї команди:

Mysqldump --databases database1 > my_databases.sql

Якщо потрібний дамп всіх баз даних, можна використовувати:

Mysqldump --all-databases > all_databases.sql

Ця стаття може бути корисною, якщо у вас є веб-сайт, який використовує систему керування контентом (Joomla, WordPress, OpenCart і т.д.), і ви вирішили перенести його на інший сервер. Для цього потрібне не тільки перенесення файлів сайту, а й перенесення. Перед тим, як розпочати перенесення веб-сайту, необхідно підібрати хороший і замовити його, щоб отримати доступ до нового хостингового облікового запису. Ми, наприклад, пропонуємо окремий , Joomla та PrestaShop. Якщо ви хочете перенести сайт на нове ім'я і вам потрібно, не поспішайте. Наш план віртуального хостингу S4 надасть вам домен і подарунок. Якщо ваш сайт недостатньо віртуального хостингу, ви завжди можете замовити VPS або .

Для перенесення бази даних необхідно спочатку створити її дамп, тобто розмістити вміст окремий sql-файл. Робиться це у меню phpMyAdminна хостингу, звідки ви переносите сайт. Зайдіть у phpMyAdmin, виділіть зліва базу даних, яку необхідно перенести, та натисніть на кнопку « Експорт» у верхньому меню.

Відкриється діалогове вікно, де обов'язково виберіть тип бази SQL, після чого натисніть кнопку ОК. Зачекайте, поки файл бази даних завантажиться на ваш комп'ютер.

Тепер цей файл потрібно коректно розмістити на нашому хостингу. Для цього необхідно спочатку створення бази даних MySQL в cPanel акаунті, додавання до неї користувача та призначення привілею. Нижче розпоряджено, як створити базу даних в MySQL.

Зайдіть у cPanel і знайдіть розділ « Бази даних", Виберіть "".

Відкриється нове вікно. На кроці 1 введіть назву бази. Зверніть увагу на те, що ім'я БД завжди буде з префіксом, перша половина імені буде містити в собі ім'я cPanel акаунту.

Після введення імені натисніть кнопку « Наступний крок».

На кроці 2 необхідно створити користувача MySQL до бази та задати пароль для нього. Після введення всіх даних натисніть кнопку « Створити користувача».

При налаштуванні привілеїв створеного користувача виберіть опцію « ВСІ ПРАВА» і перейдіть до наступного кроку.

Якщо у попередніх кроках все було зроблено правильно, майстер баз даних повідомить вас про успішне завершення створення БД на хостингу.

Створену БД ви тепер зможете знайти у списку доступних баз MySQL в однойменному меню контрольної панелі

Тепер для відновлення бази даних MySQL імпортуємо до створеної бази вміст збереженого зі старого хостингу файлу з розширенням .sql. Для цього на головній сторінці cPanel виберіть пункт меню “ phpMyAdmin” у тому ж розділі “ Бази даних”. У вікні, що відкрилося, в меню зліва виберіть щойно створену БД і натисніть на вкладку « Імпорт» у верхньому меню.

Натисніть кнопку " виберіть файл», у діалоговому вікні виберіть раніше збережений файл sql і завантажте його на хостинг. Переконайтеся, що вибрано тип кодування utf-8. Після натискання кнопки ОК, дочекайтеся повідомлення про успішний імпорт бази даних.

На цьому всі дії, необхідні для перенесення бази даних на інший, виконані.