본문 바로가기

Cloud-computing/GCP

[GCP]How to Backup/Restore/Export/Import in Cloud SQL

사전 지식

백업 방법

필요에 따라 아래 내용을 주기적으로 백업한다.

  • 특정 DB 백업
  • 테이블 백업
  • 모든 데이터 베이스 백업

백업 VS 내보내기

  • 보관정책
    • 백업
      • Cloud SQL에서 관리되며 Cloud SQL 인스턴스와 별도로 저장
      • 전체 데이터베이스를 포괄
    • 내보내기
      • Cloud Storage에서 관리
      • 특정 콘텐츠 선택 가능(table, database)
      • SQL Dump
        • 전체 인스턴스
        • 인스턴스 안의 1개 이상의 데이터베이스
      • CSV
        • SELECT * FROM table쿼리를 이용하여 내보낼 데이터 지정

리전 및 영역 가용성

  • 리전 (선택 후 영역 선택)
  • 영역 가용성
    • 단일 영역: 서비스 중단이 발생할 경우 장애 조치가 없음
    • 여러 영역: 선택한 리전 내의 다른 영역으로 자동으로 장애 조치 (product)
  •  

저장 용량

  • 스토리지 유형
  • 저장용량 자동 증가 사용 설정 (인스턴스 설정 정보)
About instance settings | Cloud SQL for MySQL | Google Cloud

연결

  • 비공개 IP
  • 공개 IP
    • White List 기반

백업

  • 백업 자동화
    • 자동 백업 수: 1~365개

  • point-in-time recovery
    • 1초 미만의 단위로 데이터를 특정 시점으로 복구할 수 있습니다.
    • 복제에 필요한 바이너리 로그가 사용 설정됩니다.
    • 디스크 공간이 부족하지 않도록 스토리지가 충분한지, 스토리지 용량 자동 증가를 사용 설정했는지 확인하세요.
    • point-in-time recovery 설정을 변경하려면 인스턴스를 다시 시작해야 합니다.
    • 다시 시작하면 인스턴스가 모든 연결 항목, 열려 있는 파일, 실행 중인 작업과 함께 종료됩니다.
  • 백업 만들기(수동)
    • 필요한 상황(작업 전)에 백업을 수동으로 진행할 수 있다.

유지보수

  • 일반적으로 주기는 수개월당 한 번
  • 업데이트되는 동안 인스턴스가 다시 시작되어야 하므로 서비스가 잠시 중단될 수 있다.

플래그

  • 매개변수 조정, 옵션 조정, 인스턴스 구성 및 조정을 포함한 여러 작업에 사용합니다.
    • e.g. slow_query_log: on
https://cloud.google.com/sql/docs/postgres/flags

백업 저장 위치

  • 멀티리전(default)
    • 인스턴스에서 가까운 위치에 백업이 저장된다.
  • 리전

복제본 → 읽기 복제본

  • 복제를 사용하는 주된 이유는 성능 저하 없이 데이터베이스의 데이터 사용량을 늘리기 위해서입니다.
  • 자동 백업 및 point-in-time recovery(바이너리 로깅)를 사용 설정 선행
  • 인스턴스 재시작이 필요
  • 7일 분량의 로그를 지원할 수 있는 저장용량
  • 영약 가용성 → 단일 영역만 선택 가능
  • 기존 Instance와 다른 머신 유형 선택 가능
  • 원본 인스턴스가 손상되면 복제본을 승격할 수 있음
    • 승격 후 기존 인스턴스처럼 사용 가능
    • 원본 인스턴스와는 별개의 인스턴스가 됨
  • 기존 인스턴스와 다른 IP를 가진다.

클론

  • 기존 인스턴스와 다른 것, 안되는 것
    • 백업 복사
    • IP 유지
    • 복제본은 복사안됨
    • 복제본에서 클론 안됨
  • 기존 인스턴스와 같은 것
    • 인스턴스 구성 (플래그, 연결 옵션, 머신 유형, 스토리지, 메모리 설정)
    • 다른 인스턴스에서 클론된 인스턴스를 클론할 수 있다.
  • 클론할 인스턴스 상태 선택 가능
    • 최신 / 이전 시점

버전 업그레이드


백업을 이용한 데이터 복원 - Backup and Restore

백업

  • 백업을 차단하는 작업(장기 실행 인스턴스 작업)이 있는 경우 백업 기간 중 여러번 시도
    • 가져오기, 내보내기, 업데이트, 인스턴스 재시작
  • 백업은 내보낼 수 없다. (GCP에서 관리)

Create TEST Data

백업 만들기

대상 Instance 생성

백업 데이터를 resotre할 Instance 생성

데이터 복원

From Instance: jm-han

To Instance: restore-from-backup

  • 선택한 인스턴스에 데이터가 있으면 덮어쓴다.
  • 복원할 수 있는 충분한 저장용량이 필요하다.

결과 - Cloud SQL Backup

  • 작업시간: 7min
    • 사용된 저장 용량 1GB
  • 대상 인스턴스(Restore를 진행하는)의 IP 변하지 않음
  • 사용자까지 복원 (root, 사용자 계정)
  • 기존 데이터는 없어짐

내보내기를 이용한 데이터 복원 - Export and Import

내보내기

  • Cloud Storage에서 관리
  • SQL Dump
    • 전체 인스턴스
    • 인스턴스 안의 1개 이상의 데이터베이스
  • CSV
    • SELECT * FROM table쿼리를 이용하여 내보낼 데이터 지정
    • .gz 확장자를 사용하여 데이터를 압축할 수 있다.(비용절감)
  • 내보내기를 시작하면 데이터베이스가 느리게 응답하더라도 중지할 수 없습니다.
    • 서버리스 내보내기를 사용하여 응답이 느려지지 않도록 할 수 있다.
      • 서버리스 내보내기를 하면 오프로드할 별도의 임시 인스턴스를 만든다.
      • 내보내기가 완료 되면 임시 인스턴스가 자동으로 삭제된다.

Create TEST Data

새 버킷 만들기

 

데이터 내보내기 대상 위치 선정

  • 생성한 bucket 선택

내보내기 생성

생성된 bucket 확인

  • 작업시간: 45s
    • 사용된 저장 용량 189B

가져오기

1. Instance: jm-han (기존 테이블)

  • table: real_estate.grade2
  • 기존의 grade2 table의 데이터를 변경 한 후 내보내기 한 데이터를 가져온다.
  • AS-IS

  • TO-BE(가져오기)
     

  • 결과
    • 작업시간: 10s
    • 기존 존재하는 data에 추가된다.

2. Instance: restore-from-backup (새로운 테이블)

  • table: real_estate.grade2
  • 새로운 table 명 생성 후 가져오기 실행 (기존에 데이터 존재 X)
  • AS-IS
    • table: grade2은 존재하지 않는 상태

  •  TO-BE(가져오기)

  • 가져오기 할 수 없음

  • 새로운 DB에 새로운 table에는 가능한가? colume type이 다르다면?

 

  • 가져와진다 그러나 0으로 채워짐

  • type을 내보내기 했던것과 맞추고 다시 가져오기

결과 - Cloud SQL Export

  • 내보내기는 csv, sql 두가지 방법으로 가능
  • 가져오기하는 곳에 내보내기 했던 table명이 존재해야 하고 type도 맞아야 한다.
  • 가져오기하는 table에 데이터가 있으면 덮어쓰는것이 아니라 추가된다.
  • 주기적으로 내보내기를 설정하려면 Cloud Scheduler 작업을 이용한다.


가격 및 저장 위치

백업 시 멀티리전 선택 후 특정 리전 선택 불가능

인스턴스 생성시 → 리전 선택 후 여러 영역 선택(기본 영역 및 보조 영역 선택 가능, 임의로 할당도 가능)

가격

  • 백업 만들기
    • 가격
      • 데이터 스토리지의 GB당 월 $0.08이 청구됩니다.
      • 백업 스토리지 요금은 다른 유형의 인스턴스보다 요금이 낮습니다.
  • 전용 코어 인스턴스 (가격 참고)
    • SQL CPU 및 메모리 가격에 따라 부과
  • HA 가격 (가격 참고)
    • HA 가격은 고가용성을 위해 구성된 인스턴스(리전 인스턴스라고도 함)에 적용됩니다.
  • 인스턴스 가격
    • 인스턴스 가격은 공유 코어 인스턴스에만 적용됩니다.
      • 공유 코어 인스턴스: 머신 유형 중 하나 (공유 코어, 표준, 고성능 메모리)
  • 네트워크 가격
    • Compute Engine 인스턴스 및 Cloud SQL 리전 간 복제본
      • 동일 리전: 무료
  • 서버리스 내보내기 가격: 위치한 리전에 따라 다름 (서버리스 내보내기 가격 참고)
    • e.g. 서울(asis-northease3) → 서버리스 내보내기 가격 책정$0.013/GB
  • 스토리지 (단일, HA)

  • 읽기 복제본 및 장애 조치 복제본
    • 독립 실행형 인스턴스와 동일한 요금

https://cloud.google.com/sql/docs/mysql/backup-recovery/backups 
https://cloud.google.com/sql/docs/mysql/pricing?hl=ko#instance-pricing
https://cloud.google.com/sql/docs/mysql/import-export#standard-offload
 

데이터 가져오기 및 내보내기 권장사항  |  MySQL용 Cloud SQL  |  Google Cloud

의견 보내기 데이터 가져오기 및 내보내기 권장사항 이 페이지에서는 Cloud SQL에서 데이터를 가져오고 내보낼 때의 권장사항을 제공합니다. Cloud SQL로 데이터를 가져오는 방법에 대한 단계별 안

cloud.google.com

 

가격 책정  |  MySQL용 Cloud SQL  |  Google Cloud

MySQL용 Cloud SQL 가격 책정 검토

cloud.google.com

 

Cloud SQL 백업 정보  |  MySQL용 Cloud SQL  |  Google Cloud

의견 보내기 Cloud SQL 백업 정보 이 페이지에서는 Cloud SQL 인스턴스의 백업 작동 방식을 설명합니다. 백업 예약 또는 주문형 백업 만들기에 관한 단계별 안내는 주문형 백업과 자동 백업 만들기 및

cloud.google.com