MySQL과 MariaDB 동시에 실행시킬 수 있을까?

신민철·2023년 11월 8일
3
post-thumbnail

MariaDB란?

MariaDB는 MySQL의 발전된 형태의 대체제로써,여기에서 다운로드 받을 수 있으며, 
GPL v2 라이센스로 유지되고 있고,MariaDB 커뮤니티와 MariaDB 재단이 주축이 되어 개발되고 있다.
(중략..)
MariaDB 는 현재까지 최신의 MySQL과 같은 브랜치로부터 릴리즈되며, 대개의 경우 MySQL과 마찬가지로 동작한다. 
MySQL의 모든 명령어, 인터페이스, 라이브러리와 API 가 MariaDB에도 존재한다. 
또한 MariaDB로 데이터베이스를 변환할 필요도 없다. 
즉, MariaDB 는 사실상 MySQL의 완벽한 대체제라고 말할 수 있다! 
게다가, MariaDB는 보다 많은 훌륭한 새로운 기능들을 갖고 있다.

출처 :https://mariadb.com/kb/ko/mariadb-korean-mariadb/

MySQL은 DO SOPT 서버 파트 세미나에서 공식적으로 사용하는 RDBMS인데요.
저는 다른 팀 프로젝트에서 MariaDB를 사용해서 둘 다 설치해야 하는 상황입니다.

하지만 MariaDB와 설정 파일, 명령어 등 거의 모든 곳에서 같은 아키텍처를 가지고 있기에 MySQL과 MariaDB를 로컬에서 모두 설치하게 되면 많은 오류를 만날 수 있게 됩니다.

물론 로컬에 MySQL, MariaDB 둘 다 설치하는 것은 가능하지만 설정파일과 Port 정보를 3306, 3307로 다르게 주어야 하는 등 골치 아픈 문제가 많아서 저는 Docker를 이용하여 MariaDB를 띄우기로 하였습니다.

Docker 설치

Mac

Install Docker Desktop on Mac

Windows

Install Docker Desktop on Windows

각 OS의 사정에 맞게 Docker Desktop 이라는 프로그램을 설치해 줍니다.

그리고 Docker Desktop을 실행시켜줍니다.

여기서 Docker란?

💡 Docker의 사전적 의미 : 부두에서 컨테이너를 다루는 노동자

도커는 개발환경을 쉽게 세팅할 수 있고 컴퓨터 자원을 훨씬 적게 차지할 수 있는 기술로, 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 도구입니다.


가상머신(VM)과 다른 점

  1. 가벼움 : 도커 컨테이너는 호스트 시스템의 커널을 공유하기 때문에 가상머신과는 달리 운영체제를 추가할 필요가 없습니다. 따라서 실행 속도가 빠르고 자원의 효율성도 높습니다.
  2. 이식성 : 도커 이미지는 환경 설정과 코드 등 종속성을 포함합니다. 이런 특징으로 한 환경에서 다른 환경으로 손 쉽게 이식할 수 있는 특징이 있습니다.
  3. 확장성 : 도커는 컨테이너 단위로 애플리케이션을 분리할 수 있고 이를 유연하게 조절할 수 있는 장점이 있습니다.

Docker 용어

  • host : 운영체제가 설치된 컴퓨터
  • container : 하나의 운영체제 안에서 커널을 공유하며 개별적인 실행 환경을 제공하는 격리된 공간으로, host에서 실행되는 각각의 격리된 실행 환경입니다.
  • image : 도커에서 Image는 서비스 운영에 필요한 파일과 설정값 등을 모두 포함하고 있는 것을 의미합니다. 거의 프로그램과 동일한 의미를 갖습니다.
  • Docker Hub(도커 허브) : 도커 허브는 github과 비슷하게 코드는 아니지만 이미지(프로그램)을 공유하는 쉽게 말하면 앱스토어와 같은 플랫폼입니다.

Docker의 간략한 명령어 소개

  • pull : Docker Hub에서 image를 pull하는 행위
  • run : Image를 실행하는 행위
  • build : Image를 기반으로 컨테이너를 실행하는 등의 build 작업을 진행하는 행위

Docker 소개는 이쯤으로 마무리하고 실제 제가 MariaDB를 설치한 과정을 소개해드리겠습니다.

  1. Docker Image 다운
docker pull mariadb
  1. Docker Image가 잘 받아졌는지 확인
docker images
  1. MariaDB 컨테이너를 실행
docker run --name maria-db -p 3307:3306 -e MYSQL_ROOT_PASSWORD={비밀번호} -d mariadb
  1. docker run : docker image에서 container를 생성
  2. -name maria-db : maria-db라는 이름을 가진 컨테이너를 생성
  3. -p 3307:3306 : 해당 컨테이너의 포트의 인바운드 포트를 3307, 아웃바운드를 3306으로 설정
  4. -e : 컨테이너 내 변수를 설정
  5. MYSQL_ROOT_PASSWORD={비밀번호} : ROOT의 암호를 설정할 수 있음
  6. -d mariadb : mariadb라는 이미지에서 분리하여 컨테이너를 생성

  1. 실행 확인
docker ps

2번째 이미지에 mariadb가 인바운드 3307, 아웃바운드 3306으로 설정되어 있는 것을 볼 수가 있습니다.

  1. mariadb 접속
mysql -u root -p -h 127.0.0.1 -P 3307
  • -h : host를 지정할 수 있는 옵션. 127.0.0.1은 localhost와 같은 의미
  • -P : 포트를 지정. mariadb의 인바운드 port는 3307이므로 3307로 설정해줘야함.

이후 들어가게 되면 아까 설정했던 MYSQL_ROOT_PASSWORD 비밀번호를 입력하면 성공적으로 접속할 수 있게 된다!

그리고 주의할 점은 spring application.yml에서 mariadb를 설정할 때

url: jdbc:mariadb://localhost:3307/{db명}

해당과 같이 3307 포트로 명시해줘야 한다.

실행 결과

  • 3306 Port MySQL
  • 3307 Port MariaDB

0개의 댓글