인스턴스 복원

이 페이지에서는 백업에서 인스턴스를 복원하고 인스턴스의 point-in-time recovery를 수행하는 방법을 설명합니다.

복원 작업 또는 point-in-time recovery에 대한 정보, 권장사항, 요구사항은 인스턴스 복원 개요를 참조하세요.

를 참조하세요.

백업에서 인스턴스 복원

백업을 사용하여 해당 백업을 가져온 인스턴스를 복원하거나 동일한 프로젝트 내의 다른 인스턴스를 복원할 수 있습니다.

다른 인스턴스로 복원

백업에서 다른 인스턴스로 복원할 경우, 대상 인스턴스의 데이터를 백업을 가져왔을 때 소스 인스턴스의 상태로 업데이트합니다. 자세한 내용은 복원 실행에 관한 일반적인 팁다른 인스턴스로 복원할 때의 팁 및 요구사항을 참조하세요.

프로젝트의 백업 목록이 필요하며 서비스 중단으로 인해 인스턴스 개요 페이지에서 백업을 볼 수 없는 경우 와일드 카드(-)와 함께 backupRuns.list API를 사용합니다. 와일드 카드 옵션은 프로젝트의 모든 인스턴스에서 모든 백업 목록을 검색합니다. 자세한 내용은 서비스 중단 시 백업 보기를 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 대상 인스턴스에 읽기 복제본이 있는 경우 맨 오른쪽에 있는 추가 작업 메뉴(추가 작업 아이콘)를 사용하여 해당 복제본을 삭제합니다.
  3. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  4. SQL 탐색 메뉴에서 백업을 선택합니다.
  5. 복원하려는 백업을 찾고 복원을 선택합니다.
  6. 백업에서 인스턴스 복원 페이지의 백업 세부정보 검토에서 올바른 백업을 선택했는지 확인합니다.
  7. 복원 대상 선택에서 기존 인스턴스 덮어쓰기를 선택합니다.
  8. 인스턴스 드롭다운 메뉴에서 복원에 사용할 인스턴스를 선택합니다. 선택한 인스턴스와 모든 데이터를 덮어씁니다.
  9. 선택을 확인하려면 대상 인스턴스 ID 필드에 덮어쓸 인스턴스의 이름을 입력합니다.
  10. 복원 프로세스를 시작하려면 복원을 클릭합니다.
  11. 대상 인스턴스의 작업 탭으로 이동하여 복원 작업 상태를 확인합니다.
  12. 복원이 완료된 후 앞에서 삭제한 복제본을 다시 만듭니다.

gcloud

  1. 대상 인스턴스를 설명하여 인스턴스에 복제본이 있는지 확인합니다.
    gcloud sql instances describe TARGET_INSTANCE_NAME

    replicaNames에 나열된 모든 인스턴스를 기록합니다.

  2. 모든 복제본을 삭제합니다.
    gcloud sql instances delete REPLICA_NAME

    이 과정을 각 복제본에 반복합니다.

  3. 소스 인스턴스의 백업을 나열합니다.
    gcloud sql backups list \
    --instance SOURCE_INSTANCE_NAME
  4. 사용하려는 백업을 찾아서 해당 백업의 ID 값을 기록합니다.
  5. 지정한 백업에서 대상 인스턴스로 복원합니다.
    gcloud sql backups restore BACKUP_ID \
    --restore-instance=TARGET_INSTANCE_NAME \
    --backup-instance=SOURCE_INSTANCE_NAME
        
  6. 복원이 완료된 후 앞에서 삭제한 복제본을 다시 만듭니다.

REST v1

  1. 대상 인스턴스의 모든 복제본을 나열합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=replicaNames

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 모든 복제본을 삭제합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • replica-id: 복제본 ID

    HTTP 메서드 및 URL:

    DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-id

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

    이 과정을 각 복제본에 반복합니다.

  3. 소스 인스턴스의 백업을 나열하여 사용하려는 백업의 ID를 확인합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

    -또는- 인스턴스가 서비스 중단이 발생한 리전에 있으면 프로젝트의 모든 백업을 나열합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID 또는 프로젝트의 모든 백업 목록에 대한 -

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/-/backupRuns

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

    복원해야 하는 인스턴스의 백업을 찾습니다.
  4. 백업에서 대상 인스턴스를 복원합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • target-instance-id: 대상 인스턴스 ID
    • source-instance-id: 소스 인스턴스 ID
    • backup-id: 백업 ID

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/target-instance-id/restoreBackup

    JSON 요청 본문:

    {
      "restoreBackupContext":
      {
        "backupRunId": backup-id,
        "instanceId": "source-instance-id"
      }
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  5. 복원이 완료된 후 앞에서 삭제한 복제본을 다시 만듭니다.

REST v1beta4

  1. 대상 인스턴스의 모든 복제본을 나열합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=replicaNames

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 모든 복제본을 삭제합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • replica-id: 복제본 ID

    HTTP 메서드 및 URL:

    DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-id

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

    이 과정을 각 복제본에 반복합니다.

  3. 소스 인스턴스의 백업을 나열하여 사용하려는 백업의 ID를 확인합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  4. 백업에서 대상 인스턴스를 복원합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • target-instance-id: 대상 인스턴스 ID
    • source-instance-id: 소스 인스턴스 ID
    • backup-id: 백업 ID

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/target-instance-id/restoreBackup

    JSON 요청 본문:

    {
      "restoreBackupContext":
      {
        "backupRunId": backup-id,
        "instanceId": "source-instance-id"
      }
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  5. 복원이 완료된 후 앞에서 삭제한 복제본을 다시 만듭니다.

동일한 인스턴스로 복원

백업에서 동일한 인스턴스로 복원할 경우 해당 인스턴스의 데이터를 백업을 가져올 때의 상태로 되돌립니다. 인스턴스를 복원하는 방법에 대한 자세한 내용은 복원 수행에 관한 일반적인 팁을 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 대상 인스턴스에 읽기 복제본이 있는 경우 맨 오른쪽에 있는 추가 작업 메뉴(추가 작업 아이콘)를 사용하여 해당 복제본을 삭제합니다.
  3. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  4. SQL 탐색 메뉴에서 백업을 선택합니다.
  5. 사용할 백업을 찾고 복원을 선택합니다.
  6. 백업에서 인스턴스 복원 페이지의 백업 세부정보 검토에서 올바른 백업을 선택했는지 확인합니다.
  7. 복원 대상 선택에서 소스 인스턴스 덮어쓰기를 선택합니다.

    괄호 안에 소스 인스턴스 이름이 지정되었는지 확인합니다.

  8. 선택을 확인하려면 대상 인스턴스 ID 필드에 인스턴스 이름을 입력합니다.
  9. 복원 프로세스를 시작하려면 복원을 클릭합니다.
  10. 인스턴스의 작업 페이지로 이동하여 복원 작업 상태를 확인합니다.
  11. 복원 작업이 완료되면 첫 번째 단계에서 삭제한 복제본을 다시 만듭니다.

gcloud

  1. 인스턴스를 설명하여 인스턴스에 복제본이 있는지 확인합니다.
    gcloud sql instances describe INSTANCE_NAME

    replicaNames에 나열된 모든 인스턴스를 기록합니다.

  2. 모든 복제본을 삭제합니다.
    gcloud sql instances delete REPLICA_NAME

    이 과정을 모든 복제본에 반복합니다.

  3. 인스턴스의 백업을 나열합니다.
    gcloud sql backups list --instance INSTANCE_NAME
  4. 사용하려는 백업을 찾아서 해당 백업의 ID 값을 기록합니다.
  5. 지정한 백업에서 인스턴스를 복원합니다.
    gcloud sql backups restore BACKUP_ID \
    --restore-instance=INSTANCE_NAME
  6. 복원 작업이 완료된 후 첫 번째 단계에서 삭제한 복제본을 다시 만듭니다.

REST v1

  1. 인스턴스의 모든 복제본을 나열합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=replicaNames

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 모든 복제본을 삭제합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • replica-id: 복제본 ID

    HTTP 메서드 및 URL:

    DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-id

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

    이 과정을 각 읽기 복제본에 반복합니다.

  3. 인스턴스의 백업을 나열하여 사용하려는 백업의 ID를 확인합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  4. 백업에서 인스턴스를 복원합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • backup-id: 백업 ID

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/restoreBackup

    JSON 요청 본문:

    {
      "restoreBackupContext":
      {
        "backupRunId": "backup-id",
      }
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  5. 복원이 완료된 후 앞에서 삭제한 복제본을 다시 만듭니다.

REST v1beta4

  1. 인스턴스의 모든 복제본을 나열합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=replicaNames

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 모든 복제본을 삭제합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • replica-id: 복제본 ID

    HTTP 메서드 및 URL:

    DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-id

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

    이 과정을 각 읽기 복제본에 반복합니다.

  3. 인스턴스의 백업을 나열하여 사용하려는 백업의 ID를 확인합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  4. 백업에서 인스턴스를 복원합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • backup-id: 백업 ID

    HTTP 메서드 및 URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restoreBackup

    JSON 요청 본문:

    {
      "restoreBackupContext":
      {
        "backupRunId": "backup-id",
      }
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  5. 복원이 완료된 후 앞에서 삭제한 복제본을 다시 만듭니다.

다른 프로젝트의 인스턴스로 복원

project 매개변수를 사용하여 백업을 수행한 프로젝트와 다른 프로젝트의 인스턴스로 데이터를 복원할 수 있습니다. project 매개변수를 사용할 경우 데이터를 복원하려는 프로젝트 및 인스턴스에서 restoreBackup을 호출합니다. 백업에서 다른 인스턴스로 복원할 경우, 대상 인스턴스의 데이터를 백업을 가져왔을 때 소스 인스턴스의 상태로 업데이트합니다.

권한

다른 프로젝트로 복원하는 사용자는 대상 프로젝트에 대한 cloudsql.instances.restoreBackup 권한과 소스 인스턴스에 대한 cloudsql.backupRuns.get 권한이 있어야 합니다. 이러한 권한은 Cloud SQL Admin 역할에 포함되어 있습니다.

다른 프로젝트의 인스턴스로 데이터를 복원하려면 다음 안내를 따르세요.

REST v1

backupId를 가져오려면 다음을 실행합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

백업을 다른 프로젝트의 인스턴스로 복원합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • source-project-id: 소스 프로젝트 ID
  • target-project-id: 대상 프로젝트 ID
  • target-instance-id: 대상 인스턴스 ID
  • source-instance-id: 소스 인스턴스 ID
  • backup-id: 백업 ID

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1/projects/target-project-id/instances/target-instance-id/restoreBackup

JSON 요청 본문:

{
  "restoreBackupContext":
  {
    "backupRunId": backup-id,
    "project": "source-project-id",
    "instanceId": "source-instance-id"
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

project 속성에 대한 자세한 내용은 restoreBackup을 참조하세요.

REST v1beta4

backupId를 가져오려면 다음을 실행합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

백업을 다른 프로젝트의 인스턴스로 복원합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • source-project-id: 소스 프로젝트 ID
  • target-project-id: 대상 프로젝트 ID
  • target-instance-id: 대상 인스턴스 ID
  • source-instance-id: 소스 인스턴스 ID
  • backup-id: 백업 ID

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/target-project-id/instances/target-instance-id/restoreBackup

JSON 요청 본문:

{
  "restoreBackupContext":
  {
    "backupRunId": backup-id,
    "project": "source-project-id",
    "instanceId": "source-instance-id"
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

project 속성에 대한 자세한 내용은 restoreBackup을 참조하세요.

PITR(point-in-time recovery) 수행하기

point-in-time recovery를 수행하려면 point-in-time recovery를 참조하세요.

복구 위치 식별

point-in-time recovery를 수행하려면 인스턴스를 복구하려는 특정 시점에 해당하는 바이너리 로그 파일 이름과 위치를 확인해 두어야 합니다.

이 작업을 수행하려면 복구 위치 확인하기를 참조하세요.

다음 단계