Подтвердить что ты не робот

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

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

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

mysqldump -u username -p db1 > backup.sql
4b9b3361

Ответ 1

Это немного зависит от вашей версии. До 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.

Ответ 2

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

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 в командной строке.

Ответ 3

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

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

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

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

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

mysql <database> < outputfile.sql

Ответ 4

В дополнение к флагу -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

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

Ответ 6

Я использую 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 для имени файла в текущую дату.

Ответ 7

На 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

Для развертывания дампа.

Команда:

mysql -u user_name -p database_name < file_name.sql

Пример:

mysql -u root -p mr_sbc_clean_new < mr_sbc_clean_dump.sql

Ответ 8

Чтобы создать дамп, выполните следующие действия:

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

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

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