본문으로 건너뛰기

웹 서비스 MySQL 백업 및 복원

이 문서에서는 사전에 구성한 웹서비스의 MySQL 데이터베이스를 백업하고, 백업한 데이터를 이용하여 복원을 진행하는 방법을 소개합니다. 본 튜토리얼에서 생성된 리소스 이름과 설정은 튜토리얼 진행을 위해 임의로 생성한 값입니다.

기본 정보

사전 작업

본 튜토리얼을 시작하기 전에 Virtual Machine 기반의 웹 서비스가 준비되어 있어야 합니다. 웹 서비스 환경을 구축하는 방법은 VM 기반의 웹 서비스 구성 문서를 참고하시기 바랍니다.

작업 순서

Step 1. MySQL 수동 백업

MySQL 데이터베이스를 수동으로 백업합니다. 자동 백업 설정에 대한 자세한 정보는 MySQL 자동 백업 설정 문서를 참고하시기 바랍니다.

  1. 카카오클라우드 콘솔에서 Data Store > MySQL 메뉴로 이동합니다.

  2. VM 기반의 웹 서비스 구성 문서에서 생성한 tutorial-mysql 데이터베이스의 상세 페이지로 이동합니다.

  3. MySQL 상세 정보 상단의 백업 메뉴를 선택합니다.

  4. 백업 메뉴에서 [백업 만들기] 버튼을 클릭하고, 필요한 정보를 입력합니다.

    항목설정값
    선택한 인스턴스 그룹 이름tutorial-mysql
    백업 이름tutorial-mysql-backup-manual-1
  5. 백업 목록에서 생성된 백업의 상태가 Succeeded인지 확인합니다.

Step 2. 백업 데이터를 이용한 MySQL 복원

복원 단계에서는 백업한 데이터를 사용하여 MySQL 데이터베이스를 복원합니다.

  1. 백업 목록에서 Step 1에서 생성한 tutorial-mysql-backup-manual-1의 [더 보기] 아이콘을 클릭 후, 복원을 선택합니다.

  2. 복원을 위한 세부 정보를 입력하고, [만들기] 버튼을 클릭합니다.

    구분항목설정/입력값
    기본 설정인스턴스 그룹 이름tutorial-mysql-01
    설명(선택)
    MySQL 설정엔진 버전8.0.34
    MySQL 사용자 이름admin
    MySQL 비밀번호root1234
    인스턴스 가용성단일 (Primary 인스턴스)
    인스턴스 유형m2a.large
    기본 스토리지 타입/크기SSD100GB
    로그 스토리지 타입/크기SSD100GB
    네트워크 설정VPCtutorial
    Subnettutorial_{VPC_ID}_sn_5
    자동 백업자동 백업 옵션미사용
  3. 복원이 완료되면, 생성된 인스턴스 그룹의 상태가 Available인지 확인합니다.

Step 3. Application 서버 업데이트

복원된 MySQL 데이터베이스를 사용하도록 애플리케이션 서버를 업데이트합니다.

  1. 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` 인스턴스 클릭 후, Network 탭에서 확인 가능
  2. 프로젝트가 위치한 경로로 이동합니다.

    cd ~/kakaocloud-tutorials
  3. 아래 명령어를 이용하여 실행 중인 애플리케이션 서버를 정지하고 제거합니다.

    sudo docker stop kakaocloud-library-server
    sudo docker rm kakaocloud-library-server
  4. 환경 변수에 복원한 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_ENDPOINTMySQL 호스트의 주소, MySQL > Instance Group 탭에서 복원한 `tutorial-mysql-01` 인스턴스 그룹을 클릭 후, 상단 엔드포인트에서 확인 가능
DB_USERNAME🖌admin데이터베이스 사용자 이름
DB_PASSWORD🖌root1234데이터베이스 사용자 패스워드
  1. 띄워진 2개의 애플리케이션 서버에 Step 3 과정을 각각 진행합니다.

Step 4. 서비스 접속 확인

서비스가 정상적으로 작동할 경우, '카카오클라우드 도서관' 서비스 화면이 표시됩니다.

카카오클라우드 도서관 서비스 접속 확인