提供意見
設定時間點復原 (PITR)
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
在 Google Cloud 控制台中建立新執行個體時,系統會自動啟用自動備份 和時間點復原 (PITR) 。如要為現有執行個體設定 PITR,請按照下列步驟操作:
啟用 PITR
在 Google Cloud 控制台中建立新執行個體時,系統會自動啟用「自動備份」
設定。
以下程序會在現有 主要執行個體上啟用 PITR。
控制台
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
開啟要啟用 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
,表示變更已成功。
如要啟用 PITR,請使用 Terraform 資源 。
為 Cloud SQL Enterprise Plus 版本啟用 PITR
注意: 如果您建立 Cloud SQL Enterprise Plus 版執行個體,系統會預設啟用 PITR,無論您使用哪種建立方法都一樣。如要停用這項功能 ,
請手動操作。
使用下列 Terraform 程式碼範例,建立已啟用 PITR 的 Cloud SQL Enterprise Plus 版執行個體:
為 Cloud SQL Enterprise 版啟用 PITR
注意: 如果您建立 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 範例通常會假設您已在 Google Cloud 專案中啟用必要的 API。
刪除變更
如要刪除變更,請按照下列步驟操作:
如要停用防刪除功能,請在 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
}
}
}
請展開以下其中一個選項,以傳送要求:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME "
PowerShell (Windows)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_NAME ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
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
}
}
}
請展開以下其中一個選項,以傳送要求:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_NAME "
PowerShell (Windows)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_NAME ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
停用 PITR
控制台
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找到要停用的執行個體,開啟更多動作選單 ,然後選取「編輯」 。
展開「自訂執行個體」 下方的「資料保護」 專區。
清除「啟用時間點復原」 。
按一下 [儲存] 。
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
}
}
}
請展開以下其中一個選項,以傳送要求:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id "
PowerShell (Windows)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id " | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
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
}
}
}
請展開以下其中一個選項,以傳送要求:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id "
PowerShell (Windows)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id " | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
設定交易記錄保留期限
如要設定交易記錄檔的保留天數,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找到要設定交易記錄的執行個體,開啟更多動作選單 ,然後選取「編輯」 。
展開「自訂執行個體」 下方的「資料保護」 專區。
在「Enable point-in-time recovery」(啟用時間點復原) 區段中,展開「Advanced options」(進階選項) 。
輸入記錄保留天數。如果是 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
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN "
}
}
}
請展開以下其中一個選項,以傳送要求:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID "
PowerShell (Windows)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID " | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID
JSON 要求主體:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN "
}
}
}
請展開以下其中一個選項,以傳送要求:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID "
PowerShell (Windows)
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID " | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
檢查用於 PITR 的交易記錄儲存位置
您可以查看 Cloud SQL 執行個體儲存交易記錄的位置,這些記錄用於時間點復原。
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 中。
後續步驟
提供意見
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權 ,程式碼範例則為阿帕契 2.0 授權 。詳情請參閱《Google Developers 網站政策 》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-12-04 (世界標準時間)。
想進一步說明嗎?
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-12-04 (世界標準時間)。"],[],[]]