인스턴스가 활성 상태인지 삭제되었는지에 관계없이 PITR (point-in-time recovery)을 사용하여 기본 Cloud SQL 인스턴스를 복원할 수 있습니다. PITR을 사용하면 인스턴스를 특정 시점으로 복원할 수 있습니다. 삭제된 인스턴스의 경우 인스턴스를 특정 시점으로 복원하여 새 인스턴스 또는 기존 인스턴스로 복구할 수 있습니다.
Cloud SQL은 PITR을 사용하여 인스턴스를 복원할 수 있는 다음 옵션을 제공합니다.
사용할 수 없거나 삭제된 인스턴스에 PITR을 수행하려면 최근 및 가장 빠른 복구 시간을 찾아야 합니다.
PITR 수행
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 복구할 인스턴스의 추가 작업 메뉴(
)를 열고 클론 만들기를 클릭합니다. - 필요한 경우 클론 만들기 페이지에서 새 클론의 ID를 업데이트합니다.
- 이전 시점에서 클론을 선택합니다.
- PITR 시간을 입력합니다.
- 클론 만들기를 클릭합니다.
gcloud
PITR을 사용하여 클론을 만듭니다.
다음을 바꿉니다.
- SOURCE_INSTANCE_NAME - 복원할 인스턴스의 이름
- NEW_INSTANCE_NAME - 클론 이름
- TIMESTAMP - RFC 3339 형식의 소스 인스턴스 UTC 시간대. 예를 들면 2012-11-15T16:19:00.094Z입니다.
gcloud sql instances clone SOURCE_INSTANCE_NAME \ NEW_INSTANCE_NAME \ --point-in-time 'TIMESTAMP'
REST v1
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- target-instance-id: 대상 인스턴스 ID
- source-instance-id: 소스 인스턴스 ID
- restore-timestamp 복원할 특정 시점
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
JSON 요청 본문:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"pointInTime": "restore-timestamp"
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
REST v1beta4
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- target-instance-id: 대상 인스턴스 ID
- source-instance-id: 소스 인스턴스 ID
- restore-timestamp 복원할 특정 시점
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
JSON 요청 본문:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"pointInTime": "restore-timestamp"
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
Backup Vault를 사용하여 PITR 수행
Cloud SQL 인스턴스에서 고급 백업을 사용하도록 설정된 경우 Backup Vault를 사용하여 인스턴스의 PITR(point-in-time recovery)을 수행할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
복구할 인스턴스의 추가 작업 메뉴
를 열고 클론 만들기를 클릭합니다.이전 시점에서 클론을 선택합니다.
PITR 시간을 입력합니다.
클론 만들기를 클릭합니다.
gcloud
Backup Vault에서 인스턴스에 PITR을 수행하려면 PITR을 수행하려는 시간에 가장 가까운 백업의 data-source를 찾아야 합니다. 백업을 찾으려면 인스턴스의 Backup Vault에 있는 모든 백업 나열을 참조하세요. 백업을 확인한 후 다음 명령어를 실행하여 PITR을 수행합니다.
gcloud sql instances point-in-time-restore DATA_SOURCE
PITR_TIMESTAMP
--project=TARGET_PROJECT
다음을 바꿉니다.
- DATA_SOURCE: 복구하려는 PITR 타임스탬프에 가장 가까운 백업의
data-source경로 - PITR_TIMESTAMP: 인스턴스를 복원할 소스 인스턴스 PITR 로그의 UTC 타임스탬프(RFC 3339 형식). 예를 들면 2012-11-15T16:19:00.094Z입니다.
- TARGET_PROJECT: Cloud SQL 인스턴스의 프로젝트 ID
REST v1
REST v1beta4
사용할 수 없는 인스턴스에서 PITR 수행
콘솔
다음과 같은 이유로 다른 영역으로 사용할 수 인스턴스를 복구해야 할 수 있습니다.
- 인스턴스가 구성된 영역에 액세스할 수 없습니다. 이 인스턴스는
FAILED상태입니다. - 인스턴스가 유지보수 중입니다. 이 인스턴스는
MAINTENANCE상태입니다.
사용할 수 없는 인스턴스를 복구하려면 다음 단계를 완료합니다.
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 클론할 인스턴스의 행을 찾습니다.
- 작업 열에서 추가 작업 메뉴를 클릭합니다.
- 클론 만들기를 클릭합니다.
- 클론 만들기 페이지에서 다음 작업을 완료합니다.
- 필요한 경우 인스턴스 ID 필드에서 인스턴스 ID를 업데이트합니다.
- 이전 시점에서 클론을 클릭합니다.
- 특정 시점 필드에서 데이터를 클론할 날짜와 시간을 선택합니다. 이렇게 하면 해당 시점의 인스턴스 상태가 복구됩니다.
- 클론 만들기를 클릭합니다.
클론이 초기화되는 동안 인스턴스 등록 페이지로 돌아옵니다.
gcloud
인스턴스가 구성된 영역에 액세스할 수 없으므로 사용할 수 없는 인스턴스를 다른 영역으로 복구해야 할 수 있습니다.
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --point-in-time DATE_AND_TIME_STAMP \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
gcloud sql instances clone 명령어를 실행하는 사용자 또는 서비스 계정에 cloudsql.instances.clone 권한이 있어야 합니다. gcloud CLI 명령어를 실행하는 데 필요한 권한에 대한 자세한 내용은 Cloud SQL 권한을 참조하세요.
REST v1
인스턴스가 구성된 영역에 액세스할 수 없으므로 사용할 수 없는 인스턴스를 다른 영역으로 복구해야 할 수 있습니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- SOURCE_INSTANCE_NAME: 소스 인스턴스의 이름입니다.
- TARGET_INSTANCE_NAME: 대상 (클론) 인스턴스의 이름입니다.
- DATE_AND_TIME_STAMP: 소스 인스턴스의 날짜 및 시간 스탬프로서 UTC 시간대 및 RFC 3339 형식입니다(예:
2012-11-15T16:19:00.094Z). - ZONE_NAME: 선택사항. 대상 인스턴스의 기본 영역 이름입니다. 클론할 Cloud SQL 인스턴스에 다른 기본 영역을 지정하는 데 사용됩니다. 리전 인스턴스의 경우 이 영역이 기본 영역을 대체하지만 보조 영역이 인스턴스와 동일하게 유지됩니다.
- SECONDARY_ZONE_NAME: 선택사항. 대상 인스턴스의 보조 영역 이름입니다. 클론할 리전 Cloud SQL 인스턴스에 다른 보조 영역을 지정하는 데 사용됩니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
JSON 요청 본문:
{
"cloneContext":
{
"destinationInstanceName": "TARGET_INSTANCE_NAME",
"pointInTime": "DATE_AND_TIME_STAMP",
"preferredZone": "ZONE_NAME",
"preferredSecondaryZone": "SECONDARY_ZONE_NAME"
}
}요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
instances.clone API 메서드를 사용하는 사용자 또는 서비스 계정에는 cloudsql.instances.clone 권한이 있어야 합니다. API 메서드를 사용하는 데 필요한 권한에 대한 자세한 내용은 Cloud SQL 권한을 참조하세요.
REST v1beta4
인스턴스가 구성된 영역에 액세스할 수 없으므로 사용할 수 없는 인스턴스를 다른 영역으로 복구해야 할 수 있습니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- SOURCE_INSTANCE_NAME: 소스 인스턴스의 이름입니다.
- TARGET_INSTANCE_NAME: 대상 (클론) 인스턴스의 이름입니다.
- DATE_AND_TIME_STAMP: 소스 인스턴스의 날짜 및 시간 스탬프로서 UTC 시간대 및 RFC 3339 형식입니다(예:
2012-11-15T16:19:00.094Z). - ZONE_NAME: 선택사항. 대상 인스턴스의 기본 영역 이름입니다. 클론할 Cloud SQL 인스턴스에 다른 기본 영역을 지정하는 데 사용됩니다. 리전 인스턴스의 경우 이 영역이 기본 영역을 대체하지만 보조 영역이 인스턴스와 동일하게 유지됩니다.
- SECONDARY_ZONE_NAME: 선택사항. 대상 인스턴스의 보조 영역 이름입니다. 클론할 리전 Cloud SQL 인스턴스에 다른 보조 영역을 지정하는 데 사용됩니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
JSON 요청 본문:
{
"cloneContext":
{
"destinationInstanceName": "TARGET_INSTANCE_NAME",
"pointInTime": "DATE_AND_TIME_STAMP",
"preferredZone": "ZONE_NAME",
"preferredSecondaryZone": "SECONDARY_ZONE_NAME"
}
}요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
instances.clone API 메서드를 사용하는 사용자 또는 서비스 계정에는 cloudsql.instances.clone 권한이 있어야 합니다. API 메서드를 사용하는 데 필요한 권한에 대한 자세한 내용은 Cloud SQL 권한을 참조하세요.
최근 복구 가능한 시간 이후에 PITR 클론을 만들려고 하면 다음 오류 메시지가 표시됩니다.
The timestamp for point-in-time recovery is after the latest recovery time of Timestamp of latest recovery time. Clone the instance with a time that's earlier than this recovery time.
삭제된 인스턴스에서 PITR 수행
PITR을 사용하여 삭제된 인스턴스를 복원하려면 다음이 필요합니다.
- 인스턴스를 복원할 PITR 타임스탬프 (
timestamp) - 대상 인스턴스 이름
- 소스 인스턴스가 삭제된 시간 (
source-instance-deletion-time)
삭제된 인스턴스에서 PITR을 사용하려면 gcloud CLI 또는 Cloud SQL API만 사용해야 합니다. 자세한 내용은 PITR을 사용하여 삭제된 인스턴스 복원을 참고하세요.
gcloud
PITR 기간 확인하기
삭제된 인스턴스의 PITR 기간을 찾으려면 인스턴스의 가장 빠른 복구 시간과 가장 늦은 복구 시간을 확인하세요. 이 창에서 언제든지 타임스탬프를 선택하여 PITR을 실행할 수 있습니다.
소스 인스턴스 삭제 시간 및 로그 보관 일수 확인
삭제된 인스턴스의 source-instance-deletion-time 및 log-retention-days는 삭제 후 인스턴스의 보관된 백업과 함께 저장됩니다. 삭제된 인스턴스의 이러한 값을 확인하려면 보관된 백업 목록 표시를 참고하세요.
PITR을 사용하여 복원
PITR을 사용하여 삭제된 인스턴스를 복원하려면 다음 명령어를 실행합니다.
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time='PITR_TIMESTAMP' \
--source-instance-deletion-time=SOURCE_INSTANCE_DELETION_TIMESTAMP
다음을 바꿉니다.
SOURCE_INSTANCE_NAME: 복원하려는 소스 인스턴스의 이름입니다.NEW_INSTANCE_NAME: 새 인스턴스의 이름PITR_TIMESTAMP: 인스턴스를 복원할 소스 인스턴스 PITR 로그의 UTC 타임스탬프(RFC 3339 형식). 예를 들면 2012-11-15T16:19:00.094Z입니다.SOURCE_INSTANCE_DELETION_TIMESTAMP: 소스 인스턴스가 삭제된 시간의 UTC 타임스탬프(RFC 3339 형식). 예를 들면 2012-11-15T16:19:00.094Z입니다.
REST v1
PITR 기간 확인하기
삭제된 인스턴스의 PITR 기간을 찾으려면 인스턴스의 가장 빠른 복구 시간과 가장 늦은 복구 시간을 확인하세요. 이 창에서 언제든지 타임스탬프를 선택하여 PITR을 실행할 수 있습니다.
소스 인스턴스 삭제 시간 및 로그 보관 일수 확인
삭제된 인스턴스의 source-instance-deletion-time 및 log-retention-days는 삭제 후 인스턴스의 보관된 백업과 함께 저장됩니다. 삭제된 인스턴스의 이러한 값을 확인하려면 보관된 백업 목록 표시를 참고하세요.
PITR을 사용하여 복원
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- target-instance-id: 대상 인스턴스 ID
- source-instance-id: 소스 인스턴스 ID
- source-instance-deletion-time: 소스 인스턴스의 삭제 시간
- restore-timestamp: 인스턴스를 복원할 특정 시점
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
JSON 요청 본문:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"sourceInstanceDeletionTime: "source-instance-deletion-time",
"pointInTime": "restore-timestamp"
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
REST v1beta4
PITR 기간 확인하기
삭제된 인스턴스의 PITR 기간을 찾으려면 인스턴스의 가장 빠른 복구 시간과 가장 늦은 복구 시간을 확인하세요. 이 창에서 언제든지 타임스탬프를 선택하여 PITR을 실행할 수 있습니다.
소스 인스턴스 삭제 시간 및 로그 보관 일수 확인
삭제된 인스턴스의 source-instance-deletion-time 및 log-retention-days는 삭제 후 인스턴스의 보관된 백업과 함께 저장됩니다. 삭제된 인스턴스의 이러한 값을 확인하려면 보관된 백업 목록 표시를 참고하세요.
PITR을 사용하여 복원
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- target-instance-id: 대상 인스턴스 ID
- source-instance-id: 소스 인스턴스 ID
- source-instance-deletion-time: 소스 인스턴스의 삭제 시간
- restore-timestamp: 인스턴스를 복원할 특정 시점
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
JSON 요청 본문:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"sourceInstanceDeletionTime: "source-instance-deletion-time",
"pointInTime": "restore-timestamp"
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
가장 빠른 복구 시간과 가장 늦은 복구 시간 가져오기
사용 가능한 인스턴스의 경우 인스턴스의 PITR 기간 내의 타임스탬프로 PITR을 수행할 수 있습니다. PITR 기간은 가장 빠른 복구 시간에 시작하여 가장 늦은 복구 시간에 종료됩니다. 인스턴스를 사용할 수 없고 인스턴스 로그가 Cloud Storage에 저장되어 있거나 인스턴스가 삭제되었고 PITR 보관이 사용 설정되어 있는 경우 가장 빠른 복구 시간과 가장 늦은 복구 시간을 검색하고 해당 기간 내의 타임스탬프로 PITR을 수행할 수 있습니다. 모든 경우에 선호하는 영역의 값을 제공하여 다른 기본 또는 보조 영역으로 인스턴스를 복원할 수 있습니다.
gcloud
사용할 수 없는 인스턴스
사용할 수 없는 Cloud SQL 인스턴스를 복구할 수 있는 가장 빠른 시간과 가장 늦은 시간을 가져오려면 다음 명령어를 실행하세요.
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
다음을 바꿉니다.
INSTANCE_NAME: 최신 복구 시간을 찾으려는 인스턴스의 이름입니다.
인스턴스 삭제됨
Cloud SQL 삭제된 인스턴스를 복구할 수 있는 가장 빠른 시간과 가장 늦은 시간을 가져오려면 다음 명령어를 실행하세요.
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
--source-instance-deletion-time='SOURCE_INSTANCE_DELETION_TIMESTAMP'
다음을 바꿉니다.
INSTANCE_NAME: 최신 복구 시간을 찾으려는 인스턴스의 이름입니다.SOURCE_INSTANCE_DELETION_TIMESTAMP: 소스 인스턴스가 삭제된 시간의 UTC 타임스탬프(RFC 3339 형식). 예를 들면 2012-11-15T16:19:00.094Z입니다.
REST v1
사용할 수 없는 인스턴스
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_NAME: 최근 복구 시간을 쿼리하는 인스턴스의 이름
HTTP 메서드 및 URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
인스턴스 삭제됨
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_NAME: 최근 복구 시간을 쿼리하는 소스 인스턴스의 이름
- SOURCE_INSTANCE_DELETION_TIME: 소스 인스턴스가 삭제된 시간
HTTP 메서드 및 URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
REST v1beta4
사용할 수 없는 인스턴스
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_NAME: 최근 복구 시간을 쿼리하는 인스턴스의 이름
HTTP 메서드 및 URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
인스턴스 삭제됨
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_NAME: 최근 복구 시간을 쿼리하는 소스 인스턴스의 이름
- SOURCE_INSTANCE_DELETION_TIME: 소스 인스턴스가 삭제된 시간
HTTP 메서드 및 URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
문제 해결
| 문제 | 문제 해결 |
|---|---|
|
또는
|
입력한 타임스탬프가 잘못되었습니다. |
|
또는
|
입력한 타임스탬프는 백업 또는 바이너리 좌표를 찾을 수 없는 경우의 시간입니다. |
다음 단계
- 클론에 플래그 구성