為減輕各類型災難導致的資料遺失對企業產生的負面影響,資料備份可說是災難復原的關鍵手段之一。因此,許多企業都會將重要數據存放於資料庫。將備份資料存放於 Cloud Storage,企業可擬定多樣的災難恢復計劃 。 舉例來說,您可以匯出備份到其他地區的 Cloud Storage Bucket 做異地備份,方便匯入到其他 Cloud SQL 實例,或其他 MySQL 資料庫。

本系列兩篇文章將為您示範如何使用 Cloud Scheduler 和 Cloud Functions 將 Cloud SQL 的 MySQL 資料庫 ,定期匯出至 Cloud Storage,一起動手操作看看吧!

 

操作概覽:流程圖

定期備份 Cloud SQL 資料至 Cloud Storage-1

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

定期備份 Cloud SQL 資料至 Cloud Storage-2

Step 4

於 Console 介面上方之搜尋欄搜尋 APIs,以啟用 Cloud SQL Admin, Cloud Functions, Cloud Scheduler, Cloud Build App Engine Admin API

定期備份 Cloud SQL 資料至 Cloud Storage-3

 

定期備份 Cloud SQL 資料至 Cloud Storage-4

Step 5

點擊「Enable」即可啟用。接下來的教學步驟皆會於 Cloud Shell 執行指令。

定期備份 Cloud SQL 資料至 Cloud Storage-5

設置環境

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 的隱藏版實用功能,請持續鎖定宏庭架構師專欄,讓您新知訊息接不完喔!