본문 바로가기

Automation/docker

Docker - Mysql Replication

예전에 Rancher 기반으로 쿠버네티스 서비스를 구성하여 서비스한 적이 있었다. Rancher Master 노드를 HA 구성로 구성할 필요가 있었는데 이를 위해서 Rancher Master/Slave Node가 사용하는 DB(Mysql)를 Replication 해야했다. 당시의 기억을 더듬어 도커로 Mysql 의 Galera Cluster를 구성하는 방법을 정리한다.


Mysql Galera Cluster 구성을 위해서는 최소 3대의 Mysql Instance(서버)가 필요하다.

 

1. 설치환경
  • Host : CentOS 7.x
  • Docker : 17.04
  • Mysql : 5.7
2. Mysql 도커 이미지 다운로드
  • docker pull mysql:5.7.0 (설치 버전은 필요에 따라 변경 가능)
3. Mysql Master 실행
  • Host서버 IP : 1.1.1.1
docker run -d --restart=always --name rancher-mysql \
-h dsaas-master01.mysql \                                              #호스트명
-v /data/mysql:/var/lib/mysql \                                         # Mysql 데이터 저장 볼륨
-p 3306:3306 \                                                              # 포트번호
-p 4567:4567 \
-p 4568:4568 \
-p 4444:4444 \
-e MYSQL_ROOT_PASSWORD=1234 erkules/galera                 # 비밀번호
-u root \                                                                       # 계정명
--wsrep-cluster-address=gcomm:// \
--wsrep-node-address=1.1.1.1 \                                         # Master의 호스트 IP

 

4. Mysql Slave #1 실행
  • Host서버 IP : 2.2.2.2
docker run -d --restart=always --name rancher-mysql \
-h dsaas-master02.mysql \                                              #호스트명
-v /data/mysql:/var/lib/mysql \                                         # Mysql 데이터 저장 볼륨
-p 3306:3306 \                                                              # 포트번호
-p 4567:4567 \
-p 4568:4568 \
-p 4444:4444 \
-e MYSQL_ROOT_PASSWORD=1234 erkules/galera                 # 비밀번호
-u root \                                                                       # 계정명
--wsrep-cluster-address=gcomm://1.1.1.1 \                           # Mysql Master IP
--wsrep-node-address=2.2.2.2 \                                         # Slave-1의 호스트 IP

 

5. Mysql Slave #2 실행
  • Host서버 IP : 3.3.3.3
docker run -d --restart=always --name rancher-mysql \
-h dsaas-master02.mysql \                                              #호스트명
-v /data/mysql:/var/lib/mysql \                                         # Mysql 데이터 저장 볼륨
-p 3306:3306 \                                                              # 포트번호
-p 4567:4567 \
-p 4568:4568 \
-p 4444:4444 \
-e MYSQL_ROOT_PASSWORD=1234 erkules/galera                 # 비밀번호
-u root \                                                                       # 계정명
--wsrep-cluster-address=gcomm://1.1.1.1 \                           # Mysql Master IP
--wsrep-node-address=3.3.3.3 \                                         # Slave-1의 호스트 IP

 

6. Replication 구성 확인
# 클러스터 상태 확인
docker exec -t node mysql -e 'show status like "swrep_cluster_size"'

 

주의사항
  • Gallera Cluster를 구성해도 자동으로 failover를 지원하지는 않는다.

정리를 차일 피일 미루다 보니 이미 상당한 시간이 지나서야 정리해 본다. 메모장의 낙서들을 빨리 정리해야 겠다.

'Automation > docker' 카테고리의 다른 글

[개발환경] Docker Desktop 설치  (0) 2022.03.18
Docker - 설치  (0) 2020.10.12