Cloud SQL 讀取集區支援負載平衡,可處理大型讀取工作負載。
什麼是讀取集區?
讀取集區是唯讀副本執行個體的集合,用於分配大型讀取工作負載。這些工作負載可以從主要執行個體重新導向至讀取集區,減輕主要執行個體的負載。
讀取集區中的每個唯讀副本稱為「讀取集區節點」。
您可以透過多種方式調度讀取集區資源:
- 向內或向外擴充:修改讀取集區中的讀取集區節點數量,水平擴充負載平衡能力。每個讀取集區支援 1 到 20 個讀取集區節點。
- 擴充或縮減資源:修改與讀取集區節點相關聯的機器類型,垂直擴充負載平衡容量。定義完成後,設定會統一套用至讀取集區中的每個讀取集區節點。
修改讀取集區節點設定 (例如儲存空間、連線能力或資料庫設定旗標) 時,變更會自動套用至讀取集區中的每個讀取集區節點。
透過單一讀取端點存取讀取集區
讀取集區可透過單一讀取端點存取,且 IP 位址不可變更。透過端點建立的連線會自動重新導向至其中一個讀取集區節點。當您要縮減或擴充讀取集區時,先前連線至這個單一讀取端點的應用程式不需要重新設定,即使您可以在讀取集區中建立新的讀取集區節點或刪除先前的節點,也是如此。
每個讀取集區節點也都有自己的 IP 位址。雖然不建議將其做為存取資料的高效方法,但您可以使用這些 IP 位址,排解個別讀取集區節點的效能問題。
如要進一步瞭解如何擷取讀取集區或讀取集區節點的連線資訊 (IP 位址或連線字串),請參閱「查看讀取集區資訊」。
讀取集區自動調度資源
您可以設定讀取集區,自動調整大小,因應應用程式工作負載需求的變化。詳情請參閱「讀取集區自動調度資源」。
讀取集區特性
適用下列特性:
- 讀取集區沒有 Cloud SQL 支援的專屬 API。如要建立、設定或查看讀取集區,請使用 Cloud SQL 執行個體 API。
舉例來說,使用
gcloud CLI建立讀取集區時,請使用gcloud sql instances create指令。同樣地,如要查看讀取集區中設定的讀取集區節點數量,請使用gcloud sql instances describe指令。 - 具有兩個以上節點的讀取集區,適用於服務水準協議 (SLA)。
- 讀取集區的讀取集區節點一律位於使用者指定的相同區域。 Google Cloud 會輪流將讀取集區節點存放在該區域的所有可用區。
- 主要執行個體可以有一或多個讀取集區。
- 下列作業會導致不到一秒的停機時間:
- 向外或向內水平擴展 (新增或移除讀取集區節點)。
- 向上或向下擴充 (變更集區中節點的機器類型)。
- 將現有的可用區唯讀副本轉換為讀取集區。
- 讀取集區會比主要執行個體先進行維護,與唯讀副本類似。與唯讀副本一樣,讀取集區會在主要執行個體的維護期間進行維護。
- 每個讀取集區節點都有與 Cloud SQL 唯讀副本相同的指標。
- 使用
gcloud或 Google Cloud 控制台描述專案詳細資料時,系統會列出讀取集區名稱,但不會列出個別讀取集區節點名稱。
限制
限制如下:
- 讀取集區僅適用於新網路架構上的 Cloud SQL Enterprise Plus 版本執行個體。與讀取集區相關聯的主要執行個體也必須是 Cloud SQL Enterprise Plus 版本執行個體。
- 系統會根據資料庫是否健康,從讀取集區節點提供流量,但不會考量該讀取集區節點的複製延遲時間有多長。即使有其他未延遲的讀取集區節點可用,系統仍可能從延遲的讀取集區節點提供流量。如果資料庫程序正常運作且可回應查詢,則資料庫會視為健康,但對提供的資料新舊程度沒有要求。
- 不保證單一邏輯工作階段會連線至讀取集區中的多個讀取集區節點。工作階段中後續的要求,可能會連線至複製位置 (GTID) 低於先前要求所用節點的唯讀集區節點,導致資料庫狀態看起來像是回到過去。
- 不支援下列更新類型:
- 雖然讀取集區仍會收到 Cloud SQL 維護更新,但您無法將讀取集區更新至新的主要或次要資料庫版本。
- 啟動或停止讀取集區的節點。
- 除了唯讀副本不支援的操作之外,讀取集區也不支援下列操作:
- 啟用及停用複製功能
- 升級備用資源
- 重新啟動
- 匯入
- 匯出
- 容錯移轉
- 重新加密
- 複製
- 共用 CA 或客戶自行管理的 CA 簽發的 SSL/TLS 憑證,無法與讀取集區搭配使用。
- 讀取集區無法複製到其他執行個體,例如串連副本或其他讀取集區。
- 讀取集區必須直接從主要執行個體複製資料。不能是串聯式副本。
- 如要將區域性唯讀副本轉換為讀取集區,必須先將區域性唯讀副本轉換為可用區唯讀副本。
- 建立或擴充讀取集區時,必須等待與讀取集區相關聯的先前建立集區、縮減或水平擴展作業完成。這項限制適用於與同一個主要執行個體相關聯的其他讀取集區。如要擴充與同一個主要執行個體相關聯的多個讀取集區,請先等待與第一個讀取集區相關聯的擴充作業完成,再開始擴充下一個讀取集區。如果發出並行要求,可能會收到下列錯誤:
Operation failed because another operation was already in progress.。 - 只有與主要執行個體位於相同區域的可用區副本,才能轉換為讀取集區。
- 如果應用程式必須連線至專屬唯讀副本 (例如特定唯讀副本上有次要索引),請建立 Cloud SQL 唯讀副本並改用該副本。