point-in-time recovery

개요

Cloud Spanner point-in-time recovery(PITR)는 실수로 인한 삭제 또는 쓰기를 방지합니다. 예를 들어 운영자가 실수로 데이터를 쓰거나 애플리케이션 출시가 데이터베이스를 손상시키는 경우 PITR을 사용하면 (최대 7일 이내의) 과거 시점으로 데이터를 원활하게 복구할 수 있습니다. 데이터를 장기간 보관해야 하는 경우에는 백업 및 복원 또는 내보내기 및 가져오기를 사용하면 됩니다.

기본적으로 데이터베이스는 모든 버전의 데이터와 스키마를 1시간 동안 보관합니다. version_retention_period 옵션을 통해 이 시간 제한을 최대 7일까지 늘릴 수 있습니다. Cloud Spanner는 이전 버전의 데이터를 마이크로초 단위로 저장하고 데이터베이스에서 이전 버전의 데이터를 복구할 수 있는 가장 이른 시간을 나타내는 earliest_version_time을 유지합니다.

데이터 복구 방법

데이터를 복구하는 방법에는 두 가지가 있습니다.

  • 데이터베이스의 일부를 복구하려면 이전의 쿼리 조건과 타임스탬프를 지정하여 비활성 읽기를 수행한 후 결과를 다시 실시간 데이터베이스에 기록합니다. 이는 일반적으로 실시간 데이터베이스의 소위 외과적 수술을 위해 사용됩니다. 예를 들어 특정 행을 실수로 삭제하거나 데이터 하위 집합을 잘못 업데이트한 경우 이와 같은 방법으로 복구할 수 있습니다. 자세한 내용은 일부 데이터베이스 복구를 참조하세요.

  • 전체 데이터베이스를 복구하려면 이전의 타임스탬프를 지정하여 데이터베이스를 백업 또는 내보내기한 후 새 데이터베이스로 복원하거나 가져옵니다. 일반적으로는 손상이 발생하기 전의 시점으로 전체 데이터베이스를 되돌려야 할 때 데이터 손상 문제를 복구하는 데 사용됩니다. 데이터베이스를 백업하거나 내보내는 데 몇 시간 정도 걸릴 수 있으며 기존 데이터베이스로 복원하거나 가져올 수 없습니다. 자세한 내용은 전체 데이터베이스 복구를 참조하세요.

성능에 대한 고려사항

보관 기간이 긴 데이터베이스, 특히 데이터를 자주 덮어쓰는 데이터베이스에서는 시스템 리소스를 더 많이 사용합니다. 특히 인스턴스에 충분한 컴퓨팅 용량이 프로비저닝되지 않으면 데이터베이스 성능에 영향을 미칠 수 있습니다. 데이터베이스의 덮어쓰기 속도가 매우 높은 경우(예: 데이터베이스를 하루에 여러 번 덮어쓰는 경우) 보관 기간을 점진적으로 늘리고시스템을 모니터링하는 것이 좋습니다. 다음과 같은 몇 가지 유의사항이 있습니다.

  • 스토리지 사용량 증가. 스토리지 한도를 초과하지 않도록 스토리지 알림을 설정하는 것이 좋습니다. 보관 기간을 늘리면 데이터베이스에 이전 버전의 데이터가 누적되므로 스토리지 사용량이 점차 증가한다는 점에 유의해야 합니다. 이는 이전 보관 기간 동안 만료되었을 이전 데이터가 더 이상 만료되지 않기 때문입니다. 예를 들어 보관 기간을 3일에서 7일로 늘리면 데이터베이스 스토리지 사용량이 안정화될 때까지 4일을 기다려야 합니다. 스토리지 증가를 예측하기 위한 안내도 제공합니다.

  • CPU 사용량 및 지연 시간 증가. Cloud Spanner는 추가 컴퓨팅 리소스를 사용하여 이전 버전의 데이터를 압축하고 유지합니다. 인스턴스 및 데이터베이스를 모니터링하여 지연 시간과 CPU 사용률이 허용되는 수준으로 유지되는지 확인합니다.

  • 스키마 업데이트 시간 증가 보관 기간이 길어지면 스키마 버전을 더 오래 보관해야 하므로 서버 리소스를 기다리는 중에 스키마 업데이트가 throttled될 수 있습니다. 스키마 업데이트 권장사항을 따르고 스키마 업데이트 한도를 준수하는지 확인합니다.