無論主要 Cloud SQL 執行個體是否處於運作中或已刪除,您都可以使用時間點復原 (PITR) 功能還原執行個體。您可以使用 PITR 將執行個體還原至特定時間點。如果執行個體已刪除,您可以將執行個體還原至特定時間點,並還原至新的或現有的執行個體。
Cloud SQL 提供下列選項,可使用 PITR 還原執行個體:
如要在無法使用或已刪除的執行個體上執行 PITR,請找出最新和最早的復原時間。
執行 PITR
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 找到要復原的執行個體,開啟更多動作選單
,然後按一下「建立副本」。 - (選用) 在「建立副本」頁面中,更新新副本的 ID。
- 選取「從過去時間點複製資料」。
- 輸入 PITR 時間。
- 按一下 [建立本機複本]。
gcloud
使用 PITR 建立副本。
更改下列內容:
- SOURCE_INSTANCE_NAME:要還原的執行個體名稱。
- NEW_INSTANCE_NAME - 副本的名稱。
- TIMESTAMP - 來源執行個體的世界標準時間時區,格式為 RFC 3339。例如:2012-11-15T16:19:00.094Z。
gcloud sql instances clone SOURCE_INSTANCE_NAME \ NEW_INSTANCE_NAME \ --point-in-time 'TIMESTAMP'
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- restore-timestamp 最多可復原的時間點
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- restore-timestamp 最多可復原的時間點
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
使用 backup vault 執行 PITR
如果 Cloud SQL 執行個體已啟用強化備份,您可以使用備份保存庫對執行個體執行時間點復原。
控制台
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
開啟要復原執行個體的更多動作選單
,然後按一下「建立副本」。選取「從過去時間點複製資料」。
輸入 PITR 時間。
按一下 [建立本機複本]。
gcloud
如要對備份保存庫中的執行個體執行 PITR,您需要找出最接近要執行 PITR 時間的備份 data-source。如要尋找備份,請參閱「列出執行個體備份保存庫中的所有備份」。找出備份後,請執行下列指令來執行 PITR:
gcloud sql instances point-in-time-restore DATA_SOURCE
PITR_TIMESTAMP
--project=TARGET_PROJECT
更改下列內容:
- DATA_SOURCE:最接近要復原時間點的備份
data-source路徑。 - PITR_TIMESTAMP:您要將執行個體還原至的時間點復原記錄來源執行個體的世界標準時間時間戳記,格式為 RFC 3339。例如:2012-11-15T16:19:00.094Z。
- TARGET_PROJECT:Cloud SQL 執行個體的專案 ID。
REST v1
REST v1beta4
對無法使用的執行個體執行 PITR
控制台
您可能需要將無法使用的執行個體復原到其他可用區,原因如下:
- 無法存取執行個體設定的可用區。這個執行個體的狀態為
FAILED。 - 執行個體正在維護中。這個執行個體處於「
MAINTENANCE」狀態。
如要復原無法使用的執行個體,請完成下列步驟:
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 找出要複製的執行個體列。
- 在「動作」欄中,按一下「更多動作」選單 。
- 按一下 [建立本機複本]。
- 在「建立副本」頁面中,完成下列動作:
- 在「Instance ID」(執行個體 ID) 欄位中,視需要更新執行個體 ID。
- 按一下「從過去時間點複製資料」。
- 在「時間點」欄位中,選取要複製資料的日期和時間。這項作業會將執行個體復原為目標時間當下的狀態。
- 按一下 [建立本機複本]。
複製作業初始化時,系統會將您帶回執行個體清單頁面。
gcloud
您可能需要將 無法使用的執行個體 復原到其他區域,因為執行個體設定所在的區域無法存取。
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --point-in-time DATE_AND_TIME_STAMP \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
執行 gcloud sql instances clone 指令的使用者或服務帳戶必須具備 cloudsql.instances.clone 權限。如要進一步瞭解執行 gcloud CLI 指令所需的權限,請參閱「Cloud SQL 權限」。
REST v1
如果執行個體設定所在的區域無法存取,您可能需要將無法使用的執行個體復原到其他區域。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID。
- SOURCE_INSTANCE_NAME:來源執行個體的名稱。
- TARGET_INSTANCE_NAME:目標 (複製) 執行個體的名稱。
- DATE_AND_TIME_STAMP:來源執行個體的日期和時間戳記,採用 UTC 時區和 RFC 3339 格式 (例如
2012-11-15T16:19:00.094Z)。 - ZONE_NAME:選用。目標執行個體的主要區域名稱。用於為要複製的 Cloud SQL 執行個體指定不同的主要可用區。如果是區域執行個體,這個可用區會取代主要可用區,但次要可用區與執行個體相同。
- SECONDARY_ZONE_NAME:選用。目標執行個體的次要區域名稱。用於為要複製的區域 Cloud SQL 執行個體指定其他次要區域。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
JSON 要求主體:
{
"cloneContext":
{
"destinationInstanceName": "TARGET_INSTANCE_NAME",
"pointInTime": "DATE_AND_TIME_STAMP",
"preferredZone": "ZONE_NAME",
"preferredSecondaryZone": "SECONDARY_ZONE_NAME"
}
}請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
使用 instances.clone API 方法的使用者或服務帳戶必須具備 cloudsql.instances.clone 權限。如要進一步瞭解使用 API 方法所需的權限,請參閱 Cloud SQL 權限。
REST v1beta4
您可能需要將無法使用的執行個體復原到其他區域,因為執行個體設定所在的區域無法存取。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID。
- SOURCE_INSTANCE_NAME:來源執行個體的名稱。
- TARGET_INSTANCE_NAME:目標 (複製) 執行個體的名稱。
- DATE_AND_TIME_STAMP:來源執行個體的日期和時間戳記,採用 UTC 時區和 RFC 3339 格式 (例如
2012-11-15T16:19:00.094Z)。 - ZONE_NAME:選用。目標執行個體的主要區域名稱。這項設定可用於為要複製的 Cloud SQL 執行個體指定其他主要可用區。如果是地區執行個體,這個可用區會取代主要可用區,但次要可用區與執行個體相同。
- SECONDARY_ZONE_NAME:選用。目標執行個體的次要區域名稱。用於為要複製的區域 Cloud SQL 執行個體指定其他次要區域。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
JSON 要求主體:
{
"cloneContext":
{
"destinationInstanceName": "TARGET_INSTANCE_NAME",
"pointInTime": "DATE_AND_TIME_STAMP",
"preferredZone": "ZONE_NAME",
"preferredSecondaryZone": "SECONDARY_ZONE_NAME"
}
}請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
使用 instances.clone API 方法的使用者或服務帳戶必須具備 cloudsql.instances.clone 權限。如要進一步瞭解使用 API 方法所需的權限,請參閱 Cloud SQL 權限。
如果您嘗試在最新可復原時間之後建立 PITR 副本,系統會顯示下列錯誤訊息:
The timestamp for point-in-time recovery is after the latest recovery time of Timestamp of latest recovery time. Clone the instance with a time that's earlier than this recovery time.
對已刪除的執行個體執行 PITR
如要使用 PITR 復原已刪除的執行個體,您需要:
- 您要將執行個體還原至的時間點復原時間戳記 (
timestamp) - 目標執行個體名稱
- 來源執行個體遭刪除的時間 (
source-instance-deletion-time)
您只能使用 gcloud CLI 或 Cloud SQL API,對已刪除的執行個體執行 PITR。詳情請參閱「使用 PITR 還原已刪除的執行個體」。
gcloud
標準備份
找出 PITR 視窗
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
尋找來源執行個體刪除作業
刪除執行個體後,系統會將已刪除執行個體的 source-instance-deletion-time 和 log-retention-days 與保留的執行個體備份資料一併儲存。如要查看已刪除執行個體的所有可用備份清單,請參閱「列出保留的備份」。
找出要使用的備份後,請使用 gcloud sql backups describe 指令取得 source-instance-deletion-time。
使用 PITR 還原
如要使用 PITR 還原已刪除的執行個體,請執行下列指令:
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time='PITR_TIMESTAMP' \
--source-instance-deletion-time=SOURCE_INSTANCE_DELETION_TIMESTAMP
更改下列內容:
SOURCE_INSTANCE_NAME:要還原的來源執行個體名稱。NEW_INSTANCE_NAME:新執行個體的名稱。PITR_TIMESTAMP:您要將執行個體還原至的時間點復原記錄來源執行個體的世界標準時間時間戳記,格式為 RFC 3339。例如: 2012-11-15T16:19:00.094Z。SOURCE_INSTANCE_DELETION_TIMESTAMP:來源執行個體遭刪除時的世界標準時間時間戳記,採用 RFC 3339 格式。例如:2012-11-15T16:19:00.094Z。
進階級備份
找出 PITR 視窗
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
找出資料來源
刪除執行個體後,系統會將該執行個體的資料來源與保留的備份資料一併儲存。如要尋找已刪除執行個體的這些值,請參閱「列出執行個體備份保存庫中的所有備份」。
使用 PITR 還原
如要使用 PITR 還原已刪除的執行個體,請執行下列指令:
gcloud sql instances point-in-time-restore DATA_SOURCE \
--point-in-time='PITR_TIMESTAMP' \
--project='TARGET_PROJECT' \
更改下列內容:
DATA_SOURCE:最接近要復原時間點的備份data-source路徑。PITR_TIMESTAMP:您要將執行個體還原至的時間點復原記錄來源執行個體的世界標準時間時間戳記,格式為 RFC 3339。例如: 2012-11-15T16:19:00.094Z。TARGET_PROJECT:Cloud SQL 執行個體的專案 ID。
REST v1
找出 PITR 視窗
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
找出來源執行個體的刪除時間和記錄保留天數
刪除執行個體後,系統會將已刪除執行個體的 source-instance-deletion-time 和 log-retention-days 與保留的執行個體備份資料一併儲存。如要找出已刪除執行個體的這些值,請參閱「列出保留的備份」。
使用 PITR 還原
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- source-instance-deletion-time:來源執行個體的刪除時間
- restore-timestamp 您要還原執行個體的時間點
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"sourceInstanceDeletionTime: "source-instance-deletion-time",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
找出 PITR 視窗
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
找出來源執行個體的刪除時間和記錄保留天數
刪除執行個體後,系統會將已刪除執行個體的 source-instance-deletion-time 和 log-retention-days 與保留的執行個體備份資料一併儲存。如要找出已刪除執行個體的這些值,請參閱「列出保留的備份」。
使用 PITR 還原
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- source-instance-deletion-time:來源執行個體的刪除時間
- restore-timestamp 您要還原執行個體的時間點
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"sourceInstanceDeletionTime: "source-instance-deletion-time",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
取得最早和最晚的復原時間
對於可用的執行個體,您可以對執行個體時間點復原視窗中的任何時間戳記執行時間點復原。時間點復原作業的時間範圍從最早復原時間開始,最晚復原時間結束。如果執行個體無法使用,且執行個體記錄儲存在 Cloud Storage 中,或是執行個體已刪除且已啟用時間點復原保留功能,則您可以擷取最早和最晚的復原時間,並對該時間範圍內的任何時間戳記執行時間點復原。在所有情況下,您都可以提供偏好的區域值,將執行個體還原至其他主要或次要區域。
gcloud
無法使用的執行個體
如要取得最早和最晚可復原的 Cloud SQL 執行個體時間 (不適用於可用的執行個體),請執行下列指令:
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
更改下列內容:
INSTANCE_NAME:要查詢最新復原時間的執行個體名稱。
已刪除執行個體
如要取得可還原 Cloud SQL 刪除執行個體的最早和最晚時間,請執行下列指令:
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
--source-instance-deletion-time='SOURCE_INSTANCE_DELETION_TIMESTAMP'
更改下列內容:
INSTANCE_NAME:要查詢最新復原時間的執行個體名稱。SOURCE_INSTANCE_DELETION_TIMESTAMP:來源執行個體遭刪除時的世界標準時間時間戳記,採用 RFC 3339 格式。例如:2012-11-15T16:19:00.094Z。
REST v1
無法使用的執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:您要查詢最新復原時間的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
已刪除執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:要查詢最新復原時間的來源執行個體名稱
- SOURCE_INSTANCE_DELETION_TIME:來源執行個體的刪除時間
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
REST v1beta4
無法使用的執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:您要查詢最新復原時間的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
已刪除執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:要查詢最新復原時間的來源執行個體名稱
- SOURCE_INSTANCE_DELETION_TIME:來源執行個體的刪除時間
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
疑難排解
| 問題 | 疑難排解 |
|---|---|
|
或
|
您提供的时间戳记无效。 |
|
或
|
您提供時間戳記的時間點無法找到備份或 binlog 座標。 |
後續步驟
- 在副本上設定旗標