Что такое mysqldump и как его использовать?

Оглавление:

Что такое mysqldump и как его использовать?
Что такое mysqldump и как его использовать?
Anonim

Являясь одной из ведущих свободно доступных баз данных, MySQL является популярным выбором для многих веб-приложений. Находясь в Интернете, ваше приложение подвергается вредоносным атакам. Если ваш сервер скомпрометирован, в лучшем случае вам потребуется переустановить приложение; в худшем случае вы можете потерять свои данные. Кроме того, вы можете столкнуться с ситуацией, когда вам необходимо перенести базу данных с одного сервера на другой.

Для чего используется mysqldump?

Инструмент mysqldump поможет вам как в ситуациях компрометации сервера, так и в ситуациях миграции. Его основная функция - взять базу данных MySQL и вывести ее в виде текстового файла. Но не любой текстовый файл; файл представляет собой набор операторов SQL. Эти операторы при выполнении восстанавливают базу данных до точного состояния, в котором она находилась на момент создания дампа.

Используйте mysqldump для создания экспортов базы данных в качестве резервных копий или при перемещении базы данных на новый хост. В любом случае текстовый файл будет импортирован обратно на сервер базы данных MySQL. Он выполнит все операторы SQL в файле, который восстановит базу данных до исходного состояния. В этой части не используется команда mysqldump, но и без этой утилиты это было бы невозможно.

В документации по MySQL перечислены другие методы создания резервных копий, но у них есть недостатки:

  • Горячее копирование базы данных из MySQL Enterprise - отличный способ получить эти резервные копии, если вы не возражаете против ценника Enterprise.
  • Копирование каталогов данных базы данных может быть сложным при перемещении между операционными системами, так как места назначения будут разными.
  • Экспорт в текстовый файл с разделителями даст вам содержимое, но вам придется воссоздать структуру.
  • Вы часто можете создавать резервные копии баз данных из программ с графическим интерфейсом, таких как MySQL Workbench. Но это ручной процесс; это не то, что вы можете написать в сценарии или включить в пакетное задание.

Установите инструмент mysqldump

Для Windows ознакомьтесь с нашими инструкциями по установке MySQL в Windows 7 (процесс установки такой же, как и для Windows 10). В macOS см. наши инструкции по установке MySQL в macOS 10.7 (опять же, старее, но все еще применимо). Пользователи систем Linux на основе Ubuntu могут использовать следующую команду для установки клиента и утилит MySQL:

sudo apt install mysql-client

Извлечение дампа MySQL

После установки используйте mysqldump, чтобы получить полную резервную копию базы данных.

mysqldump -h [имя или IP-адрес хоста вашей БД] -u [имя пользователя БД] -p [имя базы данных] > db_backup.sql

Вот описание флагов, используемых в этой команде:

  • - h: Этот флаг является хостом базы данных. Это может быть полное имя хоста (например, myhost.domain.com) или IP-адрес. Оставьте это поле пустым, если вы запускаете команду на том же хосте, что и сервер MySQL.
  • - u: Ваше имя пользователя.
  • - p: Если вы правильно защитили установку MySQL, вам потребуется пароль для подключения. Этот флаг без аргументов запрашивает пароль при выполнении команды. Иногда полезно указать пароль непосредственно в качестве аргумента этого флага, например, в сценарии резервного копирования. Но в командной строке этого делать не следует, потому что если кто-то получит доступ к вашему компьютеру, он может получить этот пароль в истории команд.
  • > db_backup.sql: Эта часть указывает mysqldump направить вывод в файл. Обычно команда выводит все на консоль, то есть вы увидите на экране несколько операторов SQL. Символ > направляет вывод в именованный текстовый файл. Если этот файл не существует, он создается автоматически.

По завершении у вас будет файл. SQL. Это текстовый файл, содержащий операторы SQL. Вы можете открыть его в любом текстовом редакторе, чтобы проверить содержимое. Вот экспорт из базы данных WordPress, который показывает, как эти файлы объединяются.

Image
Image

Файл разделен на разделы. Первый раздел настраивает таблицу для комментариев WordPress. Второй раздел воссоздает содержимое этих таблиц (в данном примере записи комментариев). Когда вы повторно импортируете дамп MySQL, команда работает с файлом, выполняет операторы и перестраивает базу данных так, как она была.

Импорт файла дампа MySQL

Прежде чем импортировать файл дампа, вам потребуется уже созданная база данных и действительные имя пользователя и пароль. Вы также должны иметь все разрешения для базы данных. Вам не нужно разрешение GRANT, но проще предоставить их всем.

Узнайте больше о правах доступа к базе данных, прежде чем изменять роли безопасности в базе данных.

Чтобы повторно импортировать данные, войдите на сервер MySQL с помощью команды mysql. Введите use [имя базы данных] в командной строке и замените имя базы данных. Введите source [имя файла] и замените имя файла дампа, который вы сделали ранее.

Когда вы закончите, появится список сообщений о том, что операторы SQL выполняются. Следите за ошибками, но если у вас есть правильные разрешения, все будет в порядке.

Image
Image

По завершении процесса у вас будет дубликат исходной базы данных. Чтобы проверить сходство между базами данных, выполните еще один дамп, а затем сравните два вывода. Используйте текстовый редактор или специальный инструмент для сравнения двух файлов.

Image
Image

Между этими файлами есть два различия, обозначенные красными линиями вверху и внизу правой полосы прокрутки. Первая - это строка, содержащая имя базы данных, и она отличается тем, что файлы были названы по-разному. Второй - временная метка файла дампа. Это отличается, потому что вторая база данных была воссоздана после первой. В остальном файлы точно такие же, как и базы данных, которые их создали.

FAQ

    Как исправить ошибку mysqldump: Доступ запрещен при использовании таблиц блокировки?

    Попросите администратора базы данных предоставить вам привилегию LOCK. Если это не решит проблему, попробуйте запустить ту же команду mysqldump, добавив флаг - -single-transaction, например [ $ mysqldump --single-transaction] [-u user] [-p DBNAME] > backup.sql

    Можете ли вы использовать предложение «где» с mysqldump?

    Используйте предложение WHERE при создании резервной копии, которая включает только строки, удовлетворяющие заданному условию. Например, чтобы вывести данные только из строк с идентификатором в столбце больше 100, введите «mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Рекомендуемые: