회사 프로젝트에서 db 이중화가 필요해서 설정을 진행하게 되었다.
각종 시행착오를 겪으면서 나와 같은 고생을 하는 사람이 없도록 가이드를 작성하게 되었다.
1. Docker에 db 생성.
터미널에서 아래 명령어를 실행한다.
docker pull mysql
정상적으로 실행이 됐다면 아래 상태를 확인한다.
docker images
확인이 끝나면 컨테이너를 생성한다.
이중화를 하려면 db가 두개 필요하기 때문에 포트번호를 각각 다르게 두개를 생성한다. 임의로 3307,3308을 사용했다.
docker run --name mysql-container1 -e MYSQL_ROOT_PASSWORD='지정할 비밀번호' -d -p 3307:3307 mysql:latest
docker run --name mysql-container2 -e MYSQL_ROOT_PASSWORD='지정할 비밀번호' -d -p 3308:3308 mysql:latest
생성이 됐다면 컨테이너 리스트를 확인한다.
docker ps -a
2. 글로벌 port 변경
도커를 생성할때 포트번호를 다르게 줬어도 db자체의 포트번호는 따로 설정을 해줘야 된다.
docker 데스크탑에서 각각의 컨테이너를 클릭한 후 file을 누르고 /etc/my.cnt 파일에서 각 컨테이너에 맞는 포트번호로 추가한다.
추가하고 난 후에 컨테이너를 재시작한다.
3. DB 이중화
아래 블로그를 참고하면 간단하게 할 수 있다.
https://velog.io/@mooh2jj/서버-분산-처리-환경에서-MySQL을-MasterSlave로-이중화하기
서버 분산 처리 환경에서 MySQL을 Master/Slave로 이중화하기
Scale-out시, 프로젝트 에서는 평소에는 서버 트래픽은 잠잠하지만 갑자기 read 할 request 양이 많아 대용량 트래픽이 있을 수 있다고 말씀드렸습니다.이외에도 다른 관점에서 트래픽이 모이는 현상
velog.io
4. 번외 : db툴에서 docker db 사용하기
위에서 생성한 db를 db 툴에서 사용하기 위해선 mysql 8.0버전부터 보안이슈로 인해 useSSL에 대한 추가적인 설정이 필요해졌다. allowPublicKeyRetrieval 옵션을 사용해야한다. 자세한 내용은 아래 블로그에 나와있다.
https://deeplify.dev/database/troubleshoot/public-key-retrieval-is-not-allowed
[Mysql] Public key retrieval is not allowed 에러 해결
Public key retrieval is not allowed 에러가 발생하는 이유와 해결하는 방법에 대해서 소개해드립니다.
deeplify.dev
본문에서 언급하지 않은 참고한 블로그:
https://poiemaweb.com/docker-mysql
Docker를 사용하여 MySQL 설치하고 접속하기 | PoiemaWeb
poiemaweb.com
https://aboutdb.tistory.com/418
MySQL 포트 변경하기
1. 포트 변경 vi /etc/my.cnt [mysqld] port=13306 2. 서비스 재시작 systemctl restart mysqld 3. 방화벽 포트 허용 firewall-cmd --permanent --zone=public --add-port=13306/tcp firewall-cmd --reload firewall-cmd --list-all 4. 서비스 안올라
aboutdb.tistory.com
'DEVOPS' 카테고리의 다른 글
[Docker] Unexpected wsl error 해결 (0) | 2024.04.18 |
---|