Като една от водещите свободно достъпни бази данни, MySQL е популярен избор за много уеб приложения. Тъй като е изложено на интернет, вашето приложение е изложено на злонамерени атаки. Ако вашият сървър е компрометиран, в най-добрия случай трябва да преинсталирате приложението; в най-лошия случай може да загубите данните си. Освен това може да попаднете в ситуация, в която трябва да мигрирате база данни от един сървър на друг.
За какво се използва mysqldump?
Инструментът mysqldump ви покрива както за компрометиране на сървъра, така и за ситуации на миграция. Основната му функция е да вземе MySQL база данни и да я изхвърли като текстов файл. Но не всеки текстов файл; файлът е набор от SQL изрази. Тези изрази, когато се изпълнят, възстановяват базата данни до точното състояние, в което е била, когато дъмпът е бил изпълнен.
Използвайте mysqldump за създаване на експорти на база данни като резервни копия или когато премествате базата данни на нов хост. И в двата случая текстовият файл ще бъде импортиран обратно в MySQL сървър на база данни. Той ще изпълни всички SQL изрази във файла, което възстановява базата данни до първоначалното й състояние. Тази част не използва командата mysqldump, но не би била възможна и без тази помощна програма.
Документите на MySQL изброяват други методи за създаване на резервни копия, но те имат недостатъци:
- Горещото копиране на база данни от MySQL Enterprise е чудесен начин за постигане на тези резервни копия - ако нямате нищо против цената на Enterprise.
- Копирането на директориите с данни на базата данни може да бъде трудно при преместване между операционни системи, тъй като дестинациите ще бъдат различни.
- Експортирането в текстов файл с разделители ще ви даде съдържанието, но ще трябва да пресъздадете структурата.
- Често можете да архивирате бази данни от GUI програми като MySQL Workbench. Но това е ръчен процес; не е нещо, което можете да скриптирате или да включите в групова работа.
Инсталирайте инструмента mysqldump
За Windows проверете нашите инструкции за инсталиране на MySQL на Windows 7 (процесът на инсталиране е същият за Windows 10). В macOS вижте нашите указания за инсталиране на MySQL на macOS 10.7 (отново по-стара, но все още приложима). Потребителите на Linux базирани на Ubuntu системи могат да използват следната команда за инсталиране на MySQL клиента и помощните програми:
sudo apt install mysql-клиент
Извличане на MySQL Dump
След инсталирането използвайте mysqldump, за да получите пълно архивиране на база данни.
mysqldump -h [името или IP на вашия DB хост] -u [името на потребителя на DB] -p [името на базата данни] > db_backup.sql
Ето описание на флаговете, използвани в тази команда:
- - h: Този флаг е хостът на базата данни. Може да бъде пълно име на хост (например myhost.domain.com) или IP адрес. Оставете това празно, ако изпълнявате командата на същия хост като MySQL сървъра.
- - u: Вашето потребителско име.
- - p: Ако правилно сте защитили инсталацията на MySQL, ще ви трябва парола за свързване. Този флаг без аргумент ви подканва за парола, когато изпълнявате командата. Понякога е полезно да предоставите паролата директно като аргумент на този флаг, например в скрипт за архивиране. Но при подканата не трябва, защото ако някой получи достъп до вашия компютър, може да получи тази парола в хронологията на командите.
- > db_backup.sql: Тази част казва на mysqldump да насочи изхода си към файл. Обикновено командата извежда всичко към конзолата, което означава, че ще видите няколко SQL оператора на екрана. Символът > насочва изхода към посочения текстов файл. Ако този файл не съществува, той се създава автоматично.
Когато приключи, ще имате. SQL файл. Това е текстов файл, съдържащ SQL изрази. Можете да го отворите във всеки текстов редактор, за да прегледате съдържанието. Ето експортиране от база данни на WordPress, което показва как тези файлове са събрани.
Файлът е разделен на секции. Първият раздел настройва таблицата за коментари в WordPress. Вторият раздел пресъздава съдържанието в тези таблици (в този пример записите на коментарите). Когато импортирате отново MySQL дъмпа, командата работи през файла, изпълнява операторите и изгражда отново базата данни по начина, по който е била.
Импортиране на Dump файл на MySQL
Преди да импортирате дъмп файла, ще ви е необходима вече създадена база данни и нейното валидно потребителско име и парола. Трябва също така да имате всички разрешения за базата данни. Нямате нужда от разрешение GRANT, но е по-лесно да ги дадете всички.
Научете повече за разрешенията на базата данни, преди да промените ролите за сигурност във вашата база данни.
За да импортирате повторно вашите данни, влезте в MySQL сървъра с командата mysql. Въведете use [име на база данни] при подканата и заменете името на базата данни. Въведете source [име на файл] и заменете името на дъмп файла, който сте взели преди това.
Когато приключите, се появява списък със съобщения, отбелязващи, че SQL операторите се изпълняват. Внимавайте за грешки, но ако имате правилните разрешения, трябва да сте добре.
Когато процесът приключи, ще имате дубликат на оригиналната база данни. За да проверите сходството между базите данни, извършете друг дъмп, след което сравнете двата изхода. Използвайте текстов редактор или специален инструмент за разлики, за да сравните двата файла.
Има две разлики между тези файлове, както е представено с червени линии в горната и долната част на дясната лента за превъртане. Първият е редът, който съдържа името на базата данни и това е различно, защото файловете са именувани по различен начин. Второто е клеймото за време за дъмп файла. Това е различно, защото втората база данни е пресъздадена след първата. В противен случай файловете са абсолютно еднакви, което означава, че базите данни, които са ги генерирали, са също.
ЧЗВ
Как се коригира грешката mysqldump: Достъпът е отказан при използване на заключващи таблици?
Помолете администратора на вашата база данни да ви даде привилегията LOCK. Ако това не разреши проблема, опитайте да изпълните същата команда mysqldump, като добавите флага - -single-transaction, като например [ $ mysqldump --single-transaction] [-u потребител] [-p DBNAME] > backup.sql
Можете ли да използвате клауза "къде" с mysqldump?
Използвайте клауза WHERE, когато създавате резервно копие, което включва само редовете, отговарящи на даденото условие. Например, за да изхвърлите данни само от редове с id колона, по-голяма от 100, въведете "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".