Бэкап хранимых процедур, функций и триггеров MySQL

MySQL 5 ввел некоторые новые интересные функции, такие как хранимые процедуры и триггеры. Я покажу в этой маленькой заметке, как можнозабэкапить и восстановить эти компоненты с использованием mysqldump.

По умолчанию утилита mysqldump забэкапит все триггеры, но НЕ хранимые процедуры/функций. Есть 2 параметра, которые говорят MySQLDump что делать:

  • routines - FALSE по умолчанию
  • triggers - TRUE, по умолчанию

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

mysqldump -routines имя_базы > имя_файла.sql

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

mysqldump -routines -no-create-info -no-data -no-create-db -skip-opt имя_базы > имя_файла.sql

Восстанавливается все очень просто:

mysql имя_базы < имя_файла.sql

Просмотреть функции и процедуры можно выполнив следующие команды:

SHOW PROCEDURE STATUS;  
SHOW FUNCTION STATUS;

Или так:

select name from mysql.proc;

Следующая команда вернет в ответ SQL для создания функции:

show create function имя_базы.имя_функции;

Categories:

Updated: