Поиск…


Синтаксис

  • mysqldump -u [имя_пользователя] -p [пароль] [другие параметры] db_name> dumpFileName.sql /// для резервного копирования одной базы данных
  • mysqldump -u [имя_пользователя] -p [пароль] [другие параметры] db_name [tbl_name1 tbl_name2 tbl_name2 ...]> dumpFileName.sql /// для резервного копирования одной или нескольких таблиц
  • mysqldump -u [имя_пользователя] -p [пароль] [другие параметры] --databases db_name1 db_name2 db_name3 ...> dumpFileName.sql /// Резервное копирование одной или нескольких полных баз данных
  • mysqldump -u [имя_пользователя] -p [пароль] [другие параметры] --all-databases> dumpFileName.sql /// Резервное копирование всего сервера MySQL

параметры

вариант эффект
- # Параметры входа в сервер
-h ( --host ) Хост (IP-адрес или имя хоста) для подключения. По умолчанию localhost ( 127.0.0.1 ) Пример: -h localhost
-u ( --user ) Пользователь MySQL
-p ( --password ) Пароль MySQL. Важно . При использовании -p между опцией и паролем не должно быть пробелов. Пример: -pMyPassword
- # Параметры дампа
--add-drop-database Добавьте инструкцию DROP DATABASE перед каждым оператором CREATE DATABASE . Полезно, если вы хотите заменить базы данных на сервере.
--add-drop-table Добавьте инструкцию DROP TABLE перед каждым оператором CREATE TABLE . Полезно, если вы хотите заменить таблицы на сервере.
--no-create-db CREATE DATABASE инструкции CREATE DATABASE в дампе. Это полезно, если вы уверены, что базы данных, которые вы сбросили, уже существуют на сервере, где вы загрузите дамп.
-t ( --no-create-info ) Запретите все инструкции CREATE TABLE в дампе. Это полезно, если вы хотите сбросить только данные из таблиц и будете использовать файл дампа для заполнения идентичных таблиц в другой базе данных / сервере.
-d ( --no-data ) Не записывайте данные таблицы. Это приведет к сбросу только операторов CREATE TABLE . Полезно для создания баз данных «шаблонов»
-R ( --routines ) Включите хранимые процедуры / функции в дампе.
-K ( --disable-keys ) Отключайте ключи для каждой таблицы перед вставкой данных и включайте ключи после ввода данных. Это ускоряет вставки только в таблицах MyISAM с неистинными индексами.

замечания

Результат операции mysqldump - это слегка комментируемый файл, содержащий последовательные операторы SQL, которые совместимы с версией утилит MySQL, которые были использованы для ее создания (с уделением особого внимания совместимости с предыдущими версиями, но без гарантии для будущих). Таким образом, восстановление базы данных mysqldump ed включает выполнение этих операторов. Как правило, этот файл

  • DROP s первая указанная таблица или представление
  • CREATE что таблица или представление
  • Для таблиц, сбрасываемых данными (т. --no-data Без опции --no-data )
    • LOCK s стол
    • INSERT все строки из исходной таблицы в одном выражении
  • UNLOCK TABLES
  • Повторяет вышеуказанное для всех других таблиц и представлений
  • DROP s первая включенная рутина
  • CREATE с этой программой
  • Повторяет то же самое для всех других процедур

Наличие DROP перед CREATE для каждой таблицы означает, что если присутствует схема, независимо от того, пуста она или нет, использование файла mysqldump для его восстановления будет заполнять или перезаписывать данные в нем.

Создание резервной копии базы данных или таблицы

Создайте моментальный снимок всей базы данных:

mysqldump [options] db_name > filename.sql

Создайте моментальный снимок нескольких баз данных:

mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql

Создайте снимок одной или нескольких таблиц:

mysqldump [options] db_name table_name... > filename.sql

Создайте моментальный снимок, исключая одну или несколько таблиц:

mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql

Расширение файла .sql полностью .sql от стиля. Любое расширение будет работать.

Указание имени пользователя и пароля

> mysqldump -u username -p [other options]
Enter password:

Если вам нужно указать пароль в командной строке (например, в скрипте), вы можете добавить его после опции -p без пробела:

> mysqldump -u username -ppassword [other options]

Если пароль содержит пробелы или специальные символы, не забудьте использовать экранирование в зависимости от вашей оболочки / системы.

Необязательно расширенная форма:

> mysqldump --user=username --password=password [other options]

(Объяснение, указывающее пароль в командной строке, не рекомендуется из-за проблем с безопасностью.)

Восстановление резервной копии базы данных или таблицы

mysql [options] db_name < filename.sql

Обратите внимание, что:

  • db_name должно быть существующей базой данных;
  • ваш аутентифицированный пользователь имеет достаточные привилегии для выполнения всех команд внутри вашего filename.sql ;
  • Расширение файла .sql полностью .sql от стиля. Любое расширение будет работать.
  • Вы не можете указать имя таблицы для загрузки, даже если вы можете указать, с какого дампа. Это должно быть сделано в filename.sql .

В качестве альтернативы, когда в инструменте командной строки MySQL вы можете восстановить (или запустить любой другой скрипт) с помощью команды source:

source filename.sql

или же

\. filename.sql

mysqldump с удаленного сервера с сжатием

Чтобы использовать сжатие по --compress для более быстрой передачи, передайте параметр --compress для mysqldump . Пример:

mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql

Важно: если вы не хотите блокировать источник db, вы должны также включить --lock-tables=false . Но вы не можете получить внутренне согласованное изображение db таким образом.

Чтобы сохранить сжатый файл, вы можете подключиться к gzip .

mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz

восстановить gzipped файл mysqldump без разжатия

gunzip -c dbname.sql.gz | mysql dbname -u username -p

Примечание: -c означает запись вывода в stdout.

Резервное копирование непосредственно на Amazon S3 со сжатием

Если вы хотите сделать полную резервную копию большой установки MySql и не располагаете достаточным местным хранилищем, вы можете сбросить и сжать ее непосредственно в ведро Amazon S3. Это также хорошая практика для этого, не имея пароля БД в качестве части команды:

mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
        --verbose --hex-blob --routines --triggers --all-databases |
    gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz

Вам будет предложено ввести пароль, после чего начнется резервное копирование.

Транслирование данных с одного сервера MySQL на другой

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

Опция 1:

  1. Храните файл дампа на исходном сервере
  2. Скопируйте файл дампа на целевой сервер
  3. Загрузите файл дампа на целевой сервер

На исходном сервере:

mysqldump [options] > dump.sql

На целевом сервере скопируйте файл дампа и выполните:

mysql [options] < dump.sql

Вариант 2:

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

На целевом сервере

mysqldump [options to connect to the source server] | mysql [options]

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

Резервная база данных с хранимыми процедурами и функциями

По умолчанию хранимые процедуры и функции или не сгенерированные mysqldump , вам нужно будет добавить параметр --routines (или -R ):

mysqldump -u username -p -R db_name > dump.sql

При использовании --routines создания и изменения времени не поддерживаются, вместо этого вы должны сбросить и перезагрузить содержимое mysql.proc .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow