本頁面將說明時間點復原 (PITR) 和自動備份。如要為現有執行個體設定 PITR,請按照下列步驟操作:
事前準備
開始之前,請注意下列預設行為:
- 在 Google Cloud 控制台中建立 Cloud SQL Enterprise 版執行個體時,系統預設會啟用 PITR。如果您使用 gcloud CLI、Terraform 或 Cloud SQL Admin API,且想要啟用這項功能,則必須手動啟用。
- 建立 Cloud SQL Enterprise Plus 版執行個體時,系統預設會啟用 PITR,無論您使用哪種方法都一樣。如要停用這項功能,請手動操作。
- 在 Google Cloud 控制台中建立執行個體時,系統預設會啟用自動備份。如果您使用 gcloud CLI、Terraform 或 Cloud SQL Admin API,且想要啟用這項功能,則必須手動啟用。
啟用 PITR
以下程序會在現有主要執行個體上啟用 PITR。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 開啟要啟用 PITR 的執行個體更多動作選單
,然後按一下「編輯」。 - 展開「自訂執行個體」下方的「資料保護」專區。
- 勾選「啟用時間點復原」核取方塊。
- 在「記錄天數」欄位中,輸入要保留記錄的天數。如果是 Cloud SQL Enterprise Plus 版本,天數範圍為 1 到 35 天;如果是 Cloud SQL Enterprise 版本,天數範圍為 1 到 7 天。
- 按一下 [儲存]。
gcloud
- 顯示執行個體總覽:
gcloud sql instances describe INSTANCE_NAME
- 如果「
enabled: false」部分顯示在「backupConfiguration」部分,請啟用定期備份:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
請使用 UTC±00 時區的 24 小時制,指定
backup-start-time參數。 - 啟用 PITR:
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
如果您要在主要執行個體上啟用 PITR,也可以新增下列參數,設定要保留交易記錄的天數:
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS - 確認變更:
gcloud sql instances describe INSTANCE_NAME
在「
backupConfiguration」部分中,您會看到pointInTimeRecoveryEnabled: true,表示變更已成功。
Terraform
如要啟用 PITR,請使用 Terraform 資源。
為 Cloud SQL Enterprise Plus 版本啟用 PITR
使用下列 Terraform 程式碼範例,建立已啟用 PITR 的 Cloud SQL Enterprise Plus 版執行個體:為 Cloud SQL Enterprise 版啟用 PITR
使用下列 Terraform 程式碼範例,建立已啟用 PITR 的 Cloud SQL Enterprise 版執行個體:套用變更
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
每項專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。
將範例程式碼複製到新建立的
main.tf。視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這個方法。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade選項:terraform init -upgrade
套用變更
-
檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
刪除變更
如要刪除變更,請按照下列步驟操作:
- 如要停用防刪除功能,請在 Terraform 設定檔中將
deletion_protection引數設為false。deletion_protection = "false"
- 執行下列指令,並在提示中輸入
yes,套用更新的 Terraform 設定:terraform apply
-
執行下列指令,並在提示中輸入
yes,即可移除先前透過 Terraform 設定套用的資源:terraform destroy
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您要設定高可用性的主要或唯讀副本執行個體名稱
- START_TIME:時間 (以小時和分鐘為單位)
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您要設定高可用性的主要或唯讀副本執行個體名稱
- START_TIME:時間 (以小時和分鐘為單位)
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
停用 PITR
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 開啟要停用執行個體的更多動作選單
,然後選取「編輯」。 - 展開「自訂執行個體」下方的「資料保護」專區。
- 清除「啟用時間點復原」。
- 按一下 [儲存]。
gcloud
- 停用時間點復原功能:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- 確認您的變更:
gcloud sql instances describe INSTANCE_NAME
在「
backupConfiguration」部分中,您會看到pointInTimeRecoveryEnabled: false,表示變更已成功。
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- instance-id:執行個體 ID
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- instance-id:執行個體 ID
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
設定交易記錄檔保留期限
如要設定交易記錄保留天數,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 找到要設定交易記錄的執行個體,開啟更多動作選單
,然後選取「編輯」。 - 展開「自訂執行個體」下方的「資料保護」專區。
- 在「啟用時間點復原」專區中,展開「進階選項」。
- 輸入記錄保留天數。如果是 Cloud SQL Enterprise Plus 版本,天數範圍為 1 到 35 天;如果是 Cloud SQL Enterprise 版本,天數範圍為 1 到 7 天。
- 按一下 [儲存]。
gcloud
編輯執行個體,設定交易記錄的保留天數。
更改下列內容:
- INSTANCE_NAME:要設定交易記錄的執行個體名稱。
DAYS_TO_RETAIN:要保留的交易記錄天數。如果是 Cloud SQL Enterprise Plus 版本,有效範圍介於 1 到 35 天,預設為 14 天。如果是 Cloud SQL Enterprise 版,有效範圍介於 1 到 7 天,預設為 7 天。
如未指定值,Cloud SQL 會使用預設值。只有在啟用 PITR 時,這項設定才會生效。保留更多天數的交易記錄檔需要較大的儲存空間。
gcloud sql instances patch INSTANCE_NAME
--retained-transaction-log-days=DAYS_TO_RETAIN
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
DAYS_TO_RETAIN:保留交易記錄的天數。如果是 Cloud SQL Enterprise Plus 版本,有效範圍介於 1 到 35 天,預設為 14 天。如果是 Cloud SQL Enterprise 版,有效範圍介於 1 到 7 天,預設為 7 天。
如未指定任何值,則會使用預設值。只有在啟用 PITR 時,這項設定才會生效。保留更多天數的交易記錄檔需要較大的儲存空間。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID。
- INSTANCE_ID:執行個體 ID。
DAYS_TO_RETAIN:保留交易記錄的天數。如果是 Cloud SQL Enterprise Plus 版本,有效範圍介於 1 到 35 天,預設為 14 天。如果是 Cloud SQL Enterprise 版,有效範圍介於 1 到 7 天,預設為 7 天。
如未指定任何值,則會使用預設值。只有在啟用 PITR 時,這項設定才會生效。保留更多天數的交易記錄檔需要較大的儲存空間。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
檢查用於 PITR 的交易記錄儲存位置
您可以查看 Cloud SQL 執行個體儲存交易記錄的位置,這些記錄用於 PITR。
gcloud
如要判斷執行個體是否將 PITR 的記錄檔儲存在磁碟或 Cloud Storage 上,請使用下列指令:
gcloud sql instances describe INSTANCE_NAME
將 INSTANCE_NAME 替換為執行個體名稱。
如果專案中有多個執行個體,您也可以查看交易記錄的儲存位置。如要判斷多個執行個體的位置,請使用下列指令:
gcloud sql instances list --show-transactional-log-storage-state
回應範例:
NAME DATABASE_VERSION LOCATION TRANSACTIONAL_LOG_STORAGE_STATE my_01 SQLSERVER_2019_STANDARD us-central-1 DISK my_02 SQLSERVER_2019_STANDARD us-central-1 CLOUD_STORAGE ...
在指令輸出中,「transactionalLogStorageState」欄位或「TRANSACTIONAL_LOG_STORAGE_STATE」欄會提供例項的 PITR 交易記錄儲存位置資訊。交易記錄的可能儲存狀態如下:
DISK:執行個體會在磁碟上儲存用於時間點復原的交易記錄。CLOUD_STORAGE:執行個體會將用於 PITR 的交易記錄儲存在 Cloud Storage 中。
後續步驟
- 在副本上設定旗標