Spanner Omni 備份

Spanner Omni 可讓您視需要或使用備份排程,建立資料庫的完整備份。備份會儲存資料庫的完整資料。如果操作人員或應用程式錯誤導致邏輯資料損毀,您可以還原備份。

Spanner Omni 備份總覽

備份具有高可用性,自建立時間起最多可保留一年。每個備份都有相關聯的 createTime 和 versionTime。createTime 是 Spanner Omni 開始建立備份的時間戳記。versionTime 是備份擷取資料庫內容時的時間戳記。備份包含 versionTime 的資料庫一致檢視畫面。

如果是隨選備份,createTime 和 versionTime 預設相同。如有需要,您可以在建立隨選備份時指定較舊的 versionTime,前提是該版本仍在資料庫的版本保留期限內。

如果是排定的備份,versionTime 是您在建立備份排程時選擇的時間。Spanner Omni 會在 versionTime 後四小時內開始建立備份,因此 createTime 會落在這四小時內。這與隨需備份不同,Spanner Omni 收到要求後就會開始建立備份。

舉例來說,假設您建立備份排程,頻率為 0 7 * * * UTC (世界標準時間每天上午 7:00)。這表示每個備份的 versionTime 都是世界標準時間上午 7:00,而 createTime 則是世界標準時間上午 7:00 至上午 11:00 之間四小時內的時間戳記。

Spanner Omni 備份只能還原至 Spanner Omni 部署項目。您無法將代管 Spanner 備份還原至 Spanner Omni,也無法將 Spanner Omni 備份還原至代管 Spanner。如要在 Spanner 和 Spanner Omni 之間移轉資料,請使用變更串流,或匯出及匯入 Avro 檔案。詳情請參閱「將資料從 Spanner 複製到 Spanner Omni」和「匯入及匯出資料」。

主要功能與特色

Spanner Omni 備份功能可確保資料一致性、提供彈性的外部複製作業,以及自動到期機制。

  • 資料一致性:Spanner Omni 資料庫的備份在備份versionTime時,具有交易和外部一致性。

  • 複製:備份檔案會儲存在 Spanner Omni 部署項目以外的外部儲存系統。

  • 自動到期:所有備份都有使用者指定的到期日,決定何時刪除。Spanner Omni 會以非同步方式刪除過期備份,因此備份過期到實際刪除之間可能會有時間差。

外部儲存空間

外部儲存空間是指 Spanner Omni 部署項目以外的遠端儲存空間。您可以將 Amazon Simple Storage Service (Amazon S3)、Cloud Storage 或任何與 Amazon S3 相容的儲存空間,設為外部儲存空間。Spanner Omni 會將備份檔案儲存在這個外部儲存空間。

外部儲存空間管理

建立、刪除及列出備份的儲存位置,管理外部儲存空間。

建立外部儲存空間

如要建立 Amazon S3 外部儲存空間,請執行下列指令:

spanner external-storages create EXTERNAL_STORAGE_ID \
  --s3-bucket-name=BUCKET_NAME \
  --s3-region=AWS_REGION \
  --s3-assume-role-arn=ASSUME_ROLE_ARN

建立 Cloud Storage 外部儲存空間

設定 Cloud Storage 外部儲存空間前,請確認您具備下列項目:

如要將 Cloud Storage bucket 註冊為外部儲存空間,請執行下列指令:

spanner external-storages create EXTERNAL_STORAGE_ID \
  --gcs-bucket-name=BUCKET_NAME

更改下列內容:

  • EXTERNAL_STORAGE_ID:外部儲存空間設定的專屬 ID,例如 gcp-gcs-backup-target。
  • BUCKET_NAME:目標 Cloud Storage bucket 的名稱。

建立與 Amazon S3 相容的外部儲存空間

如要建立與 Amazon S3 相容的外部儲存空間,請執行下列指令:

spanner external-storages create EXTERNAL_STORAGE_ID \
    --s3-compatible-bucket-name=BUCKET_NAME \
    --s3-compatible-endpoint=ENDPOINT \
    --s3-compatible-credential-file-path=FILE

刪除外部儲存空間

如要刪除外部儲存空間,請先確認沒有現有或進行中的備份。接著,執行下列指令:

spanner external-storages delete EXTERNAL_STORAGE_ID

說明外部儲存空間

如要取得外部儲存空間的相關資訊,請執行下列指令:

spanner external-storages describe EXTERNAL_STORAGE_ID

列出外部儲存空間

如要取得外部儲存空間清單,請執行下列指令:

spanner external-storages list

備份描述元

備份描述元代表儲存在外部儲存空間中,已完成備份的中繼資料和備份檔案路徑。

spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID

備份資訊

建立備份時,備份中繼資料會儲存在 Spanner Omni,備份檔案則會儲存在外部儲存空間。

備份包含資料庫在備份versionTime時的下列資訊:

  • 完整備份包含所有資料。

  • 結構定義資訊,包括資料表名稱、欄位、資料類型、次要索引、變更串流,以及這些實體之間的關係。

  • 使用 ALTER DATABASE SET OPTIONS 指令設定的所有資料庫選項。

Spanner Omni 備份不含下列資訊:

  • versionTime後對資料或結構定義所做的任何修改。

  • 強制執行法規遵循機制

  • 變更串流資料記錄。雖然變更串流結構定義會儲存,但變更串流資料應在描述變更的同時,進行串流和使用。

為確保備份的外部一致性,Spanner Omni 會將資料庫內容固定在 versionTime。這可防止垃圾收集系統在備份作業期間移除相關資料值。

備份管理

您必須具備下列權限,才能建立備份。請要求管理員授予您下列部署項目的 IAM 角色:

動作 IAM 角色
建立、查看、更新及刪除備份 roles/spanner.backupAdmin
建立及查看備份 roles/spanner.backupWriter

建立備份

建立隨選備份。

spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async

刪除備份

刪除備份中繼資料和檔案。

spanner backups delete BACKUP_NAME

說明備份

擷取備份相關資訊。

spanner backups describe BACKUP_NAME

列出備份

列出部署作業中現有的 Spanner Omni 備份。

spanner backups list

更新備份到期日

更新備份的到期日。

spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE

匯入備份

如要在其他 Spanner Omni 部署項目中復原資料庫 (例如在 Spanner Omni 部署項目之間復原,或刪除原始部署項目),只要備份檔案仍保留在外部儲存空間,即可匯入備份:

  1. 在新的部署作業中建立外部儲存空間,並使用與原始部署作業相同的 Amazon S3 或 Cloud Storage bucket,例如:

    spanner external-storages create EXTERNAL_STORAGE_ID \
      --gcs-bucket-name=BUCKET_NAME
    
  2. 列出外部儲存空間中的備份描述元:

    spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
    
  3. 將備份中繼資料匯入新的部署作業:

    spanner backups import BACKUP_NAME \
      --external-storage=EXTERNAL_STORAGE_ID \
      --backup-descriptor=BACKUP_DESCRIPTOR \
      --retention-period=RETENTION_PERIOD
    

    更改下列內容:

    • BACKUP_NAME:匯入備份的名稱。
    • EXTERNAL_STORAGE_ID:外部儲存空間設定的 ID。
    • BACKUP_DESCRIPTOR:上一個步驟傳回的描述元 ID。
    • RETENTION_PERIOD:備份保留時間長度,例如 24h 或 30d。

匯入備份中繼資料後,即可將備份還原至部署作業中的新資料庫。詳情請參閱「還原 Spanner Omni 備份」。

備份排程

Spanner Omni 可讓您排定資料庫的完整備份作業。您可以在排程中指定 Spanner Omni 建立備份的頻率。

完整備份排程每 12 小時以上會建立一次備份,備份作業會在排定時間的 30 分鐘內開始。每個資料庫最多可有四個備份排程。

備份排程管理

如要建立及管理備份排程,您必須具備下列權限。請要求管理員授予您下列部署項目的 IAM 角色:

  • 建立、查看、更新及刪除備份排程:roles/spanner.backupAdmin

  • 建立及查看備份排程:roles/spanner.backupWriter

建立備份排程

為 Spanner Omni 資料庫建立新的備份排程。

spanner backup-schedules create SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

取得備份排程

取得特定備份排程的資訊。

spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID

列出備份排程

列出指定資料庫的所有備份排程。

spanner backup-schedules list --database=DATABASE_ID

更新備份排程

更新現有備份排程的屬性。

spanner backup-schedules update SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

刪除備份排程

從資料庫刪除備份排程。

spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID

設定 IAM 存取控管政策

設定備份排程的 IAM 存取控管政策。

spanner backup-schedules set-iam-policy SCHEDULE_ID \
  --database=DATABASE_ID \
  policy.json

取得 IAM 存取控管政策

取得備份排程的 IAM 存取控管政策。

spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID

比較備份儲存空間和資料庫儲存空間

備份的儲存空間大小可能小於或大於建立時來源資料庫的儲存空間大小。

備份的儲存空間可能小於資料庫的儲存空間,因為備份只包含一個資料版本,而即時資料庫可能因持續作業而包含多個版本。資料格式和壓縮方式的差異,也可能導致備份大小較小。

相反地,備份的儲存空間可能大於資料庫的儲存空間,具體取決於資料庫的狀態和建立備份的時間。

基於類似原因,從備份還原資料庫時,備份的儲存空間可能會大於資料庫的儲存空間。如果備份建立後,有大量資料遭到刪除並壓縮,就可能發生這種情況。因此,備份大小取決於備份建立時間,以及後續對資料庫執行的作業。

沒有任何公式可以預測備份大小與實際資料庫大小的關係。如果資料庫的寫入率很高 (熱門資料庫),備份大小可能會小於實際資料庫。但在某些情況下,備份大小可能會較大。

後續步驟