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 → (복제 연결 확인 후 마스터 작업 재개)
'[쿠버네티스] AWS 구축 > 5. EC2에서 MySQL Master-Slave 구성' 카테고리의 다른 글
| 참고) 운영 환경을 위한 커넥션(Connection) 최적화 및 트러블슈팅 (0) | 2026.03.24 |
|---|---|
| 4. 실전 테스트: 복제 및 읽기 전용 검증 (0) | 2026.03.24 |
| 3. Slave 서버 설정 (복제본 서버) (0) | 2026.03.24 |
| 1. EC2(Ubuntu 22.04) 에서 MySQL 8.0 설치 및 초기 설정 (Master/Slave 공통) (0) | 2026.03.24 |