it-roy-ru.com

Как сделать полное резервное копирование базы данных mysql с помощью утилиты командной строки mysqldump

Как я могу сделать полную резервную копию базы данных mysql, используя mysqldump? Когда я делаю резервную копию, мои таблицы из указанной базы данных только получают резервные копии. Процедуры и функции не являются.

Вот команда резервного копирования, которую я использую:
(Операционная система - Windows Vista.)

mysqldump -u username -p db1 > backup.sql
45
MySQL DBA

Это немного зависит от вашей версии. До 5.0.13 это невозможно с mysqldump.

Со страницы руководства mysqldump (v 5.1.30)

 --routines, -R

      Dump stored routines (functions and procedures) from the dumped
      databases. Use of this option requires the SELECT privilege for the
      mysql.proc table. The output generated by using --routines contains
      CREATE PROCEDURE and CREATE FUNCTION statements to re-create the
      routines. However, these statements do not include attributes such
      as the routine creation and modification timestamps. This means that
      when the routines are reloaded, they will be created with the
      timestamps equal to the reload time.
      ...

      This option was added in MySQL 5.0.13. Before that, stored routines
      are not dumped. Routine DEFINER values are not dumped until MySQL
      5.0.20. This means that before 5.0.20, when routines are reloaded,
      they will be created with the definer set to the reloading user. If
      you require routines to be re-created with their original definer,
      dump and load the contents of the mysql.proc table directly as
      described earlier.
14
Knut Haugen

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

mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql
  1. -A Для всех баз данных (вы также можете использовать --all-databases)
  2. -R Для всех подпрограмм (хранимые процедуры и триггеры)
  3. -E Для всех событий
  4. --single-transaction Без блокировки таблиц, т. Е. Без прерывания какого-либо соединения (R/W).

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

mysqldump -u [username] -p [database_name] [other_database_name] -R -e --triggers --single-transaction > database_backup.sql

Если вы хотите сделать резервную копию только определенной таблицы в базе данных:

mysqldump -u [username] -p [database_name] [table_name] > table_backup.sql

Если вы хотите сделать резервную копию структуры базы данных, просто добавьте --no-data к предыдущим командам:

mysqldump -u [username] –p[password] –-no-data [database_name] > dump_file.sql

mysqldump имеет много других опций, которые описаны в mysqldump Документация или с помощью man mysqldump в командной строке.

73
NarasimhaTejaJ

Используйте эти команды: -

mysqldump <other mysqldump options> --routines > outputfile.sql

Если мы хотим делать резервные копии ТОЛЬКО хранимых процедур и триггеров, а не таблиц и данных mysql, мы должны выполнить что-то вроде:

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql

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

mysql <database> < outputfile.sql
15
ajay singh mittal

В дополнение к флагу --routines вам необходимо предоставить полномочия резервного копирования для чтения хранимых процедур:

GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup Host>;

Мой минимальный набор привилегий GRANT для резервного пользователя:

GRANT USAGE ON *.* TO ...
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ...
GRANT SELECT ON `mysql`.`proc` TO ...
5
jonfm

Я использую MySQL 5.5.40. Эта версия имеет опцию --all-databases

mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql

Эта команда создаст полную резервную копию всех баз данных на сервере MySQL в файл с именем на текущую дату и время.

2
sunil

Используйте '-R' для резервного копирования хранимых процедур, но также имейте в виду, что если вы хотите получить согласованный дамп вашей базы данных во время ее изменения, вам нужно использовать --single-transaction (если вы только резервное копирование innodb) или --lock-all-tables (если вам также нужны таблицы myisam)

2
Vitaly Kushner

В MySQL 5.7 у меня работает, я использую CentOS7.

За взятие Дамп.

Команда:

mysqldump -u user_name -p database_name -R -E > file_name.sql

Пример:

mysqldump -u root -p mr_sbc_clean -R -E > mr_sbc_clean_dump.sql

Для развертывания Dump.

Команда:

mysql -u user_name -p database_name < file_name.sql

Пример:

mysql -u root -p mr_sbc_clean_new < mr_sbc_clean_dump.sql
0
M. Hamza Rajput

Для создания дампа выполните следующие шаги:

  1. Откройте CMD и перейдите в папку bin, где вы установили свой MySQL
    Например: C:\Program Files\MySQL\MySQL Server 8.0\bin. Если вы видите в этом
    папка mysqldump.exe будет там. Или у вас есть настройка над папкой в ​​вашей переменной Path переменной среды.

  2. Теперь, если вы нажмете mysqldump в CMD, вы увидите, что CMD может определить команду dump.

  3. Теперь запустите "mysqldump -h [Host] -P [порт] -u [имя пользователя] -p --skip-триггеры --no-create-info - одиночная транзакция --quick --lock-tables = false ABC_databse> c:\xyz.sql "
  4. Приведенная выше команда запросит пароль, после чего начнется обработка.
0
Rahul Maurya