[MySQL] Workbench 사용해서 Dump 후 RDS로 Migrate

ShiHoon Yoon·2020년 11월 14일
0

Node.js & Prisma를 사용했습니다.

Step 1. Using MySQLWorkbench to dump

1) Dump하고자하는 sql 파일 MySQL Workbench로 열기

2) 상단 메뉴에서 Database 클릭--> Manage Connection 선택
아래 사진처럼 Connection Name, Connection Method, Hostname, Username, Password 입력하고 Test Connection 버튼 누르고 "Successfully made the MySQL connection" 팝업창이 나오면 연결 성공!

3) 상단 메뉴에어 Database --> Connect to Database 선택
Step 2에서 저장한 Stored Connection 선택 후 OK

4) 연결되면 좌측 Menu Tab이 생김. Data Export 선택

5) Dump하려는 Schema 선택

6) Export to Self-Contained File 선택 후 Dump하고 싶은 파일 및 sql 파일명 지정. 마지막으로 Start Export.

Step 2. Fixing errors occured during migration

Error Type 1) SQL Syntax Error

처음에 RDS에 sql 파일을 migrate 했을 때처럼 똑같이 했는데 line 11 datime (철자 오류 아님) 이런 error message가 났다. 백 프로 확실하지는 않지만 MySQL Workbench 버전과 RDS 초기 세팅 때 MySQL 버전 차이가 있으면 Workbench로 Dump 한 sql 파일이 RDS에 migrate이 안 되는듯하다. 처음 RDS 세팅 때 mysql 5버전으로 했었는데 mysql 8버전으로 다시 만들었다.

Error Type 2) Error: 1227: Access denied; you need (at least one of) the SUPER priviliges for this operation

이 error는 이렇게 해결하면 된다.

https://aws.amazon.com/ko/premiumsupport/knowledge-center/error-1227-mysqldump/

Error Type 3) MySQL ERROR 1231 (42000):Variable 'character_set_client' can't be set to the value of 'NULL'

제일 처음에 Dumping했을 때 아래 사진처럼 생긴 부분이 sql 파일 제일 하단에만 생겼다. 하지만 2번 째 dump 했을 때 부터는 상위에도 생겼다. 그런데 상위 부분 (line 1 - 29)은 모두 삭제해도 된다.

sql파일 제일 하단에보면 처음에 본 부분이랑 비슷한 부분이 또 있다.

Line 336은 주석처리해주고 Line 337 - 345는 아래로 교체해주자.

/!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /;
/!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS /;
/!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION /;
/!40101 SET NAMES utf8mb4 /;
/!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE /;
/!40103 SET TIME_ZONE='+00:00' /;
/!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 /;
/!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 /;
/!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' /;
/!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 /;

https://stackoverflow.com/questions/29112716/mysql-error-1231-42000variable-character-set-client-cant-be-set-to-the-val

Step 3) Migrate to RDS

Terminal에서 Dump한 sql 파일이 있는 위치로 이동 후

mysql -h ENDPOINT.ap-northeast-2.rds.amazonaws.com -u USER -p FILE < SQLDUMPFILENAME.sql;

profile
Entrepreneurs Should Learn to Code

0개의 댓글