1

Cloud Storage에 저장된 특정 데이터 저장소 * .backup_info 파일을 수집하고 종류별로 최신 "backup_info 파일로 복사하는 가장 좋은 전략을 찾고 있습니다. 따라서 각 종류의 고정 위치가 있습니다. , 가장 최근의 backup_info 파일이있는 곳.최신 데이터 저장소 백업을 자동으로 유지

gs://MY-PROJECT.appspot.com/latest/Comment.backup_info 

기본적으로 Cloud Datastore에 데이터가있는 Google App Engine 앱 (Python 표준)이 있습니다. docs Scheduled Backups에 설명 된대로 자동 및 정기적으로 백업을 수행하기 위해 cron-job을 실행할 수 있으며 수동으로 트리거되는 백업 작업을 실행하는 약간의 Python 코드를 쓸 수도 있습니다 (described in this SO answer). 주어진 종류의 가장 최근 backup_info 파일을 찾고 원하는 위치로 복사/이름 바꾸기 작업을 수행 할 작은 Python cron 작업을 작성할 계획입니다.

어떤 방법 으로든 원래의 백업 위치는 하루 동안 많은 파일과 폴더로 가득 차게됩니다. 특히 특정 종류의 백업이 두 개 이상있는 경우 특히 그렇습니다. gs://MY-PROJECT.appspot.com/의 예를 들어 내가 발견 할 것이다 :

VeryLoooooongRandomLookingString.backup_info 
OtherStringForSecondBackup.backup_info 
OtherStringForThirdBackup.backup_info 

문자열은 모든 백업 실행을위한 고유 식별자가 될 것으로 보인다. 여기에는 백업의 각 종류에 대한 * .backup_info 파일 목록이 포함되어 있다고 가정합니다.

VeryLoooooongRandomLookingString.Comment.backup_info 
OtherStringForSecondBackup.Comment.backup_info 
OtherStringForThirdBackup.Comment.backup_info 

백업의 모든 종류에 대해. "논평". 그것은이 종류 및이 백업에 대한 실제 백업 데이터의 목록을 포함하고있는 것 같습니다.

datastore_backup_CUSTOM_PREFIX_2017_09_20_Comment/ 
datastore_backup_CUSTOM_PREFIX_2017_09_20_1_Comment/ 
datastore_backup_CUSTOM_PREFIX_2017_09_20_2_Comment/ 

각 백업 및 종류에 대한 데이터 폴더. 여기에 친절한 "Comment"를 위해 9/20에 세 번 백업되었습니다.

  1. /_ah/datastore_admin/backup.create를 호출 할 때 명시 적으로 쿼리 매개 변수 (또는 HTTP의 헤더)와 같은 사용자 정의 UID를 지정할 수 있습니다 :

    내 질문은 데이터 저장소 및/또는 저장 관련이 있습니다?

  2. 그렇지 않으면 백업이 완료된 후 UID가있는 메시지를 후크 등에 보낼 수 있습니까?
  3. (1)과 (2)가 불가능한 경우 : 스토리지에서 어떤 종류의 최신 * .backup_info 파일을 찾으려면 어떤 방법이 가장 좋을까요? listbucket()이 필터링을 허용하지 않는 것 같아요. 특정 이름 패턴을 찾는 수백 또는 수천 개의 파일을 반복하는 것이 효율적일 것이라고 생각하지 않습니다.

답변

0

두 가지 해결책을 찾았습니다. 둘 다 현재 베타 버전의 기능을 기반으로합니다. 짧은

답변 :

  1. 새로운 Datastore Export & Import service 허용 백업을 정의하고 예측 가능한 경로

  2. long-running operations에 대한 API는 경로의 출력 백업 작업의 URL (예를 얻을 수 있습니다 타임 스탬프 포함).

  3. Cloud Storage 이벤트에 의해 트리거되는 클라우드 기능은 매번 버킷에있는 수천 개의 파일을 페이징하는 대신 특정 [KIND].backup_info 파일을 버킷에 추가하자마자 처리 할 수 ​​있습니다.

데이터 저장소 수출 & 가져 오기

이 새로운 서비스는 수출 작업 (manually 또는 scheduled)를 실행하는 API가 있습니다. 작업은 패스를 지정할 수 있도록하고 예측 가능한 모든 경로를 생성하므로 최신 백업이 언제든지 필요한 경우 기존 백업 파일은, 예를 들어 덮어 쓸 수있다 :

크론 - 작업에 대한
gs://[YOUR_BUCKET]/[PATH]/[NAMESPACE]/[KIND]/[NAMESPACE]_[KIND].export_metadata 

, 앱 엔진 핸들러 URL을 /cloud-datastore-export (예 : /_ah/datastore_admin/backup.create 대신)입니다. 또한 내보내기의 형식이 이전 내보내기와 다릅니다. 이전 [KIND].backup_info 파일과 마찬가지로 BigQuery로 가져올 수도 있습니다.

클라우드 기능

사실 하나 인 클라우드 기능 백업 버킷의 변화에 ​​의해 (file.resourceState === 'not_exists') 해당 파일이 존재하는 경우 트리거 (자바 스크립트/Node.js를), 새로운 (file.metageneration === '1')를 배포하고 [KIND].backup_info 개의 파일 중에서 다른 버킷 ("latest_backups"정도)으로 복사됩니다. 복사본의 사용자 정의 메타 데이터를 사용하여 나중에 함수를 실행하여 timeCreated을 비교할 수 있습니다 (따라서 최근 백업 파일을 이전 파일로 실수로 덮어 쓰지 않습니다). 실제 백업 페이로드를 복사하거나 이동하면 파일 [KINDNAME].backup_info 내의 참조가 손상됩니다.