MySQL에서 MariaDB로 Migration하기

Purple·2023년 8월 6일
0

TIL

목록 보기
73/73

AWS 비용이 free tier가 끝나며 점점 올라갔다.
EC2, ELB, RDS를 모두 돌리니 한달이 7,8만원 정도 부과되었다.

비용을 줄일 수 있는 방법을 고민하던 중, 아는 분께서 Cloudtype을 소개시켜주셨다.

일단 EC2의 서버를 Cloudtype에 이관하는 건 크게 어려운 일이 아니었다. 깃허브 소스를 가져와서 서버를 띄었다.

문제는 DB를 migration해야한다는 것이었다. 한번도 안해봤기 때문에...추후에 참고하기 위해 기록을 해놓고자 한다. (스스로를 위해...)

  1. cloudtype에서 mariadb템플릿을 활용하여 DB용 서버를 띄운다. 여기서 헷갈렸던 부분은 TCP 외부 접속 허용이었는데, 이건 프로젝트의 설정에서 들어가면 볼 수 있었다.
    참조: https://help.cloudtype.io/guide/mariadb

  2. local 터미널에서 RDS의 endpoint에 접속한다.
    명령어 mysql -h [endpoint] -u [user명] -P [port번호] -p

  3. RDS의 데이터를 local PC로 export 한다.
    명령어 mysqldump -u [사용자 계정] -p [패스워드] [원본 데이터베이스명] > [생성할 백업 DB명].sql

  4. 2번의 명령어를 cloudtype의 mariadb에 접속한다.

  5. local PC에 있는 sql파일을 mariadb로 import 한다.
    명령어 source [파일경로]/[파일명].sql

  6. mariadb 터미널에서 결과를 확인하니, "Unknown system variable 'GTID_PURGED'" 이라는 에러 메시지가 뜬다...
    export할때 옵션을 적용하여 다시 RDS의 Database를 local PC로 보내야했다.
    명령어 mysqldump -u [사용자 계정] -p [패스워드] --set-gtid-purged=OFF [원본 데이터베이스명] > [생성할 백업 DB명].sql

이젠 됐겠지??? 는 오산....😭

옵션 적용한 dababase를 mariadb 터미널로 import한 이후 mariadb 터미널에서 결과를 확인하니, "Unknown collation: 'utf8mb4_0900_ai_ci'"라는 에러 메시지를 만났다. 또...에러 😭

  1. localPC에 있는 sql파일을 MySQL Workbench로 열어 'utf8mb4_0900_ai_ci' -> 'utf8mb4_general_ci' 로 모두 replace 해준다. (메모장에서 replace 해줘도 된다! 🙃)

MariaDB로 접속하여 사용할 DB 선택 (use [DB명];) 후 테이블 생성되었는지 확인 (show tables;) 그리고 임의의 테이블의 data들을 확인하니 (select * from users;)... 있따 있어!!!!

profile
다시 보면, 더 많은 것들이 보인다.

1개의 댓글

comment-user-thumbnail
2023년 8월 6일

글 재미있게 봤습니다.

답글 달기