Google Cloud 콘솔에서 새 인스턴스를 만들면 자동 백업 및 PITR (point-in-time recovery)이 모두 자동으로 사용 설정됩니다. 다음과 같이 기존 인스턴스에 PITR을 구성할 수 있습니다.
PITR 사용 설정
Google Cloud 콘솔에서 새 인스턴스를 만들면 자동 백업 및 PITR(point-in-time recovery) 사용 설정이 모두 자동으로 사용 설정됩니다.다음 절차는 기존의 기본 인스턴스에서 PITR을 사용 설정합니다.
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- PITR을 사용 설정할 인스턴스의 추가 작업 메뉴(
)를 열고 수정을 클릭합니다. - 인스턴스 맞춤설정에서 데이터 보호 섹션을 펼칩니다.
- point-in-time recovery 사용 설정 체크박스를 선택합니다.
- 로그 일수 필드에 로그를 보관할 일수(Cloud SQL Enterprise Plus 버전의 경우 1~35, Cloud SQL Enterprise 버전의 경우 1~7)를 입력합니다.
- 저장을 클릭합니다.
gcloud
- 인스턴스 개요를 표시합니다.
gcloud sql instances describe INSTANCE_NAME
backupConfiguration섹션에enabled: false가 표시되면 예약된 백업을 사용 설정합니다.gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
UTC±00 시간대의 24시간제를 사용하여
backup-start-time파라미터를 지정합니다.- PITR을 사용 설정합니다.
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
기본 인스턴스에서 PITR을 사용 설정하면 다음 파라미터를 추가하여 트랜잭션 로그 보관 일수를 구성할 수도 있습니다.
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS - 변경사항을 확인합니다.
gcloud sql instances describe INSTANCE_NAME
변경이 성공하면
backupConfiguration섹션에pointInTimeRecoveryEnabled: true가 표시됩니다.
Terraform
PITR을 사용 설정하려면 Terraform 리소스를 사용합니다.
변경사항 적용
Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.
Cloud Shell 준비
- Cloud Shell을 실행합니다.
-
Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.
이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.
디렉터리 준비
각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.
-
Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는
.tf확장자가 있어야 합니다(예:main.tf). 이 튜토리얼에서는 파일을main.tf라고 합니다.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.
샘플 코드를 새로 만든
main.tf에 복사합니다.필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.
- 환경에 적용할 샘플 파라미터를 검토하고 수정합니다.
- 변경사항을 저장합니다.
-
Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
terraform init
원하는 경우 최신 Google 공급업체 버전을 사용하려면
-upgrade옵션을 포함합니다.terraform init -upgrade
변경사항 적용
-
구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
terraform plan
필요에 따라 구성을 수정합니다.
-
다음 명령어를 실행하고 프롬프트에
yes를 입력하여 Terraform 구성을 적용합니다.terraform apply
Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.
- 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.
변경사항 삭제
변경사항을 삭제하려면 다음 단계를 따르세요.
- Terraform 구성 파일에서 삭제 보호를 사용 중지하려면
deletion_protection인수를false로 설정합니다.deletion_protection = "false"
- 다음 명령어를 실행하고 프롬프트에
yes를 입력하여 업데이트된 Terraform 구성을 적용합니다.terraform apply
-
다음 명령어를 실행하고 프롬프트에
yes를 입력하여 이전에 Terraform 구성에 적용된 리소스를 삭제합니다.terraform destroy
REST v1
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
- INSTANCE_NAME: 고가용성으로 구성하려는 기본 또는 읽기 복제본 인스턴스의 이름
- START_TIME: 시간(시간 및 분)
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 요청 본문:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
REST v1beta4
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
- INSTANCE_NAME: 고가용성으로 구성하려는 기본 또는 읽기 복제본 인스턴스의 이름
- START_TIME: 시간(시간 및 분)
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 요청 본문:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
PITR 사용 중지
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 비활성화할 인스턴스의 추가 작업 메뉴
를 열고 수정을 선택합니다. - 인스턴스 맞춤설정에서 데이터 보호 섹션을 펼칩니다.
- point-in-time recovery 사용 설정을 선택 해제합니다.
- 저장을 클릭합니다.
gcloud
- PITR(point-in-time recovery) 비활성화:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- 변경사항을 확인합니다.
gcloud sql instances describe INSTANCE_NAME
변경이 성공하면
backupConfiguration섹션에pointInTimeRecoveryEnabled: false가 표시됩니다.
REST v1
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
JSON 요청 본문:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
REST v1beta4
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
JSON 요청 본문:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
트랜잭션 로그 보관 설정
미리 쓰기 로그를 보관할 일수를 설정하려면 다음 단계를 따르세요.
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 트랜잭션 로그를 설정할 인스턴스의 추가 작업 메뉴
를 열고 수정을 선택합니다. - 인스턴스 맞춤설정에서 데이터 보호 섹션을 펼칩니다.
- point-in-time recovery 사용 설정 섹션에서 고급 옵션을 확장합니다.
- 로그를 보관할 일수(Cloud SQL Enterprise Plus 버전의 경우 1~35, Cloud SQL Enterprise 버전의 경우 1~7)를 입력합니다.
- 저장을 클릭합니다.
gcloud
인스턴스를 수정하여 미리 쓰기 로그를 보관할 일수를 설정합니다.
다음을 바꿉니다.
- INSTANCE_NAME: 트랜잭션 로그를 설정할 인스턴스의 이름
DAYS_TO_RETAIN: 트랜잭션 로그 보관 일수. Cloud SQL Enterprise Plus 버전의 경우 유효 범위는 1~35일이며 기본값은 14일입니다. Cloud SQL Enterprise 버전의 경우 유효 범위는 1~7일이며 기본값은 7일입니다.
값을 지정하지 않으면 Cloud SQL에서 기본값을 사용합니다. PITR이 사용 설정된 경우에만 유효합니다. 트랜잭션 로그 보관 일수를 늘리려면 더 큰 스토리지 크기가 필요합니다.
gcloud sql instances patch INSTANCE_NAME
--retained-transaction-log-days=DAYS_TO_RETAIN
REST v1
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
DAYS_TO_RETAIN: 트랜잭션 로그 보관 일수. Cloud SQL Enterprise Plus 버전의 경우 유효 범위는 1~35일이며 기본값은 14일입니다. Cloud SQL Enterprise 버전의 경우 유효 범위는 1~7일이며 기본값은 7일입니다.
값을 지정하지 않으면 기본값이 사용됩니다. PITR이 사용 설정된 경우에만 유효합니다. 트랜잭션 로그 보관 일수를 늘리려면 더 큰 스토리지 크기가 필요합니다.
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
REST v1beta4
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
DAYS_TO_RETAIN: 트랜잭션 로그 보관 일수. Cloud SQL Enterprise Plus 버전의 경우 유효 범위는 1~35일이며 기본값은 14일입니다. Cloud SQL Enterprise 버전의 경우 유효 범위는 1~7일이며 기본값은 7일입니다.
값을 지정하지 않으면 기본값이 사용됩니다. PITR이 사용 설정된 경우에만 유효합니다. 트랜잭션 로그 보관 일수를 늘리려면 더 큰 스토리지 크기가 필요합니다.
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
PITR에 사용되는 트랜잭션 로그의 스토리지 위치 확인
Cloud SQL 인스턴스가 PITR에 사용되는 트랜잭션 로그를 저장하는 위치를 확인할 수 있습니다.
gcloud
인스턴스가 PITR 로그를 디스크 또는 Cloud Storage에 저장하는지 확인하려면 다음 명령어를 사용합니다.
gcloud sql instances describe INSTANCE_NAME
INSTANCE_NAME을 인스턴스 이름으로 바꿉니다.
동일한 프로젝트에 있는 여러 인스턴스의 경우 트랜잭션 로그의 스토리지 위치를 확인할 수도 있습니다. 여러 인스턴스 위치를 확인하려면 다음 명령어를 사용합니다.
gcloud sql instances list --show-transactional-log-storage-state
응답 예:
NAME DATABASE_VERSION LOCATION TRANSACTIONAL_LOG_STORAGE_STATE my_01 POSTGRES_12 us-central-1 DISK my_02 POSTGRES_12 us-central-1 CLOUD_STORAGE ...
명령어 출력의 transactionalLogStorageState 필드나 TRANSACTIONAL_LOG_STORAGE_STATE 열은 PITR의 트랜잭션 로그가 인스턴스에 대해 저장되는 위치에 대한 정보를 제공합니다.
가능한 트랜잭션 로그 스토리지 상태는 다음과 같습니다.
DISK: 인스턴스가 PITR에 사용되는 트랜잭션 로그를 디스크에 저장합니다. Cloud SQL Enterprise 버전 인스턴스를 Cloud SQL Enterprise Plus 버전으로 업그레이드하는 경우 업그레이드 프로세스에서 로그 스토리지 위치를 자동으로 Cloud Storage로 전환합니다. 자세한 내용은 인플레이스 업그레이드를 사용하여 인스턴스를 Cloud SQL Enterprise Plus 버전으로 업그레이드를 참조하세요. 인스턴스 버전 업그레이드 및 다운타임 없이 gcloud CLI 또는 Cloud SQL Admin API를 사용하여 스토리지 위치를 전환할 수도 있습니다. 자세한 내용은 트랜잭션 로그 스토리지를 Cloud Storage로 전환을 참조하세요.SWITCHING_TO_CLOUD_STORAGE: 인스턴스가 PITR 트랜잭션 로그의 스토리지 위치를 Cloud Storage로 전환하고 있습니다.SWITCHED_TO_CLOUD_STORAGE: 인스턴스가 PITR 트랜잭션 로그의 스토리지 위치를 디스크에서 Cloud Storage로 전환하는 작업을 완료하였습니다.CLOUD_STORAGE: 인스턴스가 PITR에 사용되는 트랜잭션 로그를 Cloud Storage에 저장합니다.
트랜잭션 로그 스토리지를 Cloud Storage로 전환
인스턴스에서 PITR에 사용되는 트랜잭션 로그를 디스크에 저장하는 경우 다운타임 없이 스토리지 위치를 Cloud Storage로 전환할 수 있습니다. 스토리지 위치 전환 전체 프로세스가 완료되는 데 트랜잭션 로그 보관 기간(일)과 비슷한 시간이 소요됩니다. 전환을 시작하자마자 Cloud Storage에 트랜잭션 로그가 누적되기 시작합니다. 작업 중에 PITR에 사용되는 트랜잭션 로그의 스토리지 위치 확인에서 명령어를 사용하여 전체 프로세스 상태를 확인할 수 있습니다.
Cloud Storage로 전환 전체 프로세스가 완료되면 Cloud SQL은 PITR에 Cloud Storage의 트랜잭션 로그를 사용합니다.
gcloud
스토리지 위치를 Cloud Storage로 전환하려면 다음 명령어를 사용합니다.
gcloud sql instances patch INSTANCE_NAME \ --switch-transaction-logs-to-cloud-storage
INSTANCE_NAME을 인스턴스 이름으로 바꿉니다. 인스턴스는 복제본 인스턴스가 아닌 기본 인스턴스여야 합니다. 응답은 다음 예시와 유사합니다.
The following message is used for the patch API method.
{"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"}
Patching Cloud SQL instance...done.
Updated
[https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
명령어에서 오류를 반환하는 경우 다음 단계는 Cloud Storage로의 전환 문제 해결을 참조하세요.
REST v1
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID입니다. 인스턴스는 복제본 인스턴스가 아닌 기본 인스턴스여야 합니다.
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"switchTransactionLogsToCloudStorageEnabled": true
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
요청에서 오류를 반환하는 경우 다음 단계는 Cloud Storage로의 전환 문제 해결을 참조하세요.
REST v1beta4
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID입니다. 인스턴스는 복제본 인스턴스가 아닌 기본 인스턴스여야 합니다.
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 요청 본문:
{
"switchTransactionLogsToCloudStorageEnabled": true
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
요청에서 오류를 반환하는 경우 다음 단계는 Cloud Storage로의 전환 문제 해결을 참조하세요.
Cloud Storage로 전환 문제 해결
다음 표에는 트랜잭션 로그의 스토리지 위치를 디스크에서 Cloud Storage로 전환할 때 INVALID REQUEST 코드와 함께 반환될 수 있는 오류가 나와 있습니다.
| 문제 | 문제 해결 |
|---|---|
Switching the storage location of the transaction logs
used for PITR is not supported for instances with database type %s.
|
MySQL용 Cloud SQL 또는 PostgreSQL용 Cloud SQL 인스턴스에서 gcloud CLI 명령어를 실행하거나 API 요청을 보내고 있는지 확인합니다. SQL Server용 Cloud SQL에서는 gcloud CLI 또는 Cloud SQL Admin API를 사용하여 트랜잭션 로그의 스토리지 위치를 전환할 수 없습니다. |
PostgreSQL transactional logging is not enabled on this instance.
|
PostgreSQL은 PITR(point-in-time recovery)의 트랜잭션 로그로 미리 쓰기 로깅을 사용합니다. PITR을 지원하려면 PostgreSQL에서 인스턴스에 미리 쓰기 로깅을 사용 설정해야 합니다. 미리 쓰기 로깅을 사용 설정하는 방법에 관한 자세한 내용은 PITR 사용 설정을 참고하세요. |
This instance is already storing transaction logs used for PITR in
Cloud Storage
|
트랜잭션 로그의 스토리지 위치를 확인하려면 PITR에 사용되는 트랜잭션 로그의 스토리지 위치 확인에서 명령어를 실행합니다. |
The instance is already switching transaction logs used for PITR from disk
to Cloud Storage.
|
전환 작업이 완료될 때까지 기다립니다. 작업 상태와 트랜잭션 로그의 스토리지 위치를 확인하려면 PITR에 사용되는 트랜잭션 로그의 스토리지 위치 확인에서 명령어를 실행합니다. |
다음 단계
- 클론에 플래그 구성