본문 바로가기
MySQL별책부록

18. mysqldump에서 trigger가 있는 데이터 dump시 유의점.

by 모모레 2014. 11. 3.

회사에서 다른 분이 겪은 문제를 해결하느라, 찾아보니,

mysqldump를 사용할 경우 문제가 되는 경우가 있네요..

바로 데이터와 스키마를 변경해서 dump를 받을 때 입니다.

 

결론 부터 정리하면,

data만 받기 위해 --no-create-info 옵션을 사용하더라도, trigger에 대한 DDL은 데이터 영역에 추가 된다는 거죠.

거참 신기하게 말이죠.

 

제가 찾은 외국인 블로그는 아래와 같습니다.

http://www.percona.com/blog/2013/02/11/unexpected-problem-with-triggers-and-mysqldump/

 

 

제가 테스트 한 내용은 다음과 같습니다.

MySQL Version : MySQL dump 10.13  Distrib 5.6.20, for linux-glibc2.5 (x86_64)

 

 

 

 --skip-triggers 없는 예제

 --skip-triggers 있는 예제

 실행 구문

 ./mysqldump --no-create-info  -p -u root test amp emp  > /home/mysql/log.log

 ./mysqldump --no-create-info --skip-triggers -p -u root test amp emp  > /home/mysql/log2.log

 결과 output

 --
-- Dumping data for table `amp`
--

LOCK TABLES `amp` WRITE;
/*!40000 ALTER TABLE `amp` DISABLE KEYS */;
INSERT INTO `amp` VALUES (1,'bb'),(2,'b');
/*!40000 ALTER TABLE `amp` ENABLE KEYS */;
UNLOCK TABLES;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_bin */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017
DEFINER=`root`@`localhost`*/ /*!50003 trigger amp_trigger before  update on amp for each row set @sum = @sum + new.i */;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;

 --
-- Dumping data for table `amp`
--

LOCK TABLES `amp` WRITE;
/*!40000 ALTER TABLE `amp` DISABLE KEYS */;
INSERT INTO `amp` VALUES (1,'bb'),(2,'b');
/*!40000 ALTER TABLE `amp` ENABLE KEYS */;
UNLOCK TABLES;