본문으로 건너뛰기

웹 서비스 MySQL 백업 및 복원

이 문서에서는 사전에 구성된 웹 서비스의 MySQL 데이터베이스를 백업하고, 해당 백업 데이터를 이용해 복원하는 방법을 안내합니다.

기본 정보
  • 예상 소요 시간: 15분
  • 사용자 환경
    • 권장 운영 체제: MacOS, Ubuntu
    • Region: kr-central-2

시나리오 소개

이 시나리오에서는 사전에 설정된 웹 서비스의 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
    서브넷tutorial_{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` 인스턴스 클릭 후, 네트워크 탭에서 확인 가능
  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데이터베이스 사용자 패스워드
  5. 띄워진 2개의 애플리케이션 서버에 Step 3 과정을 각각 진행합니다.

Step 4. 서비스 접속 확인

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

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