backup баз данных при помощи Mysqldump

Создаем backup баз данных при помощи Mysqldump

Команда для создания backup базы данных, с помощью Mysqldump, выглядит следующим образом:

 

#mysqldump -u [имя пользователя] -p[ пароль ] --databases [имя базы данных] > [backup]

-u [имя пользователя] — пользователь с правами, хотябы для чтения.
-p[пароль] — пароль пользователя, указываем без пробела перед ключем, иначе запросит пароль
—databases [имя базы данных] — краткий вариант -B, указываем имя одной или нескольких баз данных для выгрузки в дамп. При создании backupа одной базы данных, опцию —databases, можно и не писать.
> — перенаправление вывода (stdout)

Создадим backup одной базы данных mysql:

#mysqldump -u adminDB -padminDBpass -B info-linux.ru > /backup/info-linux.ru.sql

После -p нет пробела, сразу указываем пароль. Таким образом созданный файл резервной копии, Будет содержть структуру и данные в /backup/info-linux.ru.sql. Если данные из этой базы не нужны, необходимо только сохранить структуру таблиц, то написать команду можно сдедующим образом

#mysqldump -u adminDB -padminDBpass --no-data -B info-linux.ru > /backup/structure_info-linux.ru.sql

Ключ —no-data ( краткий вариант -d ), таким образом ключ указывает mysqldump, в дамп не скидывать данные.

Можно создавать дампы только необходимых таблиц, конкретной базы данных:

#mysqldump -u adminDB -padminDBpass -B info-linux.ru --tables article users > /backup/info-linux.ru_tables.sql

Вышеприведенная команда, создаст backup таблиц article и users базы данных info-linux.ru и сохраняет в файл /backup/info-linux.ru_tables.sql.
Если нужен дамп без данных, а только со структурой таблиц, то используем снова ключ —no-data.
#mysqldump -u adminDB -padminDBpass —no-data -B info-linux.ru —tables access users > ./backup/info-linux.ru_tables_nodata.sql
Если необходимо создать backup нескольких баз данных, то просто перечисляем из название после ключа —databases ( -B ):

#mysqldump -u adminDB -padminDBpass -B info-linux.ru info-linux > /backup/info_linux.sql

Для создания резервной копии всех баз данных, необходимо использовать ключ —all-databases или более удобный и простой вариант: -A:

#mysqldump -u adminDB -padminDBpass -A > /backup/all_databases.sql

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

Восстановим данные из нашего backup

Ничего сложного в восстановлении базы данных нет, для этого воспользуемся стандартной программой-клиент mysql, перенаправим (stdin) в нее файл с нашей резервной копии. Делается это так:

#mysql -u adminDB -padminDBpass < /backup/all_databases.sql

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

#mysql -u adminDB -padminDBpass test < test_table.sql

В приведенном выше примере, помещаем в базу test таблицу test_table.
При помощи программы mysqldump, очень быстро копировать таблицы с данными или только структуры таблиц, из одной базы данных в другую. Небольшой пример:

#mysqldump -u adminDB -padminDBpass --no-data -B test1 --tables test_table > /struct_test_table.sql

Сбрасываем в дамп структуру таблицы test_table из базы данных test1.

#mysql -u adminDB -padminDBpass  other_testdb < struct_test_table.sql

Восстанавливаем структуру таблицы, из только созданной, резервной копии и разворачиваем ее в базу данных other_testdb.

Параметры программы Mysqldump

—help, -? Выводит справку по опциям.
—add-drop-database Перед каждой командой CREATE DATABASE добавляет команду, DROP DATABASE
—add-drop-table Перед каждой командой CREATE TABLE добавляет команду, DROP TABLE
—add-locks Для ускорения операций вставки обрамляет дамп командами LOCK TABLES и UNLOCK TABLES,
—all-databases, -A Создание резервной копии всех баз данных, данного сервера.
—allow-keywords Позволяет использовать имена столбцов, совпадающие с ключевыми словами. Добавляется префикс таблицы к имени такого столбца.
—character-sets-dir= путь Директории с наборами символов кодировок
—comments, -i Добавляет в файл дампа, дополнительную информацию ( версия MySQL, имя хоста ), отмена опцией —skip-comments
—compact Создает более компактный дамп. Включает автоматически опции: —skip-add-drop-table, —skip-add-locks, —skip-comments, —skip-disable-keys и —skip-set-charset при использовании данного параметра,

—compatible= имя Очень полезная опция, попытка повышения совместимости создаваемого дампа, с базой данных более старой версией MySQL. или другого типа. Возможные значения: ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options или no_field_options. Позволяется использовать несколько значений, разделенных запятыми.
—complete-insert, -c Позволяет использовать полную форму оператора INSERT, даже включая имена столбцов.
—compress, -C Использует компрессию, при обмене данными между сервером и клиентом, естественно при условии, что поддерживают компрессию как клиент так и сервер.
—create-options при использовании оператора CREATE TABLE включать все MySQL опции
—databases, -B Позволяет делать дамп нескольких баз данных, перечисленных после опции. В отсутствии этого параметра, mysqldump, воспринимает первое значение в качестве имени базы данных, а остальные как имена таблиц.
—default-character-set= кодировка. Опция устанавливающая кодировку по-умолчанию.
—delayed-insert  Использует INSERT DELAYED, вместо оператора INSERT.
—delete-master-logs Удаляет репликаций бинарный лог на основном сервере после создания дампа. опция —master-data включается автоматически, при использовании этой опции.
—disable-keys, -K Для каждой таблицы, оператор INSERT, обрамляется выражением /*! 40000 ALTER TABLE tbl_name DISABLE KEYS */ и /*! 40000 ALTER TABLE tbl_name ENABLE KEYS */.Опция позволяющая ускорять загрузку при восстановлении из дампа, для таблиц типа MyISAM, за счет создания индексов после вставки всех данных.
—dump-date Добавляет дату создания дампа, если включена опция —comments,
—extended-insert, -e Позволяет использовать синтаксис оператора INSERT. Ускоряет последующую вставку данных и уменьшает размер дампа.
—flush-logs, -F Перед созданием резервной копии, переоткрыть лог файлы Старый файл сохраняется с суффиксом -old. При использовании с ключем —all-databases (краткий вариант -A), будут переоткрыты лог-файлы, для которой делается дамп, каждой базы данных.
—flush-privileges После создания дампа базы данных Выполнять команду FLUSH PRIVILEGES .
—force, -f Даже в случае возникновения ошибки продолжает создание резервной копии .
—host= имя_хоста, -h имя_хоста Указывает хост MySQL сервера. По-умолчанию backup делается для localhost
—hex-blob Представляет бинарные данные полей в шестнадцатиричном формате ( hex ) BINARY, VARBINARY, BLOB и BIT.
—ignore-table= имя_базы.имя_таблицы Не скидывать в дамп «имя_таблицы» из базы «имя_базы». Для каждой игнорируемой таблицы, опцию нужно использовать повторно,
—insert-ignore В оператор INSERT дописывать опцию IGNORE. —lock-all-tables, -x. Во время создания резервной копии, блокировка всех таблиц, Опция отключает автоматически —single-transaction и —lock-tables.
—lock-tables, -l Блокирует таблицы базы данных, на момент создания резервной копии. Таблицы каждой базы блокируются отдельно, при дампе всех баз данных с этим ключом. Для так называемых транзакционных таблиц, типа InnoDB и BDB, лучше использовать с ключом —single-transaction.
—log-error= имя_файла  В файл «имя_файла» пишет ошибки и предупреждения.
—no-autocommit Для увеличения скорости выполнения большого количества запросов INSERT, Включает операторы INSERT для каждой таблицы, в операторы SET AUTOCOMMIT и COMMIT.
—no-create-db, -n   При использовании опций —databases и —all-databases, данная опция подавляет вывод в дамп оператора CREATE DATABASE,
—no-create-info, -t  Для пересоздания каждой таблицы из резервной копии, не писать CREATE TABLE,
—no-data, -d  Оставлять только операторы CREATE TABLE для создания структуры. Не скидывать в дамп содержимое таблиц.

—opt Групповая опция. Синоним включения опций, —add-drop-table, —add-locks, —create-options, —disable-keys, —extended-insert, —lock-tables, —quick, —set-charset. Включена по-умолчанию, ускоряет процесс создания резервной копии. Отключается опцией —skip-opt.
—order-by-primary Сортирует ряды таблиц по первому уникальному индексу, если индекс существует или по первичному ключу. Полезна если создается дамп таблиц MyISAM с дальнейшей вставкой в таблицы InnoDB.
—password[=password], -p[password] Пароль юзера, для подключения к серверу. Надо не забывать, что пароль должен идти сразу за ключом без разделяющего пробела. Если указать только саму опцию без пароля, он будет запрошен.
—port= номкр_порта, -P номкр_порта  Номер порта.
—protocol={TCP|SOCKET|PIPE|MEMORY} для подключения к MySQL серверу использовать указанный протокол.
—quick, -q Вместо того что-бы скидывать весь объем строк в буфер памяти, ключ принуждает Mysqldump восстанавливать строки по одной за раз. Полезна когда создаютя резервные копий при больших таблицах.
—quote-names, -Q Обрамляет имена ковычками баз данных, таблиц и колонок. Включена по-умолчанию.
—replace Начинается с версии MySQL 5.1.3, использует оператор REPLACE вместо INSERT.
-result-file= имя_файла, -r имя_файла Вывод результатов в файл. Естественно, если файл с таким именем существует, то он будет перезаписан.
—routines, -R Для использования данной опции, необходимы права SELECT на таблицу proc, системной базы данных mysql. Записывать в дамп хранимые процедуры и функции. Дамп будет содержать операторы CREATE PROCEDURE и CREATE FUNCTION. Эти операторы не будут содержать атрибутов времени создания и модификации хранимых процедур и функций и после восстановления дампа они будут равны времени восстановления, при использовании этой опции. Если нужно сохранить исходные атрибуты времени, вместо использования данной опции, лучше сделать дамп таблицы mysql.proc, под именем пользователя, который имеет на это достаточные права. Появление опции началось с версии MySQL 5.1.2.
—set-charset По-умолчанию, данная опция включена, что-бы подавить, используйте —skip-set-charset. Добавляет в дамп оператор SET NAMES со значением кодировки по-умолчанию.
—single-transaction Выполнять оператор BEGIN SQL, перед началом создания резервной копии. Данная опция используется только для таблиц, типа InnoDB. Только этот тип таблиц может быть сохранен в дамп в актуальном состоянии, после выполнения BEGIN SQL, и без блокировки приложения. Например могут измениться в процессе создания резервной копии таблицы типа MyISAM или MEMORY, с использованием данной опции, в итоге, информация в дампе будет противоречивой и неактуальной. Опции являются взаимоисключающими: —single-transaction и —lock-tables.
—socket= путь_к_файлу_socket, -S путь_к_файлу_socket Для подключения к localhost, использовать файл unix-socket.
—tables Названия стоящие за этой опцией, будут считаться именами таблиц.
—triggers Включает в backup триггеры, для каждой таблицы. Отменить действие можно с помощью —skip-triggers.
—user= имя_пользователя, -u имя_пользователя Имя юзера для подключения к серверу MySQL.
—verbose, -v Выводит информацию в ходе выполнения программы.
—where=’where_условие’, -w ‘where_условие’ Сбрасывает в дамп информацию, выбранную условием WHERE.
—xml, -X Создает дамп в формате XML

 

 

Источник: http://info-linux.ru

Оставьте комментарий