본 문서는 Aurora Mysql을 사용하는 환경에서 기존 인스턴스를 교체하는 방법에 대해서 안내드리는 기술 문서입니다.
Prerequisite
기존에 생성되어 있는 Aurora Mysql 클러스터와 인스턴스가 있어야 합니다.
Process
Aurora Mysql에서 기존에 있는 라이터 인스턴스를 엔드포인트 변경 없이 신규 라이터 인스턴스로 교체하는 방법은 간단합니다.
1. Process
Aurora Mysql 리더 인스턴스를 생성하고 라이터 인스턴스와 전환하는 방법에 대해서 설명드리겠습니다.
1-1. Process
Aurora Mysql에서 리더 인스턴스를 생성하는 방법은 간단합니다.
- 클러스터를 선택해준 다음
- 우측 상단에 작업 선택
- 드롭다운 메뉴에서 읽기 추가 선택
- 신규 DB 생성하던과 비슷하게 인스터스 명을 넣어주시고
- 인스턴스 타입을 선택하신 다음
- 나머지는 기본으로 설정해주시고 옵션으로 로그 설정과 추가 구성에서 파라미터 그룹 을 설정해주시면 됩니다.
- 그리고 하단에 읽기 추가 를 눌러서 생성하시면 됩니다.
- 그러면 아래와 같이 리더 인스턴스가 생성되게 됩니다.
생성중
생성 완료
1-2. Process
이제 리더 인스턴스가 생성되었으니 리더 인스턴스 와 라이터 인스턴스를 교체하겠습니다.
그전에 클러스터의 엔드포인트를 먼저 확인하고 넘어가겠습니다.
이걸 먼저 확인하는 이유는 DB에 연결할때는 클러스터의 라이터 또는 리더 엔드포인트로 접속을 해야 현 라이터 인스턴스가 삭제되어도 연결에는 문제가 없습니다.
작업은 아래와 같이 진행됩니다.
- 리더 인스턴스를 선택한 다음 작업을 선택
- 그 다음 장애 조치를 누르기 전에 연결이 끊어지는지를 테스트해 보겠습니다.
아래 쉘스크립트를 통해서 확인해보겠습니다. #!/usr/bin/env bash # ─────────────────────────────────── # 설정 섹션 # ─────────────────────────────────── MYSQL_HOST="127.0.0.1" MYSQL_PORT=3306 MYSQL_USER="your_user" MYSQL_PASSWORD="your_password" CHECK_INTERVAL=1 # 연결 확인 주기 (초) LOG_FILE="./mysql_reconnect.log" # ─────────────────────────────────── # 타임스탬프(초) 반환 함수 get_ts_sec() { date +%s } # MySQL 연결 상태 확인 함수 check_mysql() { mysqladmin ping \ --host="${MYSQL_HOST}" \ --port="${MYSQL_PORT}" \ --user="${MYSQL_USER}" \ --password="${MYSQL_PASSWORD}" \ --silent &>/dev/null } # 로그 함수 log_msg() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "${LOG_FILE}" } # ─────────────────────────────────── # 메인 로직 # ─────────────────────────────────── log_msg ">>> 스크립트 시작. MySQL(${MYSQL_HOST}:${MYSQL_PORT}) 연결 모니터링..." # 1) 초기 연결 상태 확인 if ! check_mysql; then log_msg "초기 연결 불가. 바로 재연결 대기 상태로 진입." else log_msg "초기 연결 성공." fi while true; do # 2) 연결 끊김 감지 until ! check_mysql; do sleep "${CHECK_INTERVAL}" done TS_DOWN=$(get_ts_sec) log_msg "연결 끊김 감지 (ts=${TS_DOWN})." # 3) 재연결 시도 until check_mysql; do sleep "${CHECK_INTERVAL}" done TS_UP=$(get_ts_sec) log_msg "재연결 성공 (ts=${TS_UP})." # 4) 소요 시간 계산 DURATION=$(( TS_UP - TS_DOWN )) log_msg "연결 복구 소요 시간: ${DURATION}초" done- 이제 2번 작업 -> 장애조치 를 통해서 교체를 진행해보겠습니다.
- 장애조치를 누르고 나서 몇초 후 클러스터의 상태가 장애 조치 중으로 변경됩니다.
- 그리고 스크립트에서 끊어짐을 감지하였습니다.
[2025-07-10 07:10:33] >>> 스크립트 시작. MySQL(servicedb.cluster-cdkokys00rwp.ap-northeast-2.rds.amazonaws.com:3306) 연결 모니터링...
[2025-07-10 07:10:33] 초기 연결 성공.
[2025-07-10 07:12:49] 연결 끊김 감지 (ts=1752131569).
[2025-07-10 07:12:57] 재연결 성공 (ts=1752131577).
[2025-07-10 07:12:57] 연결 복구 소요 시간: 8초 - 복구까지 8초가 걸렸으며 이는 DB 사용량에 따라 변경됩니다.
- 그리고 나서 다시 확인해보면 리더가 라이터로, 라이터가 리더로 변경된것을 확인이 됩니다.
- 이후 리더 인스턴스로 변경 된 인스턴스를 삭제하시면 됩니다.
- 마지막으로 태그를 추가하여 새로 생성된 인스턴스에 대해서 관리를 해주시면 됩니다.
Reference
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/aurora-failover.html
※스마일샤크가 제공하는 모든 콘텐츠는 관련 법의 보호를 받습니다. 스마일샤크 콘텐츠를 사전허가 없이 무단으로 복사·배포·판매·전시·개작할 경우 민·형사상 책임이 따를 수 있습니다. 콘텐츠 사용과 관련해 궁금한 점이 있으면 전화(☎: 070-4369-2028) 또는 이메일(contact@smileshark.kr)로 문의하기 바랍니다.
댓글
댓글 0개
댓글을 남기려면 로그인하세요.