웹 서비스 MySQL 백업 및 복원
이 문서에서는 사전에 구성된 웹 서비스의 MySQL 데이터베이스를 백업하고, 해당 백업 데이터를 이용해 복원하는 방법을 안내합니다.
- 예상 소요 시간: 15분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
시나리오 소개
이 시나리오에서는 사전에 설정된 웹 서비스의 MySQL 데이터베이스를 백업하고, 이를 복원하는 절차를 안내합니다. 이를 통해 MySQL 데이터베이스의 백업 및 복원 방법을 익히고, 복원된 데이터베이스를 애플리케이션 서버와 연결하여 정상적인 서비스 환경을 복구할 수 있습니다.
사전 작업
본 튜토리얼을 시작하기 전에 Virtual Machine 기반의 웹 서비스가 준비되어 있어야 합니다. 웹 서비스 환경을 구축하는 방법은 VM 기반의 웹 서비스 구성 문서를 참고하시기 바랍니다.
작업 순서
Step 1. MySQL 수동 백업
MySQL 데이터베이스를 수동으로 백업합니다. 자동 백업 설정에 대한 자세한 정보는 MySQL 자동 백업 설정 문서를 참고하시기 바랍니다.
-
카카오클라우드 콘솔에서 Data Store > MySQL 메뉴로 이동합니다.
-
VM 기반의 웹 서비스 구성 문서에서 생성한 tutorial-mysql 데이터베이스의 상세 페이지로 이동합니다.
-
MySQL 상세 정보 상단의 백업 메뉴를 선택합니다.
-
백업 메뉴에서 [백업 만들기] 버튼을 클릭하고, 필요한 정보를 입력합니다.
항목 설정값 선택한 인스턴스 그룹 이름 tutorial-mysql 백업 이름 tutorial-mysql-backup-manual-1 -
백업 목록에서 생성된 백업의 상태가
Succeeded
인지 확인합니다.
Step 2. 백업 데이터를 이용한 MySQL 복원
복원 단계에서는 백업한 데이터를 사용하여 MySQL 데이터베이스를 복원합니다.
-
백업 목록에서 Step 1에서 생성한 tutorial-mysql-backup-manual-1의 [더 보기] 아이콘을 클릭 후, 복원을 선택합니다.
-
복원을 위한 세부 정보를 입력하고, [만들기] 버튼을 클릭합니다.
구분 항목 설정/입력값 기본 설정 인스턴스 그룹 이름 tutorial-mysql-01 설명 (선택) MySQL 설정 엔진 버전 8.0.34 MySQL 사용자 이름 admin MySQL 비밀번호 root1234 인스턴스 가용성 단일 (Primary 인스턴스) 인스턴스 유형 m2a.large 기본 스토리지 유형/크기 SSD 100GB 로그 스토리지 유형/크기 SSD 100GB 네트워크 설정 VPC tutorial 서브넷 tutorial_{VPC_ID}_sn_5
자동 백업 자동 백업 옵션 미사용 -
복원이 완료되면, 생성된 인스턴스 그룹의 상태가
Available
인지 확인합니다.
Step 3. Application 서버 업데이트
복원된 MySQL 데이터베이스를 사용하도록 애플리케이션 서버를 업데이트합니다.
-
VM 기반의 웹 서비스 구성에서 Bastion 호스트에 설정한 포트에 맞게 매핑해 둔 애플리케이션 서버로 접속합니다.
# tutorial-app-1
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10002
# tutorial-app-2
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10003환경 변수 설명 PRIVATE_KEY🖌︎ 키파일 이름 BASTION_PUBLIC_IP🖌︎ Virtual Machine > 인스턴스 메뉴에서 생성해 둔 `Bastion` 인스턴스 클릭 후, 네트워크 탭에서 확인 가능 -
프로젝트가 위치한 경로로 이동합니다.
cd ~/kakaocloud-tutorials
-
아래 명령어를 이용하여 실행 중인 애플리케이션 서버를 정지하고 제거합니다.
sudo docker stop kakaocloud-library-server
sudo docker rm kakaocloud-library-server -
환경 변수에 복원한 MySQL의 엔드포인트 및 관리자 계정과 패스워드를 입력하여 애플리케이션 서버를 다시 시작합니다.
sudo docker run -it \
-e MYSQL_HOST=${MYSQL_HOST} \
-e DB_USERNAME=${DB_USERNAME} \
-e DB_PASSWORD=${DB_PASSWORD} \
-p 8080:8080 \
--name kakaocloud-library-server -d \
$(sudo docker build -q -f ./server/deploy/Dockerfile ./server)환경 변수 설정값 설명 MYSQL_HOST🖌︎ MYSQL_ENDPOINT MySQL 호스트의 주소, MySQL > Instance Group 탭에서 복원한 `tutorial-mysql-01` 인스턴스 그룹을 클릭 후, 상단 엔드포인트에서 확인 가능 DB_USERNAME🖌︎ admin 데이터베이스 사용자 이름 DB_PASSWORD🖌︎ root1234 데이터베이스 사용자 패스워드 -
띄워진 2개의 애플리케이션 서버에 Step 3 과정을 각각 진행합니다.
Step 4. 서비스 접속 확인
서비스가 정상적으로 작동할 경우, '카카오클라우드 도서관' 서비스 화면이 표시됩니다.
서비스 접속 확인