本頁說明如何為大型讀取工作負載建立及管理讀取集區。
事前準備
- 讀取集區包含主要執行個體的副本。如果尚未建立 Cloud SQL Enterprise Plus 版主要執行個體,請先建立。雖然讀取集區支援使用公開 IP、私人服務存取和 Private Service Connect 的連線,但為了本指南的目的,請建立具備私人 IP 連線的主要執行個體,並使用私人服務存取。
如要進一步瞭解主要執行個體和複製功能,請參閱「關於 Cloud SQL 中的複製功能」。
- 請注意,每個主要執行個體最多可建立 7 個唯讀備用資源。 這個值可以包含讀取副本的任何組合數量,以及讀取集區執行個體下的讀取集區節點計數。 舉例來說,主要執行個體可能會有兩個唯讀備用資源,以及五個唯讀備用資源 (讀取集區節點) 的獨立讀取集區。
- 建立新的 Cloud SQL 執行個體時,必須先設定預設使用者帳戶的密碼,才能連線至執行個體。如果是 SQL Server 適用的 Cloud SQL,預設使用者是
sqlserver。使用
gcloud sql users set-password指令,為預設使用者設定密碼,如下所示:gcloud sql users set-password sqlserver \ --instance=INSTANCE_NAME \ --prompt-for-password
執行指令前,請將 INSTANCE_NAME 替換為執行個體名稱。
請儲存這個密碼,稍後連線至讀取集區時會用到。
建立讀取集區
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
使用下列 gcloud sql instances create 指令建立具有多個讀取集區節點的讀取集區:
gcloud sql instances create READ_POOL_NAME \ --tier=TIER --edition=ENTERPRISE_PLUS \ --instance-type=READ_POOL_INSTANCE --node-count=NODE_COUNT \ --master-instance-name=PRIMARY_INSTANCE_NAME --no-assign-ip
請將下列項目改為對應的值:
- READ_POOL_NAME:您要用於讀取集區的名稱。
- TIER:要用於讀取集區中每個讀取集區節點的機器類型,例如
db-perf-optimized-N-4。 - NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。
選擇介於
1到7之間的數字。 - PRIMARY_INSTANCE_NAME:與讀取集區相關聯的主要執行個體名稱,例如
my-primary-instance。
Terraform
如要建立讀取集區,請使用 Terraform 資源。
然後將 instance_type 屬性設為 "READ_POOL_INSTANCE",並將 node_count 屬性設為要使用的節點數量。
下列範例包含主要執行個體和讀取集區的資源。
套用變更
如要在 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
使用執行個體資源的
insert 方法,建立具有多個讀取集區節點的讀取集區。databaseVersion 屬性必須與主要屬性相同。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:您希望主要執行個體和讀取集區所在的專案名稱。
- REGION:讀取集區的區域,例如
us-east1。 地區必須與主要執行個體相同。 - TIER:要用於讀取集區中每個讀取集區節點的機器類型,例如
db-perf-optimized-N-4。 - PRIMARY_INSTANCE_NAME:主要執行個體的名稱。
- READ_POOL_NAME:您要用於讀取集區的名稱,例如
my-read-pool。 - DATABASE_VERSION:您要使用的資料庫版本。
- NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到20之間的數字。 - FULL_NETWORK_NAME:要讓讀取集區所在的完整網路路徑,例如
projects/vpc-host-project/global/networks/my-network-name。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT/instances
JSON 要求主體:
{
"name": "READ_POOL_NAME",
"masterInstanceName": "PRIMARY_INSTANCE_NAME",
"project": "PROJECT",
"databaseVersion": "DATABASE_VERSION",
"region": "REGION",
"instanceType": "READ_POOL_INSTANCE",
"nodeCount": NODE_COUNT,
"settings": {
"tier": "TIER",
"edition": "ENTERPRISE_PLUS",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "FULL_NETWORK_NAME"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用執行個體資源的
insert 方法,建立具有多個讀取集區節點的讀取集區。databaseVersion 屬性必須與主要屬性相同。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:您希望主要執行個體和讀取集區所在的專案名稱。
- REGION:讀取集區的區域,例如
us-east1。 地區必須與主要執行個體相同。 - TIER:要用於讀取集區中每個讀取集區節點的機器類型,例如
db-perf-optimized-N-4。 - PRIMARY_INSTANCE_NAME:主要執行個體的名稱。
- READ_POOL_NAME:您要用於讀取集區的名稱,例如
my-read-pool。 - DATABASE_VERSION:您要使用的資料庫版本。
- NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到20之間的數字。 - FULL_NETWORK_NAME:要讓讀取集區所在的完整網路路徑,例如
projects/vpc-host-project/global/networks/my-network-name。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances
JSON 要求主體:
{
"name": "READ_POOL_NAME",
"masterInstanceName": "PRIMARY_INSTANCE_NAME",
"project": "PROJECT",
"databaseVersion": "DATABASE_VERSION",
"region": "REGION",
"instanceType": "READ_POOL_INSTANCE",
"nodeCount": NODE_COUNT,
"settings": {
"tier": "TIER",
"edition": "ENTERPRISE_PLUS",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "FULL_NETWORK_NAME"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
將唯讀副本轉換為讀取集區
您可以指定集區中的節點數量,將現有的 Cloud SQL Enterprise Plus 版本唯讀副本轉換為讀取集區。在轉換過程中,副本 IP 會變成讀取集區 IP (讀取端點),因此現有用戶端可以連線至集區,不必重新設定。
新建立的讀取集區節點會與原始唯讀備用資源使用相同的機器類型和設定。如要變更這個機型或設定,必須另外執行作業。這項操作僅支援可用區唯讀副本。SQL Server 適用的 Cloud SQL 不支援讀取備用資源的高可用性。
詳情請參閱「編輯讀取集區設定」。
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
使用下列 gcloud sql instances patch 指令,轉換唯讀副本以供唯讀集區使用:
gcloud sql instances patch READ_REPLICA_NAME \ --instance-type=READ_POOL_INSTANCE --node-count=NODE_COUNT
請將下列項目改為對應的值:
- READ_REPLICA_NAME:要轉換的唯讀副本名稱。
- NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到7之間的數字。
Terraform
如要將唯讀副本轉換為唯讀集區,請使用 Terraform 資源。資訊清單與您在「建立唯讀備用資源」中使用的資訊清單類似。 接著,完成下列步驟:
- 將
instance_type屬性從"READ_REPLICA_INSTANCE"變更為"READ_POOL_INSTANCE",並將node_count屬性變更為要使用的節點數量。 - 如果先前已設定,請清除
settings.availability_type屬性。
REST v1
使用執行個體資源的
patch 方法,將唯讀副本轉換為唯讀集區。
使用任何要求資料之前,請先修改下列項目的值:
- READ_REPLICA_NAME:要轉換的唯讀副本名稱,例如
my-read-replica。 - NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到20之間的數字。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_REPLICA_NAME
JSON 要求主體:
{
"instanceType": "READ_POOL_INSTANCE",
"nodeCount": NODE_COUNT
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用執行個體資源的
patch 方法,將唯讀副本轉換為唯讀集區。
使用任何要求資料之前,請先修改下列項目的值:
- READ_REPLICA_NAME:要轉換的唯讀副本名稱,例如
my-read-replica。 - NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到20之間的數字。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_REPLICA_NAME
JSON 要求主體:
{
"instanceType": "READ_POOL_INSTANCE",
"nodeCount": NODE_COUNT
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
將讀取集區轉換為唯讀副本
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
使用下列 gcloud sql instances patch 指令,轉換唯讀副本以供唯讀集區使用:
gcloud sql instances patch READ_POOL_NAME \ --instance-type=READ_REPLICA_INSTANCE --availability-type=ZONAL
請將下列項目改為對應的值:
- READ_POOL_NAME:要轉換的讀取集區名稱。
Terraform
如要將讀取集區轉換為唯讀副本,請使用 Terraform 資源。
資訊清單與「建立讀取集區」中使用的資訊清單類似。
然後將 instance_type 屬性從 "READ_POOL_INSTANCE" 變更為 "READ_REPLICA_INSTANCE",清除 node_count 屬性,並將 settings.availability_type 屬性設為 ZONAL。
REST v1
使用執行個體資源的
patch 方法,將唯讀集區轉換為唯讀副本。
使用任何要求資料之前,請先修改下列項目的值:
- READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME
JSON 要求主體:
{
"instanceType": "READ_REPLICA_INSTANCE",
"settings": {
"availabilityType": "ZONAL"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用執行個體資源的
patch 方法,將唯讀集區轉換為唯讀副本。
使用任何要求資料之前,請先修改下列項目的值:
- READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME
JSON 要求主體:
{
"instanceType": "READ_REPLICA_INSTANCE",
"settings": {
"availabilityType": "ZONAL"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
查看讀取集區資訊
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
使用下列 gcloud sql instances describe 指令說明讀取集區:
gcloud sql instances describe READ_POOL_NAME
請將下列項目改為對應的值:
- READ_POOL_NAME:要說明的讀取集區名稱。
以下是包含 IP 位址和節點資訊的回應範例:
... connectionName: my-project:us-central1:read-pool ipAddresses: - ipAddress: 10.3.0.108 type: PRIVATE nodeCount: 2 nodes: - dnsName: c5bdacb09ffc.j10o8yqc7pve.us-central1.sql.goog. gceZone: us-central1-f ipAddresses: - ipAddress: 10.3.0.112 type: PRIVATE name: read-pool-node-01 state: RUNNABLE - dnsName: 8f77c454d6b2.j10o8yqc7pve.us-central1.sql.goog. gceZone: us-central1-c ipAddresses: - ipAddress: 10.3.0.113 type: PRIVATE name: read-pool-node-02 state: RUNNABLE
REST v1
使用
get 方法查看讀取集區詳細資料。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用
get 方法查看讀取集區詳細資料。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
[...],
"connectionName": "my-project:us-central1:read-pool",
"ipAddresses": [
{
"type": "PRIVATE",
"ipAddress": "10.3.0.108"
}
],
"nodeCount": 2,
"nodes": [
{
"ipAddresses": [
{
"type": "PRIVATE",
"ipAddress": "10.3.0.112"
}
],
"name": "read-pool-node-01",
"gceZone": "us-central1-f",
"dnsName": "c5bdacb09ffc.j10o8yqc7pve.us-central1.sql.goog.",
"state": "RUNNABLE"
},
{
"ipAddresses": [
{
"type": "PRIVATE",
"ipAddress": "10.3.0.113"
}
],
"name": "read-pool-node-02",
"gceZone": "us-central1-c",
"dnsName": "8f77c454d6b2.j10o8yqc7pve.us-central1.sql.goog.",
"state": "RUNNABLE"
}
]
}
新增或移除讀取集區節點
如要擴大或縮小讀取集區,請按照下列步驟修改讀取集區中的讀取集區節點數量。使用上可能受到某些限制,詳情請參閱「讀取集區限制」。
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
使用下列 gcloud sql instances patch 指令擴充讀取集區:
gcloud sql instances patch READ_POOL_NAME \ --node-count=NODE_COUNT
請將下列項目改為對應的值:
- READ_POOL_NAME:讀取集區的名稱。
- NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到7之間的數字。
Terraform
如要變更讀取集區節點數,請更新現有的 Terraform 資源。資訊清單與「建立讀取集區」中使用的資訊清單類似。
然後將 node_count 屬性變更為要使用的節點數量。
REST v1
使用
patch 方法,修改讀取集區中的讀取集區節點數量,以調度讀取集區。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到20之間的數字。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME
JSON 要求主體:
{
"nodeCount": NODE_COUNT
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用
patch 方法,修改讀取集區中的讀取集區節點數量,以調度讀取集區。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- NODE_COUNT:您要在讀取集區中使用的讀取集區節點數量。選擇介於
1到20之間的數字。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME
JSON 要求主體:
{
"nodeCount": NODE_COUNT
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
編輯讀取集區設定
下列步驟說明如何編輯讀取集區設定。如需更多詳細資訊,請參閱「關於執行個體設定」和「編輯執行個體」。
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
使用下列 gcloud sql instances patch 指令垂直擴充讀取集區,例如修改機型:
gcloud sql instances patch READ_POOL_NAME \ --tier=TIER
請將下列項目改為對應的值:
- READ_POOL_NAME:讀取集區的名稱。
- TIER:要套用至讀取集區中每個讀取集區節點的機器類型,例如
db-perf-optimized-N-8。
Terraform
如要編輯讀取集區設定,請更新現有的 Terraform 資源。資訊清單與「建立讀取集區」中使用的資訊清單類似。
然後在 settings 欄位中更新要變更的屬性。舉例來說,將 settings.tier 屬性變更為其他機型。
REST v1
使用
patch 方法修改唯讀集區節點設定。設定會統一套用至讀取集區中的所有讀取集區節點。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- TIER:要用於讀取集區中每個讀取集區節點的機器類型,例如
db-perf-optimized-N-4。 - READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME
JSON 要求主體:
{
"settings": {
"tier": "TIER"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用
patch 方法修改唯讀集區節點設定。設定會統一套用至讀取集區中的所有讀取集區節點。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- TIER:要用於讀取集區中每個讀取集區節點的機器類型,例如
db-perf-optimized-N-4。 - READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME
JSON 要求主體:
{
"settings": {
"tier": "TIER"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
連線至讀取集區
連線至讀取集區的方法有很多種,下列步驟說明其中一種方法,也就是在同一個 VPC 網路中建立 VM,做為連線來源,藉此連線至具有私人 IP 位址的讀取集區。
如要進一步瞭解如何設定 Cloud SQL 執行個體的連線,請參閱「關於 Cloud SQL 連線」。如「查看讀取集區資訊」一文所述,連線方式通常需要您先取得執行個體的 IP 位址或連線名稱。讀取集區支援其他 Cloud SQL 執行個體的大部分連線方法,但有一些限制。
如果使用 Cloud SQL Auth Proxy 或 Cloud SQL 連接器連線,請務必更新至最新版本。如要支援讀取集區,最低版本需求如下:
- Cloud SQL 驗證 Proxy:v2.15.2
- Cloud SQL Python 連接器:v1.18.0
- Cloud SQL Go 連接器:v1.16.0
- Cloud SQL Node 連接器:1.7.0 版
- Cloud SQL Java 連接器:v1.24.0
控制台
如要連線至讀取集區,請完成下列步驟:
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
系統會將您帶往執行個體「總覽」頁面。 按一下新的讀取集區,即可查看詳細資料,包括私有 IP 位址。在「連線至這個執行個體」部分,複製並儲存執行個體的「連線名稱」。connection name的格式為projectID:region:instanceID。您稍後啟動 Cloud SQL 驗證 Proxy 時,會用到這個connection name。 - 建立 Compute Engine VM。
- 開啟兩個與 Compute Engine VM 的 SSH 連線。後續步驟會使用這些值執行 Cloud SQL Auth Proxy 和資料庫用戶端。
- 安裝用戶端。
- 安裝 Cloud SQL 驗證 Proxy。
- 啟動 Cloud SQL 驗證 Proxy。
- 連線至 Cloud SQL 執行個體。
刪除讀取集區
gcloud
如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。
使用下列 gcloud sql instances delete 指令刪除讀取集區:
gcloud sql instances delete READ_POOL_NAME
請將下列項目改為對應的值:
- READ_POOL_NAME:要刪除的讀取集區名稱。
REST v1
使用
delete 方法刪除讀取集區。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT/instances/READ_POOL_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用
delete 方法刪除讀取集區。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT:讀取集區所在的專案名稱。
- READ_POOL_NAME:讀取集區的名稱,例如
my-read-pool。
HTTP 方法和網址:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT/instances/READ_POOL_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆: