Mysql команди, створення дампа - утиліта mysqldump

Як створити дамп бази в mysql.
Краще напевно робити так, принаймні у мене на OpenBsd працює без параметра f нормально:

Також мани ніхто не відміняв.

Робимо дамп (бекап) бази даних, використовуючи утиліту mysqldump

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


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

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


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

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

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


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

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

--databases дозволяє зробити так, що mysqldump включить в сценарій відновлення команди:


Це дозволить створювати робочі бази з нуля. Тобто, без використання --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. Це вирішить проблему.

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


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


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


Ви будете видаляти архіви, які старше семи днів. Прочитайте документацію по find - вона доступна по команді man find в unix shell.