本頁說明如何調查及偵錯 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
連線至叢集 VPC 中的 VM,請按照「執行 psql 用戶端」一節中的操作說明進行。如果這麼做,請提供節點的 IP 位址,而非讀取集區執行個體的 IP 位址:
psql -h NODE_IP_ADDRESS -U USERNAME
在記錄中尋找節點活動
AlloyDB 會在讀取集區處理的查詢相關記錄項目中,加入節點 ID。一般來說,您可以透過兩種方式使用這些探索到的 ID:
- 找出節點的 IP,以便連線至該節點。
- 執行進一步的記錄查詢,進一步瞭解節點的近期活動。
判斷哪個節點正在處理已知查詢
如果您知道特定讀取集區正在處理長時間執行的查詢,記錄檔探索器可協助您判斷處理該查詢的特定節點 ID。
請注意,這項技術僅適用於已啟用 pgAudit 擴充功能的讀取集區執行個體。
前往記錄檔探索工具:
在查詢建構工具中,將
resource.labels.instance_id="READ_POOL_ID"
新增至查詢編輯器欄位,並將 READ_POOL_ID 替換為讀取集區執行個體的名稱。將您要調查的完整或部分 SQL 陳述式新增至查詢編輯器欄位。例如:
select id from MyTable
。這項輸入內容不區分大小寫。點選「執行查詢」
使用 Log 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
新增至記錄檔瀏覽器查詢產生器,並將 NODE_ID 替換為節點的四字元 ID 字串。按一下「執行查詢」,即可查看所選時間範圍內該節點的所有活動,或調整查詢來進一步篩選。
視需要重複上一個步驟,進一步縮小搜尋範圍。
監控節點指標
您可以透過 AlloyDB 系統深入分析資訊主頁,查看與個別節點相關的指標。如要進一步瞭解可用的節點指標,請參閱系統洞察指標參考資料。
如要瞭解與特定讀取集區執行個體相關聯的節點 ID,請參閱「列出讀取集區節點的詳細資料」。
如需這些和其他 AlloyDB 指標的完整參考說明文件,請參閱「Google Cloud 指標」中的 alloydb
。
節點暫時性注意事項
雖然您可以安全地連線至節點,進行臨時調查或偵錯,但使用讀取集區的應用程式一律應在執行個體層級連線至這些集區,並使用叢集在執行個體清單中顯示的 IP 位址。
AlloyDB 會將讀取集區的節點視為可互換的暫時性資源。為確保讀取集區執行個體維持負載平衡並保持回應,服務會視需要變更讀取集區的節點名單。如果應用程式直接連線至讀取集區節點,而非讀取集區執行個體,AlloyDB 更新執行個體的節點名單時,應用程式可能會突然與資料庫中斷連線。
請務必讓應用程式在執行個體層級連線至讀取集區,並讓 AlloyDB 負責將查詢有效率地路由至適當的節點。
後續步驟
- 進一步瞭解如何使用記錄檢視器。