문제의 시작은 이번 프로젝트에서 mariadb를 사용해 보기로 하면서 발생했다. 채용 공고들을 보면 RDBMS 중에는 MySql과 MariaDB가 많은 것 같아 사용해보지 않았던 MariaDB를 데이터 베이스로 선택했다. (maraidb는 mysql에서 파생되어 나온 데이터베이스여서 거의 동일하다고 한다 :])
어제의 지옥편
맥은 homebrew를 통해 많은 프로그램들을 다운받기에 역시 brew install mariadb를 시원하게 입력했다.
찾아보니 둘은 거의 모든 곳에서 같은 구조를 이루고 있어 같은 로컬에 동시 설치하면 많은 오류가 발생할 수 있다고 했다.
이것을 알고 빠르게 다른 방법을 생각 했어야했는데.. "port를 다르게 설정하면 되지 않을까?"라는 천진난만한 생각으로 이것저것 만지다가... 결론적으로는 mysql조차 실행도 안되고 눈물을 머금고 재설치를 시도했지만 이 역시도 안되고 설정을 잘못 건드렸는지 homebrew까지 말을 안 듣는 상황이 발생했다.
어제의 눈물나는 약 6시간의 삽질을 주절주절하고 싶지만 요약하면,,,
=> mysql 삭제 -> 3년 동안 공부하면서 사용한 데베 다 날아감(백업해둘 생각 왜 안 했지..), homebrew 재설치, mysql 공홈에서 재설치
(날라갔어도 mysql은 재설치가 안되면 앞으로 이 맥북에서 개발 못하나? 졸업 작품은 mysql로 하고 있는데..?라는 심신 미약으로 이동 중인 전철에서 부랴부랴 고치고 다른 동아리와 미팅 있어서 만신창이로 가는데 지하철역에서 발목 돌아가고 :[ )
오늘의 희망편 🐳
mysql은 복구시켜놓고 프로젝트 스택을 mariaDB로 했는데 어쩜 좋지..라는 생각이 오늘 계속 들었다. 로컬에서 h2나 mysql을 사용하면 되겠지만 그래도 사용해보고 싶었다.. 이때 스쳐가는 🐳도커🐳..!
도커를 직접 사용해본적이 없었고 우연찮게 지난주에 도커가 진짜 필요해서 쓰는 경우를 체험해보고 싶었다. 이론적으로는 많이 듣고 찾아봐서 이해했지만 사실 개발을 하면서 도커 필요하다. 를 느낀 적이 없었다.
도커는 컨테이너에서 실행되니까 다른 시스템에 영향을 주지 않는다 -> 지금 내 상황에 딱 이 부분이 필요했다.
mysql은 로컬, mariaDB는 포트 바꾸고 컨테이너에서 실행시면 서로 간섭되지 않으니 가능하겠다는 생각으로 당장 실행에 옮겼다.
(도커 설치, 이미지 다운로드에 대한 자세한 내용은 생략)
docker pull mariadb
docker run -p 3308:3306 --name mariadbContainer -e MARIADB_ROOT_PASSWORD='root' -d mariadb
도커 이미지를 가져온 후 포트를 mysql과 다르게 설정한 후 실행시킨다. (로컬에서는 Mysql에 3306포트를 할당했다.)
3308:3306 부분은 내 로컬에서 3308포트로 입력받고 컨테이너의 3306 포트로 연결시킨다는 뜻이다.
docker exec -it mariadbContainer /bin/bash
mariadb -uroot -p
이후 docker exec -it mariadbContainer /bin/bash 를 통해 컨테이너에 접속한 다음부터는 mariadb -uroot -p를 입력해 mysql와 똑같이 사용하면 된다.
마무리
3년동안 mac을 사용하고 있지만 여전히 무섭다ㅋㅋㅋ 이번 사건이 역대급 절망 편이었던 것 같지만 우당탕탕 또 해결했다.
나는 도커를 사용해서 mysql과 mariadb를 모두 사용할 수 있게 되었지만 다른 더 좋은 방법은 언제나 그랬듯이 또 어디 숨어있겠지라는 생각이 든다.🥲
그래도 필요성을 느끼고 도커를 사용해보게 되어서 나름 값진(그렇지만 다시는 겪고 싶지않은) 경험이었다..
'My project > Nanaland in Jeju' 카테고리의 다른 글
프로젝트 진행 시 엑셀에 작성한 데이터, DB에 저장하는 방법 (0) | 2024.10.17 |
---|---|
스프링 검색어 자동완성 비동기 처리 (Feat. 1만번의 부하테스트 결론은 Over Engineering 이었다고 한다..) (5) | 2024.08.29 |
검색어 자동완성 구현하기 with Redis (Feat. Elasticsearch) (3) | 2024.08.01 |
Stream API 사용 중 .toList()에서 UnsupportedOperationException 발생한 썰 (1) | 2024.07.26 |
QueryDsl 부모에 자식 리스트 넣기 -> Transform (부제 : 쿼리의 수와 속도는 무조건 정비례가 아니다..) (0) | 2024.06.27 |