본문 바로가기

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

2. Master 서버 설정 (원본 데이터 서버)

Master 서버는 데이터 변경 이력을 기록하고 Slave에게 전달하는 역할을 한다.

 

1. mysqld.cnf 수정

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

 

[mysqld 섹션 설정]

[mysqld]
bind-address = 0.0.0.0
server-id = 1                           # 서버 고유 ID
log_bin = /var/log/mysql/mysql-bin.log  # 바이너리 로그 활성화
expire_logs_days = 30                   # 로그 보관 기간
# MySQL 재시작
sudo systemclt restart mysql

 

2. 복제용 계정 생성 및 권한 부여

Slave 서버가 접속할 수 있도록 전용 계정을 만든다. (Slave의 IP를 지정하여 보안을 강화한다.)

sudo mysql -u root -p

-- Slave 서버의 IP(예: 3.36.114.79) 전용 계정 생성
CREATE USER 'repl_user'@'3.36.114.79' IDENTIFIED BY '1234';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'3.36.114.79';
FLUSH PRIVILEGES;

 

3. (중요) Master 상태 정보 확인

Slave가 Master의 어느 지점부터 데이터를 베껴 쓰기 시작할지 결정하는 단계다. 이 단계에서 확인한 정보는 **'연결 스위치를 올리기 직전의 마지막 좌표'**가 된다.

SHOW MASTER STATUS\G

 

[확인 결과 예시]

  • File: mysql-bin.000001
  • Position: 713

[매우 중요] 마스터 서버 작업 일시 중단 안내

위 명령어를 입력하여 File명과 Position 번호를 확인했다면, 이 순간부터 Slave 서버에서 복제 설정을 마칠 때까지 Master 서버에서 데이터를 추가, 수정, 삭제하는 모든 작업을 멈춰야 한다.

  • 이유: Position은 데이터가 들어올 때마다 실시간으로 변하는 '현재 주소'다. 만약 마스터에서 상태를 확인한 직후(713번)에 데이터를 더 넣어서 주소가 800번으로 넘어가 버렸는데, 슬레이브에게 713번부터 가져오라고 하면 데이터의 간격이 생겨 복제가 실패하거나 데이터가 꼬일 수 있다.
  • 권장 순서: 마스터 상태 확인 → (마스터 작업 멈춤) → 슬레이브 설정 완료 및 START REPLICA → (복제 연결 확인 후 마스터 작업 재개)