為減輕各類型災難導致的資料遺失對企業產生的負面影響,資料備份可說是災難復原的關鍵手段之一。因此,許多企業都會將重要數據存放於資料庫。將備份資料存放於 Cloud Storage,企業可擬定多樣的災難恢復計劃 。 舉例來說,您可以匯出備份到其他地區的 Cloud Storage Bucket 做異地備份,方便匯入到其他 Cloud SQL 實例,或其他 MySQL 資料庫。
本系列兩篇文章將為您示範如何使用 Cloud Scheduler 和 Cloud Functions 將 Cloud SQL 的 MySQL 資料庫 ,定期匯出至 Cloud Storage,一起動手操作看看吧!
操作概覽:流程圖
Cloud Scheduler Job 會依排程時間進行資料庫匯出的任務,Pub/Sub 會針對每個資料庫匯出的事件發送和接收訊息(Topic: 包含有關 Cloud SQL 實例名稱,資料庫,存放備份資料的 Cloud Storage 位置)。此事件將會觸發 Cloud Function,並通過 SQL Admin API 於 Cloud SQL 上啟動資料庫匯出的任務,匯出的資料將會被保存到 Cloud Storage。
前置作業
Step 1
註冊 Google Cloud 帳號,並建立一個 Project
Step 2
確保您的 Google Cloud 項目已啟用結算功能。
Step 3
於登入頁面的右上角的 activate Cloud Shell (紅框處),啟用您的 Cloud Shell
Step 4
於 Console 介面上方之搜尋欄搜尋 APIs,以啟用 Cloud SQL Admin, Cloud Functions, Cloud Scheduler, Cloud Build 和 App Engine Admin API
Step 5
點擊「Enable」即可啟用。接下來的教學步驟皆會於 Cloud Shell 執行指令。
設置環境
Step 1
執行下方指令下載 Google 官方所提供之範例資料儲存庫
git clone https://github.com/GoogleCloudPlatform/training-data-analyst.git
Step 2
設置您的環境變數
export PROJECT_ID=`gcloud config get-value project`
export DEMO=”sql-export-tutorial”
export BUCKET_NAME=${USER}-mysql-$(date +%s)
export SQL_INSTANCE=”${DEMO}-sql”
export GCF_NAME=”${DEMO}-gcf”
export PUBSUB_TOPIC=”${DEMO}-topic”
export SCHEDULER_JOB=”${DEMO}-job”
export SQL_ROLE=”sqlExporter”
export STORAGE_ROLE=”simpleStorageRole”
export REGION=”us-west2″
Step 3
建立本文範例所需之權限
基於 最小權限原則 ,權限設定只開放會使用的服務
- Storage Role
執行下方指令建立 Storage 所需之權限
gcloud iam roles create ${STORAGE_ROLE} –project ${PROJECT_ID} \
–title “Simple Storage Role” \
–description “Grant permissions to view and create objects in Cloud Storage” \
–permissions “storage.objects.create,storage.objects.get”
建立成功後產生的結果如下:
Created role [simpleStorageRole].
description: Grant permissions to view and create objects in Cloud Storage
etag: BwW1pvR0-Kk=
includedPermissions:
– storage.objects.create
– storage.objects.get
name: projects/coupon-platform-282909/roles/simpleStorageRole
stage: ALPHA
title: Simple Storage Role
- SQL Exporter Role
執行下方指令建立 SQL Exporter 所需之權限
gcloud iam roles create ${SQL_ROLE} –project ${PROJECT_ID} \
–title “SQL Exporter Role” \
–description “Grant permissions to export data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file” \
–permissions “cloudsql.instances.export”gcloud iam roles create ${SQL_ROLE} –project ${PROJECT_ID} \
–title “SQL Exporter Role” \
–description “Grant permissions to export data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file” \
–permissions “cloudsql.instances.export”
建立成功後產生的結果如下:
Created role [sqlExporter].
description: Grant permissions to export data from a Cloud SQL instance to a Cloud
Storage bucket as a SQL dump or CSV file
etag: BwW1pvywIh0=
includedPermissions:
– cloudsql.instances.export
name: projects/coupon-platform-282909/roles/sqlExporter
stage: ALPHA
title: SQL Exporter Role
現在,您已經做好備份 Google Cloud SQL 資料至 Google Cloud Storage 的前置作業與環境設置了。下一篇文章將接續著操作步驟,帶您了解「如何建立 Cloud Storage bucket 和 Cloud SQL 實例」、「如何建立 Pub/Sub topic, a Cloud Function」以及「如何建立 Cloud Scheduler Job 進行排程作業」。讓我們一起看下去吧!
想了解更多 Google Cloud 的隱藏版實用功能,請持續鎖定宏庭架構師專欄,讓您新知訊息接不完喔!