본문 바로가기

[쿠버네티스] AWS 구축/5. EC2에서 MySQL Master-Slave 구성

참고) 운영 환경을 위한 커넥션(Connection) 최적화 및 트러블슈팅

수많은 클라이언트의 요청을 안정적으로 처리할 준비를 해본다. 기본 설정값(151개)은 실제 서비스에서 금방 한계에 도달할 수 있다. 이 문서는 서버의 자원 관리 설정을 튜닝 하는 방법을 안내한다.

 

1. 주요 설정값 설명

 

  • max_connections: 동시에 접속할 수 있는 최대 클라이언트 수 (기본 151).
  • wait_timeout: 비활성(아무것도 안 함) 연결을 자동으로 끊기 전 대기 시간.
  • interactive_timeout: 터미널(MySQL CLI) 접속 시 비활성 연결 대기 시간.

 

2. Master / Slave 서버 권장 설정값

서버의 역할에 따라 설정값을 다르게 가져가는 것이 효율적이다.

 

[Master 서버]

쓰기 작업과 복제 요청을 동시에 처리해야 하므로 연결 수를 넉넉히 잡는다.

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

# [mysqld] 섹션에 추가/수정
max_connections = 1000      # 서비스 규모에 따라 1000~5000 권장
wait_timeout = 600          # 10분간 활동 없으면 연결 종료
interactive_timeout = 600

 

[Slave 서버]

읽기 전용이므로 Master보다 연결 수를 조금 낮게 잡아 자원을 아낄 수 있다.

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

# [mysqld] 섹션에 추가/수정
max_connections = 500       # 500~2000 권장
wait_timeout = 300          # 더 빠른 자원 회수를 위해 5분 권장
interactive_timeout = 300

 

 

3. 설정 반영 및 복제 재연결 (트러블슈팅)

설정을 변경한 후에는 반드시 재시작이 필요하다. 이때 Slave의 복제 연결이 일시적으로 끊길 수 있으니 주의한다.

# 서비스 재시작
sudo systemctl restart mysql

 

 

[중요] Slave 복제 상태 확인및 수동 재연결

재시작 후 Slave에서 Replica_IO_Running이 No가 되었다면 수동으로 다시 연결해주어야 한다.

sudo mysql -u root -p

-- 상태 확인
SHOW REPLICA STATUS\G

-- 연결이 끊겼다면(No) 다시 시작 (기존 설정한 user/password 사용)
START REPLICA USER='user' PASSWORD='1234';

-- 다시 확인 (Yes가 뜨면 성공)
SHOW REPLICA STATUS\G