이 페이지에서는 Cloud SQL 인스턴스가 실수로 삭제되지 않도록 보호하는 방법을 설명합니다.
개요
인스턴스 삭제 방지를 사용 설정하면 기존 인스턴스와 새 인스턴스가 실수로 삭제되는 것을 방지할 수 있습니다. 인스턴스 삭제 방지를 사용하면 애플리케이션과 서비스에 중요한 인스턴스를 보호할 수 있습니다.
인스턴스를 만들 때 삭제 방지 옵션을 설정할 수 있습니다. 또한 기존 인스턴스에서 이 옵션을 설정할 수 있습니다. 두 경우 모두 인스턴스 수준에서 삭제가 방지됩니다. 기본적으로 콘솔이나 Terraform을 사용하여 인스턴스를 만들지 않는 한 삭제 방지 옵션은 중지되어 있습니다. Google Cloud
인스턴스를 클론하면 새 인스턴스가 소스 인스턴스의 삭제 방지 옵션 (사용 설정 또는 중지)을 수신합니다.
삭제 보호 계획
인스턴스를 만들려는 경우 새 인스턴스가 실수로 삭제되지 않도록 보호할지 여부를 결정합니다. 예를 들어 중요한 인스턴스를 이러한 방식으로 보호해야 합니다.
또한 실수로 인한 삭제로부터 보호하려는 기존 인스턴스가 있는지 여부를 고려합니다. 보호할 인스턴스가 여러 개인 경우 각 인스턴스에서 옵션을 설정합니다.
읽기 복제본의 삭제 보호 고려
읽기 복제본을 만들 때 읽기 복제본이 기본 인스턴스에서 삭제 보호 설정을 가져오지 않습니다. 이 설정은 독립적으로 유지됩니다. 하지만 새 읽기 복제본이나 기존 읽기 복제본에서 삭제 보호를 사용 설정할 수 있습니다.
Cloud SQL 읽기 복제본의 경우 삭제 보호 옵션은 Cloud SQL 인스턴스와 동일한 방식으로 작동합니다.
필요한 권한 또는 역할 확인
삭제 방지 옵션을 설정하려면 Cloud SQL 인스턴스의 서비스 계정 에 특정 권한 또는 IAM 역할이 있어야 합니다.
인스턴스 만들기 권한 또는 역할
관련 작업의 경우와 마찬가지로 삭제 보호 옵션을 사용하려면 cloudsql.instances.create 권한이나 cloudsql.admin 역할이 필요합니다. 따라서 인스턴스를 만들 때 삭제 보호를 사용 설정하는 데 필요한 추가 권한은 없습니다.
인스턴스 수정 권한 또는 역할
관련 작업의 경우와 마찬가지로 삭제 보호를 변경하려면 cloudsql.instances.update 권한이나 cloudsql.editor 역할이 필요합니다. 따라서 삭제 방지를 위해 인스턴스를 편집할 때 추가 권한이 필요하지 않습니다.
인스턴스 삭제 계획
인스턴스를 삭제하려면 먼저 다음을 수행합니다.
- 인스턴스를 안전하게 삭제할 수 있는지 확인
- 삭제 방지가 중지되었는지 확인합니다. 필요한 경우 인스턴스를 수정하여 삭제 방지를 중지합니다.
삭제 방지 제한사항
인스턴스의 삭제 방지는 다음을 방지하지 않습니다.
- 인스턴스 중지
- 인스턴스 다시 시작
- 인스턴스 수정
- 백업 삭제
- 결제 문제로 인한 인스턴스 일시중지
- 결제 문제로 인해 일시중지된 인스턴스 삭제
- 프로젝트 삭제로 인한 인스턴스 삭제
새 인스턴스에서 삭제 방지 설정
다음은 삭제 방지 옵션을 설정하는 방법입니다. 기본적으로, 콘솔 Google Cloud 이나 Terraform을 사용하여 인스턴스를 만들지 않는 한 삭제 보호 옵션은 중지되어 있습니다.
삭제 방지가 사용 설정된 경우 인스턴스 삭제 시도가 실패합니다.
콘솔
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"
}
기존 인스턴스에서 삭제 방지 설정 또는 삭제
다음은 삭제 방지를 위해 인스턴스를 수정하는 방법입니다. 이 옵션을 사용 설정하면 이후에 인스턴스를 삭제하려는 시도가 실패합니다.
콘솔
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"
}