如要調查 AlloyDB for PostgreSQL 轉送至讀取集區執行個體的查詢並進行偵錯,可以使用下列診斷技術:
- 查看讀取集區組成節點的詳細清單,包括 IP 位址。
- 直接連線至個別讀取集區節點,以便偵錯。
- 檢查 AlloyDB 記錄,找出處理特定查詢的節點。
- 查詢記錄,找出特定讀取集區節點的所有近期活動。
- 查看與讀取集區節點相關聯的 Google Cloud 指標。
搭配使用這些技術,您就能存取讀取集區,進行診斷和偵錯。舉例來說,如果叢集的其中一個讀取集區在處理長時間執行的查詢時,使用異常大量的 CPU,您可以使用這些技術判斷哪個節點正在處理該查詢,然後直接連線至該節點,進一步檢查或終止查詢。
列出讀取集區節點的詳細資料
在正常使用 AlloyDB 的情況下,您不需要知道構成讀取集區的節點身分或位址。不過,您可以在必要時查看讀取集區執行個體的節點清單。每個列出的節點都包含下列資訊,有助於後續診斷和偵錯:
節點的 Google Cloud ID 字串,用於執行記錄查詢,瞭解該節點的近期活動。
節點在叢集虛擬私有雲 (VPC) 中的 IP 位址,可用於直接連線至該節點的 PostgreSQL 伺服器。
如要查看讀取集區節點的內部 ID 字串和 IP 位址,請按照查看執行個體詳細資料中的 gcloud 專屬操作說明操作,但請新增額外的 --view=FULL 指令列引數:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULL更改下列內容:
- READ_POOL_ID:讀取集區的 ID。
- REGION_ID:執行個體的區域 ID。
- CLUSTER_ID:執行個體叢集的 ID。
- PROJECT_ID:執行個體專案的 ID。
輸出內容包含標示為 nodes 的部分,如下所示:
nodes:
- id: READ_POOL_INSTANCE_ID-edd4f6ed-hcfh
ip: 10.90.80.57
state: HEALTHY
zoneId: us-central1-b
- id: READ_POOL_INSTANCE_ID-edd4f6ed-ldbm
ip: 10.90.80.56
state: HEALTHY
zoneId: us-central1-c每個項目的 id 和 ip 欄位與本頁所述的其他技術特別相關:
ip欄位會顯示節點在叢集虛擬私有雲網路中的 IP 位址。id欄位包含節點的完整 Google Cloud ID 字串。節點的記錄項目只會顯示這個字串的最後四個字元。舉例來說,如要尋找涉及前述範例輸出中兩個節點中第一個節點的記錄項目,請使用 ID 字串
hcfh查詢記錄。
直接連線至節點
知道節點的 IP 位址後,即可直接連線至其 PostgreSQL 伺服器。舉例來說,如要使用 psql 連線至叢集虛擬私有雲網路中的 VM,請按照「執行 psql 用戶端」中的操作說明進行。請提供節點的 IP 位址,而非讀取集區執行個體的 IP 位址:
psql -h NODE_IP_ADDRESS -U USERNAME在記錄中查看節點活動
AlloyDB 會在記錄項目中,加入讀取集區處理的查詢相關節點 ID。一般來說,您可以透過兩種方式使用這些探索到的 ID:
- 判斷該節點的 IP,以便連線。
- 執行進一步的記錄查詢,深入瞭解節點的近期活動。
判斷哪個節點正在處理已知查詢
如果您知道某個讀取集區正在處理長時間執行的查詢,可以使用 Logs Explorer 找出處理該查詢的特定節點 ID。
請注意,這項技術僅適用於已啟用 pgAudit 擴充功能的讀取集區執行個體。
前往記錄檔探索工具:
在查詢建立工具中,將
resource.labels.instance_id="READ_POOL_ID"新增至查詢編輯器欄位,並將 READ_POOL_ID 替換為讀取集區執行個體的名稱。在查詢編輯器欄位中,新增要調查的 SQL 陳述式 (完整或部分)。例如:
select id from MyTable。這個輸入內容不區分大小寫。點選「執行查詢」。
視需要使用 Logs Explorer 控制項調整及重新執行查詢,篩選出最相關的結果。
在結果清單中,按一下記錄項目即可展開顯示。
在項目的展開顯示畫面中,按一下「
labels」欄位。記下
labels下方的NODE_ID值。
結果會是處理查詢的節點四字元 ID。
連線至記錄項目中提及的節點
如要根據記錄的活動,直接連線至特定節點的 PostgreSQL 伺服器,請按照下列步驟操作:
記下登入節點的四字元 ID 字串。您可以在記錄項目的
NODE_ID欄位中找到這個 ID。在清單中,找出 ID 字串結尾為您在第一個步驟中記下的四個字元的節點。列出的節點可能都不符合。
如果找到相符的節點,請使用相符的 IP 位址連線至該節點的 PostgreSQL 伺服器。
否則,如果上一個步驟列出的讀取集區節點中,沒有任何節點的 ID 與記錄的節點相符,則讀取集區已在原始記錄項目之後的時間內停用該節點。這是 AlloyDB 讀取集區的正常行為,詳情請參閱「節點臨時性注意事項」一節。在這種情況下,您無法與該節點建立直接連線。
連線至節點的 PostgreSQL 伺服器後,您可以使用標準 PostgreSQL 監控技術 (例如 pg_stat_activity) 進一步調查節點目前的程序,並視需要調整。
查看節點的更多記錄項目
如要查看特定 ID 節點的近期活動記錄,請按照下列步驟操作:
前往記錄檔探索工具:
將
labels.NODE_ID=NODE_ID新增至 Logs Explorer 查詢建立工具,並將 NODE_ID 替換為節點的四個字元 ID 字串。按一下「Run Query」(執行查詢),即可查看該節點在所選時間範圍內的所有活動,或調整查詢進一步篩選。
視需要重複上述步驟,進一步縮小搜尋範圍。
監控節點指標
您可以在 AlloyDB 系統深入分析資訊主頁,查看與個別節點相關聯的指標。如要進一步瞭解可用的節點指標,請參閱「系統深入分析指標參考資料」。
如要瞭解哪些節點 ID 與特定讀取集區執行個體相關聯,請參閱「列出讀取集區節點的詳細資料」。
如需這些和其他 AlloyDB 指標的完整參考文件,請參閱「Google Cloud 指標」中的 alloydb。
節點暫時性注意事項
雖然您可以安全地連線至節點,進行臨時調查或偵錯,但使用讀取集區的應用程式應一律在執行個體層級連線至這些集區,並使用叢集在執行個體清單中顯示的 IP 位址。
AlloyDB 會將讀取集區的節點視為暫時性、可互換的資源。服務會視需要經常變更讀取集區的節點名單,以維持該讀取集區執行個體的負載平衡和回應能力。如果應用程式直接連至讀取集區節點,而非讀取集區執行個體,則每當 AlloyDB 更新執行個體的節點名單時,應用程式可能會突然與資料庫中斷連線。
請一律讓應用程式在執行個體層級連線至讀取集區,並讓 AlloyDB 有效率地將查詢轉送至適當的節點。
後續步驟
- 進一步瞭解如何使用記錄檔探索工具。