되게 오랜만에 포스팅을 하는것 같습니다.
논건 아니고.. 공모전도 하고.. 취업도 하고.. 회사일도 하느라 좀 바빴습니다.
한동안은 회사일을 하면서 공부한 내용들을 위주로 포스팅 하지 않을까 싶습니다.
저는 지금 회사에서 사수가 없습니다.
문제상황에 직면했을 때 해결은 할 수 있는데, 올바른 방식인지는 확신이 안서더라구요.
드리고 싶은 말씀은 제 포스팅은 적용 방법만 보시고, 어떤 상황에 적용할지는 고민을 좀 더 하셨으면 좋겠다는 것 입니다.
뭐 취준생일때나 개인 프로젝트 할때 보시면 크게 문제는 안될것같습니다.
문제
회사 프로젝트에 새로운 기능을 추가해야 할 일이 생겼습니다.
원래는 기존 프로젝트의 구조를 최대한 해치고 싶지 않았지만, 불가피하게 변경이 필요한 상황이였습니다.
운영중인 DB로 바로 작업하고 테스트를 하는것은 너무 무서웠기에, 로컬에 같은 엔진의 DB를 띄워놓고 내용을 옮겨온 후, 충분히 테스트를 한 후 서버에 반영하기로 결정하였습니다.
해결방법
제가 생각한 방법은 workbench를 통한 import와 export 입니다. 현재 회사 프로젝트는 AWS RDS에 MariaDB로 올라가 있습니다. 제 로컬에서 workbench에 연결은 해놓은 상태이기에 로컬에 개발용 MariaDB를 도커로 띄워놓고 옮긴 후 테스트를 하기로 결정하였습니다.
제 환경은 Mac, db는 mariaDB를 사용했습니다.
구현방법
1. mariaDB docker로 띄우기
먼저 개발용으로 사용할 mariaDB를 docker로 띄우겠습니다.
mariadb 이미지를 먼저 pull 합니다. 저는 최신버전 사용을 위해 :latest를 붙였습니다.
docker pull mariadb:latest

그리고 이걸 실행합니다.
3306포트는 이미 사용중이기에 3307포트에 올렸습니다. 비밀번호는 root로 설정하였습니다.
docker run --name mariadb -p 3307:3306 -d -e MYSQL_ROOT_PASSWORD=root mariadb
명령어는 다음과 같은 의미입니다.
- run : 실행
- --name mariadb : 컨테이너 이름을 mariadb로
- -p 3307:3306 : 컨테이너 내부의 3306 포트를 제 로컬에서 3307 포트로 사용
- -d : 백그라운드에서 실행
- -e MYSQL_ROOT_PASSWORD=root : root를 패스워드로 사용
- mariadb : 사용할 이미지, 방금 pull 받은 mariadb를 사용하겠다는 뜻 입니다.
제대로 실행되면 docker ps 명령어로 다음과 같이 확인 가능합니다.

2. workbench에 연결
MySQL connection을 추가해줍니다. + 버튼 누르시면 됩니다.


위와 같이 사용할 포트번호와 password를 입력해줍니다.
mariadb는 기본적으로 root 사용자를 생성하고 이 사용자는 모든 권한을 가지고있습니다.
Continue Anyway를 눌러 접속합니다.
3. workbench를 활용해 export, import
export하고자 하는 데이터베이스에 접속 후 Server - Data export를 클릭합니다.

다음과 같은 창에서 export할 데이터를 선택하고 export합니다.
저는 테스트용으로 프로젝트용으로 사용했던 lam 데이터베이스를 가져오겠습니다.


export가 완료되면 확인이 가능합니다.
이제 옮길 DB에 접속한 후 같은 이름으로 DB를 생성합니다.

그리고 Server-Data import 에서 폴더를 선택하고 Start import를 누릅니다.


이렇게 뜨면 제대로 완료가 된 것 입니다.
import 한 DB에서 user를 조회하여 제대로 옮겨졌는지 확인하겠습니다.

위와 같이 정상적으로 옮겨진것을 확인하였습니다.
초보 개발자의 글이라 부족한 점이 많습니다. 잘못된 점 등을 말씀해주시면 감사히 받겠습니다.