Google Cloud 콘솔에서 새 인스턴스를 만들면 자동 백업 및 PITR (point-in-time recovery)이 모두 자동으로 사용 설정됩니다. 다음과 같이 기존 인스턴스에 PITR을 구성할 수 있습니다.
PITR 사용 설정
Google Cloud 콘솔에서 새 인스턴스를 만들면 자동 백업 설정이 자동으로 사용 설정됩니다.다음 절차는 기존의 기본 인스턴스에서 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 리소스를 사용합니다.
Cloud SQL Enterprise Plus 버전의 PITR 사용 설정
PITR이 사용 설정된 Cloud SQL Enterprise Plus 버전 인스턴스를 만들려면 다음 Terraform 코드 샘플을 사용합니다.Cloud SQL Enterprise 버전의 PITR 사용 설정
PITR이 사용 설정된 Cloud SQL Enterprise 버전 인스턴스를 만들려면 다음 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 SQLSERVER_2019_STANDARD us-central-1 DISK my_02 SQLSERVER_2019_STANDARD us-central-1 CLOUD_STORAGE ...
명령어 출력의 transactionalLogStorageState 필드나 TRANSACTIONAL_LOG_STORAGE_STATE 열은 PITR의 트랜잭션 로그가 인스턴스에 대해 저장되는 위치에 대한 정보를 제공합니다.
가능한 트랜잭션 로그 스토리지 상태는 다음과 같습니다.
DISK: 인스턴스가 PITR에 사용되는 트랜잭션 로그를 디스크에 저장합니다.CLOUD_STORAGE: 인스턴스가 PITR에 사용되는 트랜잭션 로그를 Cloud Storage에 저장합니다.
다음 단계
- 클론에 플래그 구성