24 марта 2011 г.

Как создать дамп базы 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

Комментариев нет:

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