MySQL의 Procedure와 Function을 포함해 dump 하고 복원하기

CLI에서 mysqldump를 이용하면 쉽게 프로시저와 펑션을 포함해 덤프를 생성할 수 있습니다.


mysqldump --routines --trigger -u{username} {database_name} > {filename}.sql

현재 서버와 다른 서버에서 복원하려고 한다면 다음과 같은 구문이 임포트시에 문제가 될 수 있습니다.


CREATE DEFINER='username'@'localhost' PROCEDURE ...
CREATE DEFINER='username'@'localhost' FUNCTION ...

DEFINER 에 대한 설정이 굳이 필요하지 않다면 다음과 같이 정리합니다.


CREATE PROCEDURE ...
CREATE FUNCTION ...

그럼에도 불구하고 다음과 같은 에러가 난다면


ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable

시스템 변수를 변경해야 합니다.
mysql shell에서


show global variables like 'log_bin_trust_function_creators';

명령으로 값을 확인했을 때 값이 OFF라면 ON으로 변경해줍니다.

AWS RDS라면 파라미터 그룹에서 설정할 수 있습니다.
인스턴스 재시작이 필요하므로 인스턴스 생성 전에 미리 파라미터 그룹을 생성해 놓는 것이 좋습니다.

끝.