Как создать дамп базы MySQL, включающий триггеры и хранимые процедуры

Как известно в MySQL 5 была включена потдержка таких возможностей как создание хранимых процедур (stored procedures) и триггеров (triggers).

При попытке создать дамп базы, используя mysqldump, обнаружил в нем отсутствие комманд для создания хранимых процедур.

Как оказалось это было вызвано тем, что mysqldump по-умолчанию сохраняет только триггеры, пропуская хранимые процедуры. Существует два параметра, которые управляют этим поведением:

  • —routines – по-умолчанию имеет значение FALSE
  • —triggers – по-умолчанию имеет значение TRUE 

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

mysqldump -u root -p --routines [ИМЯ_БАЗЫ_ДАННЫХ] > dump.sql

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

mysqldump -u root -p --routines --no-create-info --no-data 
          --no-create-db --skip-opt [ИМЯ_БАЗЫ_ДАННЫХ] > dump.sql

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

mysql -u root [ИМЯ_БАЗЫ_ДАННЫХ] < dump.sql

Автор: Sergiy Kamolov
Дата публикации: 2011-03-24T00:09:00.005+02:00