이 페이지에서는 Redis용 Memorystore에 대한 RDB 스냅샷 개요를 제공합니다. 이 페이지에서는 사용자가 오픈소스 Redis RDB 스냅샷 및 Memorystore 가져오기/내보내기 기능을 알고 있다고 가정합니다.
RDB 스냅샷 사용 설정, 사용 중지, 모니터링 방법을 알아보려면 RDB 스냅샷 관리를 참조하세요.
Memorystore for Redis는 주로 인메모리 캐시로 사용됩니다. Memorystore를 캐시로 사용하면 애플리케이션에서 캐시 데이터 손실이 용인되거나 영구 저장소에서 캐시를 매우 쉽게 다시 채울 수 있습니다. 하지만 일부 사용 사례에서는 Memorystore 인스턴스의 다운타임 또는 인스턴스 데이터에 대한 완전 손실로 인해 애플리케이션 다운타임이 길게 발생할 수 있습니다.
고가용성을 위해서는 표준 등급을 기본 메커니즘으로 사용하는 것이 좋습니다. 또한 표준 등급 인스턴스에서 RDB 스냅샷을 사용 설정하면 캐시 삭제를 일으킬 수 있는 오류에 대한 추가적인 보호가 가능합니다. 표준 등급은 여러 복제본을 포함하는 가용성이 높은 인스턴스를 제공하고 기본 항목이 실패했을 때 자동 장애 조치를 사용해서 빠른 복구를 사용 설정합니다.
일부 시나리오에서는 표준 등급 인스턴스에 재해 수준의 오류가 발생했을 때 스냅샷 백업으로부터 데이터를 복구할 수 있는지 확인해야 할 수 있습니다. 이러한 시나리오에서 자동화된 백업 및 RDB 스냅샷에서 데이터를 복원하는 기능은 데이터 손실에 대해 추가적인 보호를 제공합니다. RDB 스냅샷이 사용 설정된 경우 필요에 따라 최신 RDB 스냅샷에서 복구가 수행됩니다.
RDB 스냅샷은 오래된 데이터가 복구되더라도 이를 어느 정도 용인할 수 있는 사용 사례에 적합합니다. 또한 RDB 스냅샷을 사용해서 기본 등급 인스턴스의 백업 및 복구를 자동화할 수 있습니다.
RDB 스냅샷 개요
RDB 스냅샷 기능은 다음과 같이 동작합니다.
영구 스토리지에서 사용자가 지정한 간격으로 전체 특정 시점 스냅샷을 저장합니다.
루틴 스냅샷의 빈도 및 일정을 선택합니다. 최소 스냅샷 간격은
1h
이고 최대 간격은24h
입니다.기본 등급 인스턴스는 오류로 인해 인스턴스가 다시 시작되거나, 조정 작업을 수행하거나, 인스턴스의 OSS Redis 버전 업그레이드를 수행할 때마다 최신 스냅샷에서 데이터를 복구합니다.
기본적으로 표준 등급 인스턴스는 스냅샷이 아닌 복제본에서 데이터를 복구합니다. 하지만 표준 등급 인스턴스는 복제본을 사용할 수 없고 기본 및 복제본 모두 다시 시작이 수행될 때 스냅샷에서 데이터를 복구합니다.
인스턴스 결제에 비용이 추가되지 않습니다.
추가 동작
스냅샷이 인스턴스 복구에 사용되고 수동 복원을 위해서는 사용할 수 없습니다. 어느 시점에서든 마지막으로 성공한 스냅샷만 복구에 사용할 수 있습니다. RDB 스냅샷 외에도 내보내기 및 가져오기를 사용해서 데이터를 수동으로 백업하고 복원할 수 있습니다.
표준 등급 인스턴스의 경우 기본 항목에서 메모리 및 CPU 사용을 최소화하기 위해 복제본에서 스냅샷이 생성됩니다. 스냅샷은 기본 노드에서 생성되지 않습니다.
제약조건
Redis 버전 5.0 이상을 사용하는 Memorystore for Redis 인스턴스에서 사용 가능합니다.
인스턴스에 키가 많으면 (약 2억 개 이상) RDB 스냅샷 및 복구가 느려질 수 있습니다. 이러한 키 볼륨에서는 Redis 서버 자체에 병목 현상이 발생하여 스냅샷 및 복구 속도가 느려질 수 있습니다.
RDB 스냅샷 예약
인스턴스 만들기 중 RDB 스냅샷을 사용 설정할 때는 스냅샷 간격을 지정해야 합니다. 또한 시작 시간을 지정할 수도 있습니다. 이러한 방법에 따라 스냅샷의 일일 일정을 정의합니다. 설정할 수 있는 간격은 1h
, 6h
, 12h
, 24h
입니다. 예를 들어 시작 시간을 오전 4시로, 간격을 1시간으로 설정하면 스냅샷이 사용 설정된 날짜의 오전 4시에 시작되고 이후 매시간 계속됩니다.
시작 시간을 지정하지 않으면 가능한 한 가장 이른 시간에 첫 번째 스냅샷이 작성되고 이후 간격에 따라 스냅샷이 작성됩니다. 예를 들어 시작 시간을 지정하지 않았고 간격이 1시간이면 스냅샷이 오전 6시 13분에 시작되고 이후 오전 7:13, 8:13과 같이 한 시간 간격으로 계속될 수 있습니다.
시작 시간이 지정된 경우 스냅샷이 항상 성공하고 지정된 백업 간격보다 오래 걸리지 않으면 일별 일정이 계속 적용됩니다.
하지만 일별 일정을 기준으로 하는 스냅샷 트리거는 최대한 가능한 정도까지만 수행됩니다. 여러 가지 이유로 인해 일정이 처음에 결정된 일정에서 벗어날 수 있습니다.
스냅샷이 실패하거나 스냅샷 작성 시간이 지정된 스냅샷 간격보다 오래 걸릴 경우 다음 스냅샷은 현재 스냅샷이 완료되는 즉시 시작됩니다.
- 스냅샷이 연속적으로 실행되어 인스턴스가 과부하되지 않도록 방지하려면 스냅샷 완료 시간이 충분하도록 간격을 설정하는 것이 좋습니다.
스냅샷이 일별 일정에 맞는 시간에 이미 진행 중이면 스냅샷이 완료되고, 마지막으로 성공한 스냅샷의 시작 시간으로부터의 간격에 따라서만 다음 스냅샷 시간이 계산됩니다.
기존 일정 조정
일부 경우에는 특정 시간 동안 RDB 스냅샷 작성을 일시적으로 중지해야 할 수 있습니다. 예를 들어 중요 이벤트 중 성능 영향이 없도록 하거나 성능 문제 해결을 위해 스냅샷을 일시적으로 사용 중지해야 할 수 있습니다.
잠시 동안 일시적으로 스냅샷 작성을 중지하려면 시작 시간을 이후 날짜로 조정할 수 있습니다. 시작 시간을 이후 날짜로 조정한 경우에는 해당 날짜까지 다음 스냅샷이 시작되지 않습니다. 이렇게 하면 최소 7일 동안 마지막 스냅샷이 보존되고 복구 시에 사용됩니다.
스냅샷 일정 조정에 대한 자세한 내용은 스냅샷 일정 조정을 참조하세요.
복구 동작
기본 등급 Redis 인스턴스는 인스턴스가 다시 시작될 때마다 복구를 트리거합니다. 다시 시작을 트리거하는 일반적인 작업은 인스턴스 조정 및 버전 업그레이드입니다. RDB 스냅샷은 다시 시작, 계획된 유지보수, 예측할 수 없는 시스템 오류를 일으키는 작업 중 기본 등급 인스턴스 데이터를 보존합니다.
표준 등급 Redis 인스턴스는 스냅샷에서 로드하는 대신 기본 복구 메커니즘으로 복제본으로 장애 조치를 수행합니다. 표준 등급 인스턴스는 복제본에서 복원이 실패할 때 스냅샷에서 복구됩니다.
복구 시 데이터 일관성
사용 설정된 경우 RDB 스냅샷은 백업이 지정된 간격에 따라 수행되도록 최선의 노력을 다하지만 이를 보장할 수는 없습니다. 스냅샷은 여러 이유로 실패할 수 있습니다. RDB 스냅샷이 사용 설정되었을 때 인스턴스를 구성 및 모니터링하는 방법은 권장사항을 참조하세요.
스냅샷이 여러 간격에 따라 연속적으로 실패할 경우 마지막으로 사용 가능한 백업의 오래된 정도가 심해질 수 있습니다.
최악의 경우 마지막으로 성공한 스냅샷이 시작된 이후에 지정된 간격부터 그 다음 스냅샷을 스토리지에 저장할 때까지의 시간 동안 복구 데이터가 손실될 수 있습니다. 복구 이슈가 발생한 경우 last_success_age
측정항목을 사용해서 데이터 손실 기간을 확인합니다.
예약된 스냅샷의 실패를 감지하고 교정 조치를 수행할 수 있도록 알림을 설정하는 것이 좋습니다. 알림 설정에 대한 자세한 내용은 스냅샷 모니터링을 참조하세요.
복구 시간
인스턴스가 스냅샷에서 복구되는 동안에는 인스턴스를 사용할 수 없습니다.
복구 시간은 스냅샷 크기에 따라 달라집니다. 예측된 복구 시간을 파악하려면 Cloud Monitoring 또는 Google Cloud 콘솔을 사용하여 RDB recovery remaining time
측정항목을 확인합니다.
느린 복구 문제 해결
일부 경우에는 스냅샷에서 복구가 예상보다 오래 걸릴 수 있습니다. 가능한 한 빨리 애플리케이션을 Redis에 다시 연결하기 위해서는 사용자가 조치를 취해야 할 수 있습니다.
이 경우에는 새 Redis 인스턴스를 만들고 애플리케이션 트래픽을 이 인스턴스로 연결할 수 있습니다. 그런 후 원래 인스턴스가 복구된 다음 복원된 데이터를 새 인스턴스로 전송할 수 있습니다.
스냅샷 실패 및 복구 실패
스냅샷 실패
실패한 스냅샷은 Cloud Monitoring으로 보고되고 스냅샷이 즉시 다시 시도됩니다. 스냅샷이 연속으로 실패하면 점점 더 오래된 데이터가 복구되기 때문에 복구 시 손실되는 데이터 양이 늘어납니다. 스냅샷 오류를 감지하고 문제를 해결하는 방법에 대한 자세한 내용은 스냅샷 모니터링을 참조하세요.
복구 실패
복구 실패는 드물지만 발생 가능합니다. 복구 실패가 발생하면 인스턴스가 데이터 없이 복구됩니다.
권장사항
RDB 스냅샷으로 인스턴스를 백업할 때 최상의 결과를 얻기 위해서는 아래 설명된 권장사항을 따라야 합니다.
메모리 관리
RDB 스냅샷은 프로세스 포크 및 'copy-on-write' 메커니즘을 사용하여 인스턴스 스냅샷을 작성합니다. 인스턴스에 대한 쓰기 패턴에 따라 쓰기의 영향을 받는 페이지가 복사될 때 인스턴스의 사용된 메모리가 증가합니다. 최악의 경우 메모리 공간이 인스턴스에 있는 데이터 크기의 두 배로 증가할 수 있습니다.
스냅샷을 완료하는 데 충분한 메모리가 인스턴스에 포함되도록 하려면 maxmemory-gb
를 인스턴스 용량의 80%로 설정해서 20%가 오버헤드를 위해 예약되도록 해야 합니다. 자세한 내용은 메모리 관리 권장사항을 참조하세요. 스냅샷 모니터링 외에도 이러한 메모리 오버헤드는 스냅샷 성공을 위해 워크로드를 관리하는 데 도움이 됩니다.
오래된 스냅샷
오래된 스냅샷에서 인스턴스를 복구하면 스키마 변경과 같이 많은 양의 오래된 키 또는 기타 변경사항을 데이터베이스에 대해 조정하려고 시도하기 때문에 애플리케이션에 성능 문제가 발생할 수 있습니다.
스냅샷이 너무 오래되었거나 스냅샷에 조정하기 어려운 중요한 기타 변경사항이 인스턴스에 발생했다고 생각될 경우 RDB 스냅샷을 사용 중지하고 다시 사용 설정할 수 있습니다. 이렇게 하면 기존 스냅샷이 삭제되어 오래된 스냅샷에서 복구되지 않도록 방지할 수 있습니다.
오래된 스냅샷을 모니터링하려면 RDB 스냅샷 last_status
및 RDB 스냅샷 last_success_age
측정항목에 대해 알림을 설정합니다.
스냅샷에서 오래된 복구
인스턴스를 사용할 수 없을 때 알림을 받으려면 redis.googleapis.com/server/uptime
측정항목에 대해 알림을 설정하는 것이 좋습니다.
인스턴스를 사용할 수 없고 스냅샷에서 복구하는 데 너무 오래 걸리면 새 Redis 인스턴스를 만들고 여기에 트래픽을 연결할 수 있습니다. 원래 Redis 인스턴스가 복구되면 복원된 데이터를 새 인스턴스로 전송할 수 있습니다.
RDB 스냅샷의 성능 영향
워크로드 패턴에 따라 RDB 스냅샷은 인스턴스 성능에 영향을 줄 수 있고 애플리케이션의 지연 시간을 늘릴 수 있습니다.
애플리케이션이 용인할 수 있는 잠재적인 데이터 손실 정도에 따라 인스턴스 트래픽이 낮은 기간 중에 실행되도록 예약함으로써 RDB 스냅샷으로 인한 성능 영향을 최소화할 수 있습니다.
시작 시간 및 간격을 사용해서 필요한 시간에 스냅샷을 예약합니다. 예를 들어 오전 1시부터 오전 4시까지 부하가 낮으면 시작 시간을 오전 3시로 설정하고 간격을 24시간으로 설정할 수 있습니다.
시스템 부하가 일정하고 스냅샷이 자주 필요한 경우에는 성능 영향을 신중하게 평가하고 워크로드에 RDB 스냅샷을 사용할 때의 장점과 단점을 파악해야 합니다.
스냅샷 모니터링
스냅샷을 모니터링하고 실패한 스냅샷에 대해 알림을 설정하는 것이 중요합니다. 스냅샷이 실패하면 인스턴스가 과부하되어 스냅샷에서 복구하는 것이 계속 어려워질 수 있습니다.
스냅샷 모니터링에 사용 가능한 측정항목 목록은 RDB 스냅샷 측정항목을 참조하세요. 실패한 스냅샷에 대한 알림을 받으려면 RDB 스냅샷 last_status
측정항목에 대해 알림을 설정합니다. 또한 Google Cloud 콘솔을 사용하여 실패를 확인할 수도 있습니다.
성능 영향 모니터링
Cloud Monitoring을 통해 CPU 사용량, 메모리 사용량 등의 측정항목을 검토하여 스냅샷이 Memorystore 인스턴스에 미치는 성능 영향을 모니터링할 수 있습니다. 성능 저하가 확인된 경우 RDB 스냅샷 in_progress
측정항목을 사용해서 성능 문제가 감지되었을 때 스냅샷이 진행 중이었는지 확인할 수 있습니다.
다음 단계
- 백업 가져오기 및 내보내기 자세히 알아보기
- Redis 인스턴스에서 데이터 내보내기 가이드 따르기