본문 바로가기
관리자

Project/Poppin

mysql dump(docker instance)

728x90
반응형

 

local에서 docker instance를 통해 mysql을 구동하여 사용하고 있는 경우, dump 방법

 

macOS 기준, DataGrip 활용

 

1. terminal에서 mysqlworkbench 캐스크로 설치

$ brew install --cask mysqlworkbench

 

-> 일반 mysql을 brew install로 local에 설치해버리면, 기존 docker instance로 떠있는 mysql 설정을 DataGrip이 참고하던게, local용 mysql 설정을 참조하면서 권한이 밀리는 것 같음. Access Denied가 뜸!

 

이럴 땐 

brew services stop mysql로 local로 설치된 mysql을 중단시켜버리고

docker로 실행하는 애플리케이션의 mysql container가 실행되도록 하여 참조가 걸리도록 하면 됨!

 

 

 

2. DataGrip에서 dump/restore

 

DataGrip에서 dump를 원하는 테이블을 우클릭 후, Export with mysqldump 선택

Path to mysqldump를 아래와 같이 설정

/Applications/MySQLWorkbench.app/Contents/MacOS/mysqldump

 

restore(load)를 원하는 테이블 우클릭 후, Restore with mysql 선택

Path to mysql을 아래와 같이 설정

/Applications/MySQLWorkbench.app/Contents/MacOS/mysql

 

path to dump는 위 mysqldump을 이용하여 dump한 파일의 path를 입력해주면 된다. restore가 정상적으로 되지 않으면, 3번 항목을 진행한다.

 

 

3. sql 파일 수정

 

참조 2에 나오는 내용이다.

linux:

sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i <FILENAME>.sql

 

mac:

sed -i '' 's/\sDEFINER=`[^`]*`@`[^`]*`//g' <FILENAME>.sql

 

 

위 명령어 입력하여 처리 후, dump한 sql을 열어서 찾기로 아래 항목들을 찾아서 주석처리 한다.

 

-- SET @@SESSION.SQL_LOG_BIN= 0;
-- SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';
-- SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;

 

 

 

 

참조

1)

https://abbo.tistory.com/320

 

2)

https://velog.io/@neulhan/%EC%A2%8C%EC%B6%A9%EC%9A%B0%EB%8F%8C-MySQL-RDS-dumpload-%ED%95%98%EA%B8%B0

 

728x90
반응형