데이터 가져오기 및 내보내기 정보

이 페이지에서는 Memorystore for Redis에서 가져오기 및 내보내기가 작동하는 방식을 설명합니다.

가져오기 및 내보내기 기능은 Redis의 기본 RDB 스냅샷 기능을 사용하여 Memorystore for Redis 인스턴스에서 데이터를 가져오거나 내보냅니다. 기본 RDB 형식을 사용하면 종속을 방지하여 Google Cloud 내에서 또는 Google Cloud 외부로 데이터를 쉽게 이동할 수 있습니다. 가져오기 및 내보내기는 Cloud Storage 버킷을 사용하여 RDB 파일을 저장합니다.

내보내기 중에 Memorystore for Redis 인스턴스의 동작은 오픈소스 Redis의 BGSAVE 명령어와 매우 유사합니다. Memorystore for Redis는 RDB 파일을 인스턴스의 데이터 디렉터리로 복사하여 가져옵니다.

RDB 파일을 가져오고 내보내는 방법은 Redis 인스턴스로 데이터 가져오기Redis 인스턴스에서 데이터 내보내기를 참조하세요.

Cloud Scheduler를 사용하여 RDB 내보내기를 예약하는 방법은 Cloud Scheduler를 사용하여 Memorystore for Redis 데이터베이스 내보내기를 참조하세요.

가져오기 기능 동작

  • 최적의 성능을 얻으려면 Redis 인스턴스와 동일한 리전에 있는 Cloud Storage 버킷에서 가져와야 합니다.

  • 가져오기 작업 중에 Redis 인스턴스를 사용할 수 없습니다. 가져오기 작업이 완료되면 인스턴스를 사용할 수 있습니다.

  • 가져오기에 성공하면 인스턴스의 기존 데이터를 RDB 파일의 데이터로 덮어씁니다.

  • 어떤 이유로든 가져오기에 실패하면 인스턴스가 온라인 상태가 되지만 데이터가 완전히 삭제될 수 있습니다. 동일한 RDB 파일을 사용하여 가져오기를 다시 시도하거나 다른 RDB 파일을 사용하여 데이터를 복원할 수 있습니다.

  • Memorystore for Redis 인스턴스는 동일한 Redis 버전 및 이전 Redis 버전에서 RDB 파일을 가져올 수 있지만 최신 버전에서는 RDB 파일을 가져올 수 없습니다.

  • 가져오기 작업을 취소할 수 있지만 취소하면 인스턴스의 캐시가 완전히 삭제되어 복구됩니다. 이는 기본 등급 인스턴스와 표준 등급 인스턴스 둘 다 해당합니다.

  • 인스턴스는 이전 Redis 버전에서만 백업을 가져올 수 있습니다. Redis 5.0을 실행하는 인스턴스는 Redis 4.0에서 내보낸 RDB를 가져올 수 있지만 Redis 4.0을 실행하는 인스턴스는 Redis 5.0에서 RDB를 가져올 수 없습니다.

내보내기 기능 동작

  • 내보내기 작업 중에 Redis 인스턴스에서 데이터를 읽고 쓸 수 있습니다. 하지만 인스턴스 확장, 업데이트, 구성과 같은 관리 작업은 수행할 수 없습니다.

  • 내보내기 중에 인스턴스의 지연 시간이 늘어날 수 있습니다.

  • 최적의 성능을 얻으려면 RDB 백업을 Redis 인스턴스와 동일한 리전에 있는 Cloud Storage 버킷으로 내보내야 합니다.

  • 내보내기 중에 RDB 파일은 선택한 Cloud Storage 버킷에 저장됩니다.

  • 언제든지 내보내기 작업을 취소할 수 있습니다. 취소해도 인스턴스의 데이터 또는 가용성에 영향을 주지 않습니다.

    • 내보내기를 취소하면 Cloud Storage 버킷에 기록되는 RDB 파일이 삭제되고 BGSAVE 프로세스에 사용되는 메모리가 확보됩니다.
  • Google Cloud 콘솔을 사용할 때 내보내기에서 추가 권한이 없는 같은 이름의 기존 파일을 덮어쓸 수 있습니다. gcloud를 사용하여 기존 파일 위로 내보내려면 사용자 계정에 storage.objects.delete 권한이 있어야 합니다.

높은 쓰기 부하에서 내보내기

쓰기 부하가 높은 기간 동안 내보내기를 실행하면 인스턴스 메모리 사용량이 최대 2배 증가하여 내보내기 작업이 실패할 수 있습니다. 낮은 쓰기 기간 동안 내보내기 작업을 수행해야 합니다. 인스턴스에 저장된 Redis 데이터 양을 모니터링하려면 대시보드를 만들어 메모리 사용량을 모니터링하고 Cloud Monitoring과 함께 인스턴스 메모리 사용량 측정항목을 모니터링하면 됩니다.

Memorystore for Redis 내보내기는 Redis의 BGSAVE 기능을 사용하여 인스턴스의 데이터 스냅샷을 만듭니다. BGSAVE를 실행할 때 Redis는 스냅샷을 만들 새 하위 프로세스를 포크합니다. Redis는 이 프로세스 중에 copy-on-write를 사용합니다.

즉, 초기 포크는 최소 추가 메모리를 할당하지만 Redis 서버 쓰기 트래픽에 의해 변경된 모든 페이지는 중복됩니다. 따라서 대량의 쓰기가 발생하는 기간 동안 최악의 경우 Redis의 메모리 공간이 두 배가 되어 내보내기 작업이 실패합니다.

BGSAVE 작업 중 내보내기

BGSAVE 작업이 실행 중일 때는 내보낼 수 없습니다. 표준 등급의 Memorystore for Redis 인스턴스는 경우에 따라 기본 및 복제본을 동기화된 상태로 유지하기 위해 전체 재동기화 작업 또는 '전체 동기화'를 실행합니다. 전체 재동기화는 BGSAVE 명령어를 사용하며, 이는 Memorystorestore가 내보내기를 수행하지 못하게 합니다.

BGSAVE 작업이 진행 중인지 확인하려면 측정항목 탐색기로 redis.googleapis.com/persistence/rdb/bgsave_in_progress API 엔드포인트를 확인하세요.

측정항목 탐색기를 사용하여 모니터링 리소스의 측정항목을 확인하려면 다음을 수행하세요.

  1. Google Cloud 콘솔의 탐색 패널에서 Monitoring을 선택한 후 측정항목 탐색기를 선택합니다.

    측정항목 탐색기로 이동

  2. 측정항목 요소에서 측정항목 선택 메뉴를 확장한 후 리소스 유형 및 측정항목 유형을 선택합니다. 예를 들어 가상 머신의 CPU 사용률을 차트로 표시하려면 다음 안내를 따르세요.
    1. (선택사항) 메뉴의 옵션을 줄이려면 필터 표시줄에서 측정항목 이름의 일부를 입력합니다. 이 예시에서는 utilization을 입력합니다.
    2. 활성 리소스 메뉴에서 VM 인스턴스를 선택합니다.
    3. 활성 측정항목 카테고리 메뉴에서 인스턴스를 선택합니다.
    4. 활성 측정항목 메뉴에서 CPU 사용량을 선택한 후 적용을 클릭합니다.
  3. 표시되는 시계열을 필터링하려면 필터 요소를 사용합니다.

  4. 시계열을 조합하려면 집계 요소의 메뉴를 사용합니다. 예를 들어 VM의 CPU 사용률을 영역에 따라 표시하려면 첫 번째 메뉴를 평균으로, 두 번째 메뉴를 영역으로 설정합니다.

    집계 요소의 첫 번째 메뉴가 집계되지 않음으로 설정되면 모든 시계열이 표시됩니다. 집계 요소 기본 설정은 선택한 측정항목 유형에 따라 결정됩니다.

또는 자체 명령줄 API 도구를 사용할 수 있습니다.

가져오기 및 내보내기에 필요한 권한

사용자는 RDB 파일을 가져오거나 내보낼 수 있도록 충분한 IAM 권한을 구성해야 합니다. 가장 간단한 권한 설정은 Cloud Memorystore Redis 관리자스토리지 관리자 IAM 역할을 사용자 계정에 적용하는 것입니다. 하지만 이 설정은 액세스해서는 안 되는 리소스를 생성, 수정 또는 삭제할 수 있는 권한을 주기 때문에 일부 사용자 계정에 적합하지 않을 수 있습니다. 최소한의 권한 설정에 대한 안내는 가져오기/내보내기에 제한된 권한 부여를 참조하세요.

가져오기 및 내보내기 기간

가져오기 또는 내보내기 기간은 인스턴스 크기와 인스턴스에 설정된 데이터 세트 크기에 따라 다릅니다. 크기에 따라 가져오기 및 내보내기가 몇 분에서 몇 시간까지 걸릴 수 있습니다.

예를 들어 사용된 메모리가 8GB인 10GB 인스턴스를 가져오거나 내보내는 경우 작업이 5분 정도 걸릴 수 있습니다. 사용된 메모리가 100GB인 120GB 인스턴스를 가져오거나 내보내는 경우 작업이 1시간 걸릴 수 있습니다.

가져오기 또는 내보내기 중지

가져오기 또는 내보내기를 중지하려면 다음 페이지를 참조하세요.

작업 진행 상황 모니터링

가져오기 및 내보내기 중에 예상 완료 시간을 확인할 수 없습니다. 인스턴스 세부정보 페이지를 확인하여 작업이 진행 중인지 확인할 수 있습니다. 인스턴스 세부정보 페이지를 보려면 Memorystore for Redis 인스턴스 목록 페이지에서 인스턴스 ID를 클릭합니다.

다음 명령어를 실행하여 가져오기 작업의 진행 상황을 모니터링할 수도 있습니다.

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_ID]는 Memorystore for Redis 인스턴스의 ID입니다.
  • [REGION]은 인스턴스가 있는 리전입니다.

이 명령어는 state: IMPORTING 또는 state: READY를 설명 필드 중 하나로 출력합니다.

지원되지 않는 Cloud Storage 버킷

요청자 지불 Cloud Storage 버킷은 Memorystore 가져오기 및 내보내기에 지원되지 않습니다.

Cloud Storage 버킷 보안

Cloud Storage 버킷에 포함된 Redis RDB 백업에 대한 무단 액세스를 방지하기 위한 적절한 제한사항이 있는지 확인해야 합니다. Cloud Storage 버킷을 보호하는 방법은 Cloud Storage 액세스 제어 옵션을 참조하세요.

내보내기를 완료하기에 충분한 메모리 확인

내보내기에서 메모리 부족을 방지하려면 내보내기 프로세스 중에 인스턴스에 사용 가능한 메모리가 50% 있어야 합니다. 쓰기 부하에 따라 항상 필요한 것은 아니지만, 50%의 여유 메모리가 있으면 내보내기 프로세스 중에 여러 페이지를 터치하는 경우 copy-on-write 오버헤드를 수용하기에 충분한 공간이 확보됩니다.

인스턴스의 현재 메모리 사용량을 이해하려면 메모리 사용량이 맞춤설정 가능한 기준점에 도달하면 알림을 받도록 알림을 설정합니다. 또한 Cloud Monitoring을 사용하여 메모리 모니터링 대시보드를 설정해야 합니다. 이러한 조치를 통해 인스턴스의 메모리 사용량 패턴을 파악할 수 있습니다. 메모리 사용량 패턴을 이해하면 인스턴스를 정기적으로 내보낼 때 인스턴스 크기를 올바르게 조정할 수 있습니다.

읽기 복제본이 있는 인스턴스로 내보내기 및 가져오기

읽기 복제본이 사용 설정된 인스턴스를 포함한 모든 Redis 인스턴스의 경우 기본 노드에서 데이터를 내보냅니다.

읽기 복제본이 사용 설정된 인스턴스의 경우 내보내기를 통해 기본 노드의 CPU 로드 및 메모리 사용 공간이 늘어날 수 있습니다.

읽기 복제본이 사용 설정된 인스턴스로 데이터를 가져오면 가져오기 작업 중에 기본 인스턴스가 다시 시작되고 새 데이터가 데이터베이스에 완전히 로드될 때까지 인스턴스를 사용할 수 없습니다.

다음 단계