이번에는 "MariaDB 데이터 마이그레이션"을 주제로, 기존 데이터베이스의 데이터를 새로운 MariaDB 환경으로 옮기는 과정을 정리해보겠습니다.
(마치 이사하는 기분으로, 기존 집(DB)에서 짐(데이터)을 챙겨서 새 집(MariaDB)으로 옮기는 거라고 생각해보세요. 물론 이사 트럭 대신 mysqldump와 scp를 쓴다는 점이 좀 다르지만요!)
간단합니다. 예전에 쓰던 데이터(옛집 살림)를 다른 데이터베이스(새 집)로 옮기는 것, 그게 바로 데이터 마이그레이션입니다.
이사를 해보신 분은 아시겠지만, "이거 정말 필요한 데이터인가?"라는 의문이 드는 순간이 오기도 하고, "왜 이게 여기 들어있지?" 라며 웃픈 순간도 생길 수 있습니다. 데이터 마이그레이션도 마찬가지로, 필요한 것만 잘 추리고 옮기는 센스가 중요합니다.
현재 운영 서버와 개발 서버의 DB가 하나의 AWS DB 서버에 나란히 붙어 있었습니다. 이건 마치 한 집에 가족뿐 아니라 회사 동료까지 같이 살고 있는 느낌이랄까요? 게다가 그 집은 매달 공과금을 내야 하는데(public IP 비용), 차라리 집을 하나 더 마련해서(내부망으로 구성) 보안도 강화하고, 운영 DB랑 개발 DB를 깨끗하게 분리하는 게 훨씬 낫다는 결론에 도달했습니다.
아래 스크린샷처럼 RDS 인스턴스를 생성합니다.




이제 이전 집(DB)의 살림살이를 박스(덤프 파일)에 담아야 합니다. 다음 명령어로 mysqldump를 실행하세요:

mysqldump -h {rds 엔드포인트} -u {마스터계정} -p --single-transaction --set-gtid-purged=OFF {백업할 데이터베이스} > {생성할 파일명}.sql

백업한 덤프 파일을 살짝 열어보며 "아, 이 가구는 이렇구나, 이 식기류는 저렇구나" 정도 확인해도 좋습니다.
scp -i {pem키 경로} {dump파일} {userName}@{host}:{저장될 경로}
아무리 "컴퓨터 이삿짐센터"라도 pem키 들고 일일이 인증해줘야 합니다. 그리고 파일 옮겼으면 EC2에 접속해보세요.
EC2에 접속 후 RDS에 접근하기 위해 mysql 클라이언트가 설치되어 있어야 합니다.


새롭게 데이터를 넣을 데이터베이스를 하나 만들고, 이제 진짜 하이라이트!! 덤프 파일을 RDS에 임포트합니다.

mysql -h {rds 엔드포인트} -u {host} -p {데이터베이스명} < {dump 파일}
만약 이때
ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_0900_ai_ci'
라는 에러가 뜬다면 놀라지 마세요. 이건 마치 이사 갔는데 새 집 문짝 규격이 살짝 다른 것과 비슷한 상황입니다.
utf8mb4_0900_ai_ci를 utf8mb4_general_ci로 바꿔주면 문제 해결!
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' vsggdev_dump.sql
이렇게 한 번 창문 프레임(콜레이션)을 바꿔주면, 이삿짐이 무사히 들어갈 수 있습니다.
마지막으로 데이터베이스에 접속해서 테이블과 데이터가 잘 들어갔는지 확인하면 이사의 대장정이 끝납니다. 테이블도 잘 있고, 데이터도 잘 들어갔다면 성공!
여기까지가 MariaDB로의 데이터 마이그레이션 과정이었습니다.