16.10.2017 Не работает авторизация в MySQL после установки пароля 18.12.2015 Как восстановить mysql базы из файлов /var/lib/mysql/ 03.12.2013 Centos: автоматическая загрузка apache, mysql 30.10.2013 ISP ошибка $cfg['Servers'] при смене пароля на mysql 19.02.2013 CentOS - MySQL Daemon failed to start 17.12.2009 Настройка PHP интерпретатора 01.03.2011 Установка и настройка Apache 17.12.2009 Установка MySql на OpenBsd, задать пароль root
#31

Mysql команды, создание дампа - утилита mysqldump

Как создать дамп базы в mysql.
Лучше наверное делать так, по крайней мере у меня на OpenBsd работает без параметра f нормально:
  1. mysqldump -u root -pПароль name_database > /home/mydb_backup_name_database.sql
Также маны никто не отменял.

Делаем дамп (бэкап) базы данных, используя утилиту mysqldump

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

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

Этой командой мы делаем бэкап базы данных под именем name_database на диск С в файл mydb_backup_name_database.txt

Файл можно не создавать, MySQL создаст его сам.

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

этой командой мы импортируем данные бэкапа из файла C:\mydb_backup_name_database.txt

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

Чтобы пароль не запрашивался, нужно писать его сразу после -p, то есть без пробелов. Если пароль Pwd, то пример выгладит так:

  1. mysqldump -u root -pPwd -f name_database > C:\mydb_backup_name_database.txt

Если вы часто используете данную команду, то лучше сделать отдельного пользователя с необходимыми правами, дабы поменьше светить пароль root-а

Рассмотрим более тонкие настройки mysqldump:

--databases позволяет сделать так, что mysqldump включит в сценарий восстановления команды:
  1. 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. Это решит проблему.

Приведем еще пару полезных примеров:

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

а если приходится делать дампы с разными кодировками, то удобно пользоваться переменными:

  1. set DBCHARACTER = utf8
  2. set DBNAME = breach
  3. mysqldump -u root -pPwd -f --default-character-set=$DBCHARACTER $DBNAME | bzip2 -c > sql.$DBNAME.`date "+%Y-%m-%d"`.bz2

Кстати, если Вы хотите автоматизировать удаление старых архивов, попробуйте воспользоваться cron и командой find, которая обычно есть в unix. Запуская периодически:
  1. find ~/каталог-с-архивами -name "*.gz" -mtime +7

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

17.12.2009 Установка MySql на OpenBsd, задать пароль root 29.09.2010 Mysql команды, создание дампа - утилита mysqldump 29.09.2010 Mysql команды, создание дампа - утилита mysqldump 17.12.2009 MySQL и русская кодировка WINDOWS-1251 23.02.2010 Задаем пароль root в mysql на mandriva 17.12.2009 Консоль и файловый менеджер 27.01.2011 Полезные ссылки
О сайте