ssuperjun 님의 블로그
[장애 이력 작성 도구] 발표 이후 고도화2 - 실행 명령어 옵션 --replica 제거 본문
마스터에서 레플리카(슬레이브)의 ip주소나 hostname을 알아낼 수 있는지 재확인
기존에는 레플리카의 UUID 38자리밖에 알아내지 못했음
ca801에서
/home1/irteam/mysql/base/bin/mysql \
-S /home1/irteam/mysql/run/mysql.sock \
-u root -p'nhn!@#하나둘셋' \
-e "SHOW SLAVE HOSTS;"
혹은
-e "SHOW REPLICA HOSTS;"
=> UUID밖에 알아내지 못함
재시도
/home1/irteam/mysql/base/bin/mysql \
-S /home1/irteam/mysql/run/mysql.sock \
-u root -p'nhn!@#하나둘셋' \
-e "SELECT HOST FROM information_schema.processlist WHERE COMMAND='Binlog Dump' OR COMMAND='Binlog Dump GTID';"
=> processlist에서 레플리카의 ip를 알아냄
코드 수정 계획: 동적 조회 + conf 기본값
마스터가 살아있으면 processlist로 레플리카 IP를 동적 조회하고, 실패하면 conf의 replica_host를 사용.
1. 마스터에서 processlist로 레플리카 IP 동적 조회
→ 성공 시: irteamsu@{IP} 형태로 replica_target 구성
→ 실패 시 (마스터 다운 등): conf의 replica_host 사용
2. replica_host도 없으면 에러 출력 후 종료
python3 collect_mysql_incident.py user@master --no-dooray
→ processlist로 레플리카 IP 조회 성공 → 복제 구성 모드 실행
→ 조회 실패 (마스터 다운) + conf에 replica_host 있음 → 복제 구성 모드 실행 (폴백)
→ 조회 결과 없음 (Binlog Dump 커넥션 없음) + conf에 replica_host 없음 → 싱글 구성 모드 실행
[replication]
replica_host = irteamsu@infa-testsrv-cb801 # 폴백용 (동적 조회 실패 시 사용)
replica_user = irteamsu # 동적 조회 성공 시 IP 앞에 붙일 user명
참고
지금 코드 상에선 레플리카 서버 접속 정보로 'replica_host = irteamsu@infa-testsrv-cb801'를 사용하는데, ip로 접속 정보를 바꿔도 정상적으로 동작 가능
주의사항
구현하며 추가한 부분
conf에 mysql 접속 비밀번호 추가함(그래야 processlist에서 레플리카 ip 수집 가능)
어차피 conf에 기록될 거라 보안 문제는 크게 걱정하지 않아도 됨
결과

기대효과: 이제 실행 시 --replica 옵션을 입력하지 않아도 됨
단순해진 실행 명령어
# 싱글/복제 구성 자동 판단 (두레이 등록 생략)
python3 collect_mysql_incident.py irteamsu@infa-testsrv-ca801 --no-dooray
# 싱글/복제 구성 자동 판단 (두레이 SSH 터널 사용)
python3 collect_mysql_incident.py irteamsu@infa-testsrv-ca801 --tunnel
한계: 수집 대상 DB가 달라질 경우, 여전히 conf의 설정값 수정 필요(기존에는 레플리카 서버 hostname을 수정해야 했다면, 이제는 마스터 MySQL DB의 비밀번호 수정)
'인턴' 카테고리의 다른 글
| [과제5-7] DB 상태 수집 프로그램 재설계(C to Python 변환) 프로젝트 최종 발표 (0) | 2026.04.09 |
|---|---|
| [장애 이력 작성 도구] 발표 이후 고도화3 - 새 아이디어(장애 발생 당시 DB 상태 정보 수집) 구상, 아키텍처 설계 (0) | 2026.03.24 |
| [스터디3] MySQL 스터디 - 클러스터드 vs 논클러스터드 인덱스 2차 실험 (0) | 2026.03.20 |
| [장애 이력 자동 작성 도구] 발표 이후 고도화 - 장애 감지 로직 수정 (0) | 2026.03.19 |
| [스터디4] 개발자를 위한 레디스 (0) | 2026.03.18 |