본문 바로가기

Database/MySQL

mysqldump 유틸리티 사용하여 테이블 이관 방법

일반적으로 MySQL을 이관하는 경우 mysqldump 유틸리티를 사용합니다.

특정 데이터베이스를 이관할 때 테이블을 제외하거나 procedure, function을 제외하는 옵션들이 있습니다.

또한 타깃 데이터베이스명이 다를 경우나 일부 RDS에서 지원하지 않는 기능들로 인해 오류가 발생되기도 합니다.

 

mysqldump

 

덤프파일이 작을 경우는 텍스트편집기로 읽어서 덤프파일의 내용을 수정하거나, 일부 내용을 삭제가 가능한데, 용량이 큰 경우 곤란한 경우가 발생됩니다.

한글이 깨지거나, 덤프파일을 받는 경우 table meta lock이 발생되지 않게 하는 경우도 있습니다.

아래 옵션은 제가 자주 사용하는 옵션으로 일부 내용만 바꿔서 사용하면 정상적으로 실행될 것 같습니다.

mysqldump -h abcde.cluster-abcedzblaokox.ap-northeast-2.rds.amazonaws.com -P 3301 -u admin -p --routines --add-locks --no-data --column-statistics=0  --set-gtid-purged=OFF --lock-tables=false --ignore-table=DB1.table1 --ignore-table=DB1.table2 --ignore-table=DB1.table3 --databases DB1   -r d:\DB1_20240101.sql

 

덤프파일에서 아래 부분을 제거합니다. 모두 바꾸기 제거

DEFINER=`DB1`@`%`   (안해도 됨)

DB명을 변경할 경우 일괄 변경합니다.

DB1 => DB2

create database 부분 주석으로 제거

MySQL WorkBench 에서 RUN SQL Script 수행