本頁說明如何使用進階災害復原 (DR) 。進階 DR 提供兩項主要功能:
備用資源容錯移轉 功能可讓您在區域發生故障時,立即將主要執行個體容錯移轉至災難復原備用資源。
切換 可讓您反轉主要執行個體和 DR 備用資源的角色,不會遺失任何資料。您可以使用切換功能,在副本容錯移轉後將部署作業還原至原始部署狀態,也可以使用切換功能測試 DR。
進階 DR 僅適用於 Cloud SQL Enterprise Plus 版本執行個體。
注意: 本頁包含與 Cloud SQL 版本相關的功能。如要進一步瞭解 Cloud SQL 版本,請參閱「Cloud SQL 版本簡介 」一文。
事前準備
如果您打算使用 Google Cloud SDK,則必須使用 502.0.0 以上版本。如要查看 Google Cloud SDK 版本,請執行 gcloud --version
。如要更新 Google Cloud SDK,請執行 gcloud components update
。
如要安裝 Google Cloud SDK,請參閱「安裝 gcloud CLI 」。
指派 DR 備用資源
如要執行進階 DR,您必須先指定跨區域 DR 副本。
主要執行個體需求條件
主要執行個體必須是 Cloud SQL Enterprise Plus 版本執行個體,且有指定的 DR 備用資源。
您必須在主要執行個體上啟用時間點復原 (PITR) 功能。如要啟用 PITR,請參閱「
使用時間點復原 (PITR) 」。
如果您要使用 DNS 寫入端點 建立 Cloud SQL 執行個體,在叫用切換或備用資源容錯移轉作業前,主要執行個體必須與指定的 DR 備用資源具有相同的 SSL 設定。舉例來說,如果您將 DR 副本設為強制執行 SSL 加密 ,但主要執行個體允許未加密的連線,那麼在切換或容錯移轉作業完成後,用戶端就無法連線至新的主要執行個體。
DR 備用資源規定
指定的 DR 讀取副本必須符合下列規定:
必須是 Cloud SQL Enterprise Plus 版執行個體
必須與主要執行個體使用相同的資料庫版本,且執行 PostgreSQL 12 以上版本
必須與主要執行個體位於不同的區域
必須是直接唯讀副本,不能是連鎖副本
DR 備用資源建議
本節提供 DR 副本的相關建議。下列建議有助於避免部署作業發生效能問題:
使用與主要執行個體相同的磁碟大小,或啟用自動擴充功能。
使用一致的 HA 設定。如果要在主要執行個體上啟用 HA,請一併在 DR 副本上啟用 HA。
使用一致的資料快取設定。如果在主要執行個體上啟用資料快取,請在 DR 副本上啟用資料快取。
在任何切換或副本容錯移轉作業前後,為 DR 副本設定適當的資料庫標記。
建立副本,以滿足 DR 副本需求
如果主要執行個體尚未具備符合 DR 備用資源需求的跨區域唯讀備用資源,請建立一個。
控制台
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出主要執行個體。
在「動作」 欄中,按一下「更多動作」 選單。
選取 [Create read replica ] (建立唯讀備用資源)。
在「Instance ID」(執行個體 ID) 欄位中,輸入 DR 副本 的名稱。
「資料庫版本」 欄位會為您選取主要執行個體的相同主要版本。
在頁面的「選擇區域和可用區可用性」 部分,
執行下列操作:
選取與主要執行個體區域「不同」的區域。
(選用步驟) 為 DR 副本選取「多個可用區」 。
(選用步驟) 為 DR 副本選取「主要」 和「次要區域」 。
在頁面的「Customize your instance」(自訂執行個體) 部分,您可以更新 DR 副本的設定。如要進一步瞭解各項設定,請參閱「關於執行個體設定 」頁面。
在「機器形狀」 中,選取與主要執行個體相同的機器類型。
在「旗標」 部分,設定資料庫所需的任何旗標。
按一下「建立備用資源」 。
Cloud SQL 會建立主要執行個體的備份,並建立備用資源。您會回到主要執行個體的執行個體頁面。
gcloud
如要建立符合 DR 副本需求的副本,請執行下列指令:
gcloud sql instances create REPLICA_NAME \
--master-instance-name= PRIMARY_INSTANCE_NAME \
--region= REPLICA_REGION_NAME \
--database-version= DATABASE_VERSION \
--tier= MACHINE_TYPE \
--availability-type= AVAILABILITY_TYPE
--edition= "ENTERPRISE_PLUS"
請替換下列變數:
REST v1
使用任何要求資料之前,請先替換以下項目:
PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
PROJECT_ID :主要執行個體和 DR 副本的專案 ID 或專案編號。 Google Cloud
DATABASE_VERSION: 版本字串,與主要執行個體的資料庫版本相符,例如 POSTGRES_16
。主要和 DR 副本的資料庫版本必須相同。
REPLICA_NAME :您要建立的 DR 副本執行個體名稱。 REPLICA_REGION :DR 副本執行個體的區域。備用資源區域必須與主要執行個體的區域不同。
MACHINE_TYPE :指定與主要執行個體相同的機型。建議您選取與主要執行個體相同的機型。
AVAILABILITY_TYPE :如果主要執行個體已設定高可用性,建議您指定 REGIONAL
來啟用高可用性。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances
JSON 要求主體:
{
"masterInstanceName": "PRIMARY_INSTANCE_NAME ",
"project": "PROJECT_ID ",
"databaseVersion": "DATABASE_VERSION ",
"name": "REPLICA_NAME ",
"region": "REPLICA_REGION ",
"settings":
{
"tier": "MACHINE_TYPE ",
"availabilityType": "AVAILABILITY_TYPE ",
"settingsVersion": 0,
"replicationType": "ASYNCHRONOUS",
}
}
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \ -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"
PowerShell (Windows)
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances" | 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": "2024-04-01T22:43:37.981Z",
"operationType": "CREATE_REPLICA",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
PROJECT_ID :主要執行個體和 DR 副本的專案 ID 或專案編號。 Google Cloud
DATABASE_VERSION: 版本字串,與主要執行個體的資料庫版本相符,例如 POSTGRES_16
。主要和 DR 副本的資料庫版本必須相同。
REPLICA_NAME :您要建立的 DR 副本執行個體名稱。
REPLICA_REGION :DR 副本執行個體的區域。備用資源區域必須與主要執行個體的區域不同。
MACHINE_TYPE :指定與主要執行個體相同的機型。建議磁碟大小與主要執行個體的磁碟大小相符。
AVAILABILITY_TYPE :如果主要執行個體已設定高可用性,建議您指定 REGIONAL
來啟用高可用性。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID /instances
JSON 要求主體:
{
"masterInstanceName": "PRIMARY_INSTANCE_NAME ",
"project": "PROJECT_ID ",
"databaseVersion": "DATABASE_VERSION ",
"name": "REPLICA_NAME ",
"region": "REPLICA_REGION ",
"settings":
{
"tier": "MACHINE_TYPE ",
"availabilityType": "AVAILABILITY_TYPE ",
"settingsVersion": 0,
"replicationType": "ASYNCHRONOUS",
}
}
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID /instances"
PowerShell (Windows)
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID /instances" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-04-01T22:43:37.981Z",
"operationType": "CREATE_REPLICA",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_UD /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
為主要執行個體指派 DR 備用資源
下列程序說明如何將主要執行個體的其中一個跨區域副本指定為 DR 副本,以進行切換或副本容錯移轉。
控制台
如要為主要執行個體指定 DR 副本,請執行下列步驟:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出並選取主要執行個體。系統隨即會顯示主要執行個體的「總覽」 頁面。
在導覽選單中,按一下「副本」 。
在唯讀備用資源清單中,找出要指定為 DR 備用資源的跨區域唯讀備用資源。
如要將副本指定為 DR 副本,請按一下「動作」more_vert 按鈕,然後選取「Designate as DR replica」(指定為 DR 副本) 。
按一下「確認」。
gcloud
如要為主要執行個體指定 DR 副本,請使用下列指令:
gcloud sql instances patch PRIMARY_INSTANCE_NAME \
--failover-dr-replica-name= REPLICA_NAME
請替換下列變數:
PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
REPLICA_NAME :DR 副本的名稱。
REST v1
使用任何要求資料之前,請先替換以下項目:
PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
REPLICA_NAME :DR 副本的名稱。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME
JSON 要求主體:
{
"replicationCluster": {
"failoverDrReplicaName": "REPLICA_NAME "
}
}
如要傳送要求,請展開以下其中一個選項:
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/PRIMARY_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/PRIMARY_INSTANCE_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-04-01T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
REPLICA_NAME :DR 副本的名稱。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME
JSON 要求主體:
{
"replicationCluster": {
"failoverDrReplicaName": "REPLICA_NAME "
}
}
如要傳送要求,請展開以下其中一個選項:
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/PRIMARY_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/PRIMARY_INSTANCE_NAME " | 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": "2024-04-01T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
變更 DR 備用資源指派
如果副本符合規定,您可以將其他副本指定為 DR 副本。舊的 DR 備用資源會失去 DR 備用資源的指定。
控制台
如要變更主要執行個體的 DR 副本,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出並選取主要執行個體。系統隨即會顯示主要執行個體的「總覽」 頁面。
在導覽選單中,按一下「副本」 。
在唯讀備用資源清單中,找出要指定為新 DR 備用資源的跨區域唯讀備用資源。
如要將副本指定為 DR 副本,請按一下「動作」more_vert 按鈕,然後選取「Designate as DR replica」(指定為 DR 副本) 。
gcloud
如要變更 DR 副本,請再次執行指定指令 ,並指定其他 DR 副本。
查看 DR 備用資源指派情形
您可以使用 gcloud CLI 或 Cloud SQL Admin API,查看指派給主要執行個體的 DR 副本。您也可以檢查副本是否為指定的 DR 副本。
如要瞭解哪個 DR 副本指定給主要執行個體,請按照下列程序操作。
控制台
如要找出主要執行個體的指定 DR 備用資源,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出並選取主要執行個體。系統隨即會顯示主要執行個體的「總覽」 頁面。
在導覽選單中,按一下「副本」 。
在唯讀副本清單中,確認指定 DR 副本的「類型」 欄顯示 PostgreSQL disaster recovery replica
。
gcloud
如要找出主要執行個體的指定 DR 副本,請使用下列指令:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
請替換下列變數:
PRIMARY_INSTANCE_NAME :主要執行個體的名稱
這項指令的輸出內容包含名為 failoverDrReplica
的欄位,可識別指定的 DR 副本。
REST v1
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :包含執行個體的 Google Cloud 專案 ID 或專案編號。
PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME "
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "POSTGRES_16",
"settings": {
. . .
"replicaNames": [
"my-instance-replica"
],
"ipAddresses": [
{
"type": "PRIMARY",
"ipAddress": "192.5.4.1"
}
],
"instanceType": "CLOUD_SQL_INSTANCE",
. . .
"connectionName": "my-project:us-east1:my-instance",
"name": "my-instance",
"region": "us-east1",
"gceZone": "us-east1-c",
"secondaryGceZone": "us-east1-b",
"databaseInstalledVersion": "POSTGRES_16",
"maintenanceVersion": "POSTGRES_16_3.R20240205.00_07",
"replicationCluster" {
"failoverDrReplicaName": "my-project:my-instance-replica"
},
"createTime": "2024-03-15T18:11:03.596Z",
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :包含執行個體的 Google Cloud 專案 ID 或專案編號。
PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME "
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "POSTGRES_16",
"settings": {
. . .
"replicaNames": [
"my-instance-replica"
],
"ipAddresses": [
{
"type": "PRIMARY",
"ipAddress": "192.5.4.1"
}
],
"instanceType": "CLOUD_SQL_INSTANCE",
. . .
"connectionName": "my-project:us-east1:my-instance",
"name": "my-instance",
"region": "us-east1",
"gceZone": "us-east1-c",
"secondaryGceZone": "us-east1-b",
"databaseInstalledVersion": "POSTGRES_16",
"maintenanceVersion": "POSTGRES_16_3.R20240205.00_07",
"replicationCluster" {
"failoverDrReplicaName": "my-project:my-instance-replica"
},
"createTime": "2024-03-15T18:11:03.596Z",
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
}
如要檢查副本是否為 DR 副本,請使用下列其中一個程序。
控制台
如要檢查備用資源執行個體是否為 DR 備用資源,請執行下列操作:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出備用資源執行個體。
確認指定 DR 副本的「Type」(類型) 資料欄中顯示 PostgreSQL disaster recovery replica
。
gcloud
如要檢查副本執行個體是否為 DR 副本,請執行下列指令:
gcloud sql instances describe REPLICA_NAME
請替換下列變數:
如果副本是 DR 副本,指令輸出內容會包含 drReplica=true
欄位。
REST v1
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :包含執行個體的 Google Cloud 專案 ID 或專案編號。
REPLICA_NAME :副本的名稱。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME "
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "POSTGRES_16",
"settings": {
"authorizedGaeApplications": [],
"tier": "db-perf-optimized-N-8",
"kind": "sql#settings",
"availabilityType": "REGIONAL",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
. . .
},
"masterInstanceName": "my-project:my-instance",
"ipAddresses": [
{
"type": "PRIMARY",
"ipAddress": "192.3.2.1"
}
],
. . .
"instanceType": "READ_REPLICA_INSTANCE",
. . .
"connectionName": "my-project:us-east4:my-instance-replica",
"name": "my-instance-replica",
"region": "us-east4",
"gceZone": "us-east4-b",
"secondaryGceZone": "us-east4-c",
"databaseInstalledVersion": "POSTGRES_16",
"maintenanceVersion": "POSTGRES_16_3.R20240205.00_07",
"replicationCluster" {
"drReplica": true
},
"createTime": "2024-03-15T18:17:44.655Z",
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :包含執行個體的 Google Cloud 專案 ID 或專案編號。
REPLICA_NAME :副本的名稱。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME "
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "POSTGRES_16",
"settings": {
"authorizedGaeApplications": [],
"tier": "db-perf-optimized-N-8",
"kind": "sql#settings",
"availabilityType": "REGIONAL",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
. . .
},
"masterInstanceName": "my-project:my-instance",
"ipAddresses": [
{
"type": "PRIMARY",
"ipAddress": "192.3.2.1"
}
],
. . .
"instanceType": "READ_REPLICA_INSTANCE",
. . .
"connectionName": "my-project:us-east4:my-instance-replica",
"name": "my-instance-replica",
"region": "us-east4",
"gceZone": "us-east4-b",
"secondaryGceZone": "us-east4-c",
"databaseInstalledVersion": "POSTGRES_16",
"maintenanceVersion": "POSTGRES_16_3.R20240205.00_07",
"replicationCluster" {
"drReplica": true
},
"createTime": "2024-03-15T18:17:44.655Z",
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
移除 DR 備用資源
您可以從主要執行個體清除 DR 副本指定項目。不過,如果沒有為主要執行個體指派任何災難復原副本,就無法執行切換或副本容錯移轉。
控制台
如要從主要執行個體移除指定的 DR 副本,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出並選取主要執行個體。系統隨即會顯示主要執行個體的「總覽」 頁面。
在導覽選單中,按一下「副本」 。
在唯讀副本清單中,找出要移除的跨區域唯讀副本。
針對副本,按一下「more_vert」more_vert 「Actions」(動作) 按鈕,然後選取「Remove as DR replica」(移除做為 DR 副本) 。
按一下「確認」。
gcloud
如要移除 DR 副本指定項目,請在主要執行個體上執行下列指令:
gcloud sql instances patch PRIMARY_INSTANCE_NAME \
--clear-failover-dr-replica-name
請替換下列變數:
PRIMARY_INSTANCE_NAME :要移除指定 DR 備用資源的主要執行個體名稱
REST v1
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :主要執行個體和 DR 副本的專案 ID 或專案編號。 Google Cloud PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
將 failoverDrReplicaName
欄位設為空字串。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME
JSON 要求主體:
{
"replicationCluster": {
"failoverDrReplicaName": ""
}
}
如要傳送要求,請展開以下其中一個選項:
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/PRIMARY_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/PRIMARY_INSTANCE_NAME " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-04-01T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :主要執行個體和 DR 副本的專案 ID 或專案編號。 Google Cloud PRIMARY_INSTANCE_NAME :主要執行個體的名稱。
將 failoverDrReplicaName
欄位設為空字串。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/PRIMARY_INSTANCE_NAME
JSON 要求主體:
{
"replicationCluster": {
"failoverDrReplicaName": ""
}
}
如要傳送要求,請展開以下其中一個選項:
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/PRIMARY_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/PRIMARY_INSTANCE_NAME " | 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": "2024-04-01T21:30:35.667Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
指派 DR 副本後,即可執行切換作業。
不過,最佳做法是避免在下列情況下執行切換作業:
主要執行個體正在使用中。
正在執行管理員作業,例如自動備份,或啟用/停用高可用性 (HA)。
為避免逾時,請考慮在交易量較低時執行切換。
切換完成後,作業會在新主要執行個體升級後,立即備份新主要執行個體 (先前的 DR 副本)。備份完成後,新的主要執行個體就會完全啟用時間點復原 (PITR) 功能。備份作業可能需要 5 到 15 分鐘,實際情況視磁碟大小而定。只有在完成這項備份後,PITR 涵蓋範圍才會開始。如要進一步瞭解使用 PITR 和進階 DR 時的注意事項,請參閱「使用 PITR 和進階 DR 」。
切換作業完成後,您會發現複製方向已反轉。
舊主要執行個體重新設定為唯讀備用資源後,先前解析為舊主要執行個體的 DNS 寫入端點 ,會解析為新的主要執行個體。
重要事項 :
如果您未使用 DNS 寫入端點,
則必須將應用程式指向新主要執行個體的 IP 位址。
事前準備
執行切換作業前,請先完成下列步驟:
指派 DR 備用資源 。
您只能在主要執行個體和指定的 DR 備用資源之間執行切換。
確認主要執行個體和 DR 副本已上線。
請確認 DR 副本執行的資料庫版本與主要執行個體相同,即 PostgreSQL 12 以上版本。
確認主要執行個體已啟用 PITR。如要啟用 PITR,請參閱「使用時間點復原 (PITR) 」。
確認主要執行個體和 DR 副本未設定 cloudsql.logical_decoding
旗標。兩個執行個體都不得設定邏輯時段或邏輯複寫。
如果您使用 DNS 寫入端點 ,請確認主要執行個體和 DR 副本的 SSL 設定相同。舉例來說,如果 DR 副本設定為強制執行 SSL 加密 ,但主要執行個體允許未加密的連線,那麼在完成切換作業後,用戶端就無法連線至新的主要執行個體。
對主要執行個體執行隨選備份。這項備份作業是預防措施,可讓您在發生任何意外故障時復原資料。
注意: 如要讓 Cloud SQL 更新寫入端點 並指向正確的執行個體,請務必先將備用資源移至新版網路架構,再執行切換作業。如果執行個體不是使用這種架構建立,您可以將執行個體升級為新版網路架構 。
控制台
如要執行切換作業,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出主要執行個體的指定 DR 備用資源。
按一下 DR 備用資源執行個體。系統隨即顯示 DR 副本的「總覽」 頁面。
按一下「切換」 按鈕。
在「在主要執行個體與 DR 備用資源之間切換」 頁面的「執行個體 ID」 欄位中,輸入主要執行個體的名稱。
按一下「切換」 。
gcloud
如要執行切換作業,請執行下列指令:
gcloud sql instances switchover REPLICA_NAME
[ --db-timeout= TIMEOUT_DURATION ]
請替換下列變數:
REPLICA_NAME :指定 DR 副本的名稱,主要執行個體會與該副本互換角色。
TIMEOUT_DURATION :選用。允許執行個體完成資料庫作業的逾時期限。
如果未指定這項參數,切換作業會包含 10 分鐘的逾時。
您可以指定 --db-timeout
參數,增加這個逾時值。將 TIMEOUT_DURATION 替換成最多 24 小時的時間範圍,包括格式的初始標記。例如,如要指定 30 秒,請使用 30s
。如為 24 小時,請指定 24h
。您也可以使用最多 9 位數的小數,指定時間範圍的分數單位。舉例來說,如要指定 30.5 分鐘,請輸入 30.5m
。
如果沒有任何待處理作業,可以減少這個逾時值。
如要開始切換作業,請使用 Terraform 資源 。
如要將 DR 副本設為新的主要執行個體,請執行第一個範例。
如果切換作業順利完成,當您為第二個範例執行 terraform apply
時,系統會顯示類似以下的訊息:
No changes. Your infrastructure matches the configuration.
REST v1
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :主要執行個體和 DR 副本的 Google Cloud 專案 ID 或專案編號。
REPLICA_NAME :DR 副本的名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME /switchover
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME /switchover"
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME /switchover" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-04-01T22:43:37.981Z",
"operationType": "SWITCHOVER",
"name": "OPERATION_ID ",
"targetId": "REPLICA_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :主要執行個體和 DR 副本的 Google Cloud 專案 ID 或專案編號。
REPLICA_NAME :DR 副本的名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME /switchover
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME /switchover"
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME /switchover" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-04-01T22:43:37.981Z",
"operationType": "SWITCHOVER",
"name": "OPERATION_ID ",
"targetId": "REPLICA_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
如果發生區域故障或災難,您可以對指定的 DR 副本叫用副本容錯移轉作業,執行 DR。如要執行備用資源容錯移轉,請升級指定的 DR 備用資源。與切換不同,DR 副本的升級是立即進行。
由於 DR 副本會立即接手主要執行個體的工作,因此副本可能因複製延遲而缺少舊主要執行個體的部分資料。因此,備用資源容錯移轉可能會導致資料遺失。
在升級程序中,備用資源容錯移轉會在 DR 備用資源成為新的主要執行個體後,立即備份新的主要執行個體 (先前的 DR 備用資源)。備份完成後,新的主要執行個體就會完全啟用時間點復原 (PITR) 功能。視新 (和舊) 主要執行個體的磁碟大小而定,完成這項備份作業可能需要 5 到 15 分鐘。備份期間無法使用 PITR。
舊的主要執行個體恢復連線後,備用資源容錯移轉程序會進行備份。備份完成後,系統會將舊的主要執行個體重新建立為新主要執行個體的唯讀備用資源。
如要進一步瞭解如何搭配使用 PITR 與進階 DR,請參閱「搭配使用 PITR 與進階 DR 」。
啟動副本容錯移轉作業後,先前解析為舊主要執行個體的 DNS 寫入端點 ,會解析為新的主要執行個體。
重要事項 :
如果您未使用 DNS 寫入端點,
則必須將應用程式指向新主要執行個體的 IP 位址。
事前準備
執行備用資源容錯移轉前,請先完成下列步驟:
如果尚未完成上述設定,請指定 DR 副本 。您只能在主要執行個體和指定的 DR 備用資源之間執行備用資源容錯移轉。
確認 DR 副本已連線且健康狀態良好。
請確認 DR 副本執行的資料庫版本與主要執行個體相同,即 PostgreSQL 12 以上版本。
確認主要執行個體已啟用 PITR。如要啟用 PITR,請參閱「使用時間點復原 (PITR) 」。
確認主要執行個體和 DR 副本未設定 cloudsql.logical_decoding
旗標。兩個執行個體都不得設定邏輯時段或邏輯複製作業。
如果您叫用備用資源容錯移轉,且原始主要執行個體已啟用邏輯解碼,則原始主要執行個體成為唯讀備用資源時,原始主要執行個體上設定的所有邏輯時段都會遺失。
注意: 如要讓 Cloud SQL 更新寫入端點 並指向正確的執行個體,請務必先將副本升級至新版網路架構,再執行副本容錯移轉作業。如果執行個體不是使用這種架構建立,您可以將執行個體升級為新版網路架構 。
控制台
如要執行備用資源容錯移轉作業,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
按一下 DR 備用資源執行個體。系統隨即顯示 DR 副本的「總覽」 頁面。
按一下「Replica Failover」(備用資源容錯移轉) 按鈕。
在「在主要執行個體與 DR 備用資源之間執行備用資源容錯移轉」 頁面中,於「執行個體 ID」 欄位輸入主要執行個體的名稱,確認要繼續執行作業。
如要啟動備用資源容錯移轉,請按一下「備用資源容錯移轉」 。
gcloud
如要叫用副本容錯移轉至 DR 副本,請使用下列指令:
gcloud sql instances promote-replica \
REPLICA_NAME --failover
請替換下列變數:
REST v1
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :主要執行個體和 DR 副本的專案 ID 或專案編號。 Google Cloud
REPLICA_NAME :DR 副本的名稱。
ENABLE_REPLICA_FAILOVER :設為 true
,即可使用副本容錯移轉。如果設為 false
,API 會使用一般 promoteReplica
方法,不會進行副本容錯移轉。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME /promoteReplica?failover=ENABLE_REPLICA_FAILOVER
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME /promoteReplica?failover=ENABLE_REPLICA_FAILOVER "
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME /promoteReplica?failover=ENABLE_REPLICA_FAILOVER " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/REPLICA_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "PROMOTE_REPLICA",
"name": "OPERATION_ID ",
"targetId": "REPLICA_NAME ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID :主要執行個體和 DR 副本的專案 ID 或專案編號。 Google Cloud
REPLICA_NAME :DR 副本的名稱。
ENABLE_REPLICA_FAILOVER :設為 true
,即可使用副本容錯移轉。如果設為 false
,API 會使用一般 promoteReplica
方法,不會進行副本容錯移轉。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME /promoteReplica?failover=ENABLE_REPLICA_FAILOVER
如要傳送要求,請展開以下其中一個選項:
curl (Linux、macOS 或 Cloud Shell)
執行下列指令:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME /promoteReplica?failover=ENABLE_REPLICA_FAILOVER "
PowerShell (Windows)
執行下列指令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME /promoteReplica?failover=ENABLE_REPLICA_FAILOVER " | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
回應
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/REPLICA_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2024-04-01T22:43:37.981Z",
"operationType": "PROMOTE_REPLICA",
"name": "OPERATION_ID ",
"targetId": "REPLICA_NAME ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
檢查備用資源容錯移轉的狀態
備用資源容錯移轉作業分為兩個階段。第一階段是升級 DR 副本。
第二階段是將舊的主要執行個體重新建立為唯讀備用資源。
如要檢查備用資源容錯移轉的狀態,請檢查每個階段的狀態。
檢查第一階段的狀態。
控制台
如要確認 DR 副本是否已升級為獨立執行個體,請執行下列操作:
前往 Google Cloud 控制台的「Cloud SQL Instances」 頁面。
前往 Cloud SQL 執行個體
找出您升級的 DR 副本名稱。
確認新主要執行個體的「類型」 欄中顯示 PostgreSQL VERSION 。
gcloud
您可以執行下列指令來檢查狀態:
gcloud sql instances describe DR_REPLICA_NAME
請替換下列變數:
DR_REPLICA_NAME :升級的 DR 副本名稱
在輸出內容中,確認顯示下列欄位,且副本已成為獨立的 Cloud SQL 主要執行個體:
instanceType : CLOUD_SQL_INSTANCE
如要確認第二階段是否完成,請檢查執行個體上的作業記錄,確認是否出現 RECONFIGURE_OLD_PRIMARY
訊息。
這則訊息的顯示時間取決於舊的主要執行個體何時恢復連線,如果發生災害,可能需要幾分鐘或幾天。
如要進一步瞭解如何檢查執行個體的作業記錄,請參閱「查看執行個體記錄 」。
搭配進階 DR 使用 PITR
無論是切換或備用資源容錯移轉,只要將 DR 備用資源升級為主要執行個體,就會發生下列變更,以支援備份和 PITR:
備份設定 (包括任何自動備份排程) 會從舊的主要執行個體複製到新的主要執行個體。
無論是備份設定或交易記錄保留政策,我們都建議您確認從舊主執行個體沿用的設定,是否適用於新主執行個體。
時間點復原功能涵蓋範圍的開始時間
在切換作業結束時,Cloud SQL 會排定自動備份時間表,並備份新的主要執行個體。如要盡快開始使用 PITR 涵蓋範圍,建議您確認第一次備份是否成功。新升級的主要執行個體只 會在首次自動備份成功完成後,提供 PITR 涵蓋範圍。
如要進一步瞭解如何查看執行個體可用的備份資料,請參閱「查看備份資料清單 」。
切換和備用資源容錯移轉期間的執行個體 PITR 涵蓋範圍
執行個體參與切換或備用資源容錯移轉作業時,會有一段時間是唯讀備用資源。執行個體做為唯讀備用資源和主要執行個體期間,都支援時間點復原和還原備份。
您可以執行 PITR,將執行個體還原至切換前 (當時執行個體是主要執行個體)。無論是切換作業或備用資源容錯移轉作業,只要新的主要執行個體升級完成,Cloud SQL 就會立即啟動新的主要執行個體備份作業,但這項作業不保證一定會成功。只有在備份完成後,升級的執行個體才會啟用 PITR。備份作業最多可能需要 5 到 15 分鐘,實際情況需視磁碟大小而定。
備用資源容錯移轉期間發生核心分裂
如果主要執行個體在透過備用資源容錯移轉升級備用資源時,持續接受寫入作業,就可能發生腦裂。備用資源升級後,當舊的主要執行個體再次可用時,系統會將其重建為升級執行個體的備用資源,並進行最終備份。這個備份可用於復原未寫入升級副本的任何腦裂資料。
刪除副本上的備份和交易記錄
如果已啟用 PITR 和備份功能的主要執行個體成為唯讀副本,系統會保留該執行個體做為主要執行個體時的最後一次備份和 PITR 保留政策,並在該執行個體做為副本時套用。即使新的主要執行個體不會進行備份,系統仍會根據上次設定的政策,刪除唯讀備用資源上的舊備份和交易記錄,這些資料用於 PITR。
舉例來說,如果執行個體設定為每天自動備份,並保留 7 個備份檔和 7 天的 PITR 記錄,則當這個執行個體成為唯讀副本時,系統每天會刪除超過 7 天的資料。
如需提早刪除備份,可以手動移除備份。詳情請參閱「刪除備份 」。
限制
如果 Cloud SQL 執行個體使用 Private Service Connect,且 PROJECT_ID:INSTANCE_ID 長度為 64 個字元以上,則不支援切換。
疑難排解
問題
疑難排解
切換作業失敗。
檢查資料庫中的交易量。如果交易量很高,作業可能會逾時。交易負載較低時,請考慮重試作業。
切換作業失敗,主要執行個體仍卡在唯讀模式中。
重新啟動資料庫,讓主要執行個體恢復寫入模式。
切換作業已完成,但 Google Cloud 控制台未顯示執行個體的新反向角色。
重新整理瀏覽器,即可顯示更新後的拓撲。
備用資源容錯移轉作業失敗。
如果容錯移轉至 DR 備用資源失敗,請改為升級至一般 (非 DR) 唯讀備用資源。
後續步驟