이 페이지에서는 Cloud SQL 인스턴스가 실수로 삭제되지 않도록 보호하는 방법을 설명합니다.
개요
인스턴스 삭제 보호를 사용 설정하면 기존 인스턴스와 새 인스턴스가 실수로 삭제되는 것을 방지할 수 있습니다. 인스턴스 삭제 보호를 사용하면 애플리케이션과 서비스에 중요한 인스턴스를 보호할 수 있습니다.
인스턴스를 만들 때 삭제 보호 옵션을 설정할 수 있습니다. 또한 기존 인스턴스에서 이 옵션을 설정할 수 있습니다. 두 경우 모두 인스턴스 수준에서 삭제가 방지됩니다. 기본적으로 Google Cloud Console이나 Terraform을 사용하여 인스턴스를 만들지 않는 한 삭제 보호 옵션은 중지되어 있습니다.
인스턴스를 클론하면 새 인스턴스가 소스 인스턴스의 삭제 보호 옵션(사용 설정 또는 중지)을 수신합니다.
삭제 보호 계획
인스턴스를 만들려는 경우 새 인스턴스가 실수로 삭제되지 않도록 보호할지 여부를 결정합니다. 예를 들어 중요한 인스턴스를 이러한 방식으로 보호해야 합니다.
또한 실수로 인한 삭제로부터 보호하려는 기존 인스턴스가 있는지 여부를 고려합니다. 보호할 인스턴스가 여러 개인 경우 각 인스턴스에서 옵션을 설정합니다.
읽기 복제본의 삭제 보호 고려
읽기 복제본을 만들 때 읽기 복제본이 기본 인스턴스에서 삭제 보호 설정을 가져오지 않습니다. 이 설정은 독립적으로 유지됩니다. 하지만 새 읽기 복제본이나 기존 읽기 복제본에서 삭제 보호를 사용 설정할 수 있습니다.
Cloud SQL 읽기 복제본의 경우 삭제 보호 옵션은 Cloud SQL 인스턴스와 동일한 방식으로 작동합니다.
필요한 권한 또는 역할 확인
삭제 보호 옵션을 설정하려면 Cloud SQL 인스턴스의 서비스 계정에 특정 권한 또는 IAM 역할이 있어야 합니다.
인스턴스 만들기 권한 또는 역할
관련 작업의 경우와 마찬가지로 삭제 보호 옵션을 사용하려면 cloudsql.instances.create
권한이나 cloudsql.admin
역할이 필요합니다. 따라서 인스턴스를 만들 때 삭제 보호를 사용 설정하는 데 필요한 추가 권한은 없습니다.
인스턴스 수정 권한 또는 역할
관련 작업의 경우와 마찬가지로 삭제 보호를 변경하려면 cloudsql.instances.update
권한이나 cloudsql.editor
역할이 필요합니다. 따라서 삭제 보호를 위해 인스턴스를 편집할 때 추가 권한이 필요하지 않습니다.
인스턴스 삭제 계획
인스턴스를 삭제하려면 먼저 다음을 수행합니다.
- 인스턴스를 안전하게 삭제할 수 있는지 확인
- 삭제 보호가 중지되었는지 확인합니다. 필요한 경우 인스턴스를 수정하여 삭제 보호를 중지합니다.
삭제 보호 제한사항
인스턴스에서 삭제 보호는 다음을 방지하지 않습니다.
- 인스턴스 중지
- 인스턴스 다시 시작
- 인스턴스 수정
- 백업 삭제
- 결제 문제로 인한 인스턴스 일시중지
- 결제 문제로 인해 일시중지된 인스턴스 삭제
- 프로젝트 삭제로 인한 인스턴스 삭제
새 인스턴스에서 삭제 보호 설정
다음은 삭제 보호 옵션을 설정하는 방법입니다. 기본적으로 Google Cloud Console이나 Terraform을 사용하여 인스턴스를 만들지 않는 한 삭제 보호 옵션은 중지되어 있습니다.
삭제 보호가 사용 설정된 경우 인스턴스 삭제 시도가 실패합니다.
Console
gcloud
인스턴스를 만드는 동안 삭제 보호를 설정하려면 다음과 유사한 명령어를 사용합니다.
gcloud sql instances create [INSTANCE_NAME] \ --deletion-protection
REST v1
인스턴스를 만드는 동안 삭제 보호를 설정하려면 deletionProtection
필드에 true
를 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 원하는 인스턴스 ID
- database-version: 데이터베이스 버전
- region: 원하는 리전
- machine-type: 원하는 머신 유형
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
JSON 요청 본문:
{ "name": "instance-id", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "deletionProtectionEnabled": true } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2022-05-24T15:34:10.929Z", "operationType": "CREATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
인스턴스를 만드는 동안 삭제 보호를 설정하려면 deletionProtection
필드에 true
를 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 원하는 인스턴스 ID
- database-version: 데이터베이스 버전
- region: 원하는 리전
- machine-type: 원하는 머신 유형
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances
JSON 요청 본문:
{ "name": "instance-id", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "deletionProtectionEnabled": true } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2022-05-26T15:37:10.929Z", "operationType": "CREATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
기존 인스턴스에서 삭제 보호 설정 또는 삭제
다음은 삭제 보호를 위해 인스턴스를 수정하는 방법입니다. 이 옵션을 사용 설정하면 이후에 인스턴스를 삭제하려는 시도가 실패합니다.
Console
gcloud
인스턴스를 업데이트할 때 삭제 보호를 사용 설정하려면 다음과 유사한 명령어를 사용합니다.
gcloud sql instances patch [INSTANCE_NAME] \ --deletion-protection
인스턴스를 업데이트할 때 삭제 보호를 중지하려면 다음과 유사한 명령어를 사용합니다.
gcloud sql instances patch [INSTANCE_NAME] \ --no-deletion-protection
REST v1
인스턴스를 업데이트할 때 삭제 보호를 설정하려면 deletionProtection
필드에 true
를 지정합니다. 삭제 보호를 삭제하려면 해당 필드에 false
를 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 원하는 인스턴스 ID
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
JSON 요청 본문:
{ "settings": { "deletionProtectionEnabled": true } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2022-06-1T03:42:12.281Z", "operationType": "CREATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
인스턴스를 업데이트할 때 삭제 보호를 설정하려면 deletionProtection
필드에 true
를 지정합니다. 삭제 보호를 삭제하려면 해당 필드에 false
를 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 원하는 인스턴스 ID
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/instance-id
JSON 요청 본문:
{ "settings": { "deletionProtectionEnabled": true } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2022-06-1T03:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }