本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
aurora_replica_status
顯示所有 Aurora PostgreSQL 讀取器節點的狀態。
語法
aurora_replica_status()
引數
無
傳回類型
SETOF 記錄,包含下列欄:
server_id
– 資料庫執行個體 ID (識別符)。session_id
– 目前工作階段的唯一識別符,如下所示,為主要執行個體和讀取器執行個體傳回:-
若為主要執行個體,
session_id
一律為`MASTER_SESSION_ID’
。 若為讀取器執行個體,
session_id
一律為讀取器執行個體的UUID
(通用唯一識別符)。
-
durable_lsn
– 已儲存於儲存體中的日誌序號 (LSN)。若為主磁碟區,目前作用中的主磁碟區耐用性 LSN (VDL)。
若為任何次要磁碟區,次要已成功套用至之主要的 VDL。
注意
記錄序號 (LSN) 是一組獨特的序號,可用來識別資料庫交易日誌中的記錄。LSN 依順序排列,LSN 越大,就表示交易發生時間越後面。
highest_lsn_rcvd
– 資料庫執行個體從寫入器資料庫執行個體接收的最高 (最新) LSN。current_read_lsn
– 套用至所有讀取器之最新快照的 LSN。cur_replay_latency_in_usec
– 預期在次要設備上重播日誌所需的微秒數。active_txns
– 目前作用中交易的數目。is_current
– 未使用。last_transport_error
– 上次複寫錯誤代碼。last_error_timestamp
– 上次複寫錯誤的時間戳記。last_update_timestamp
– 上次更新複本狀態的時間戳記。從 Aurora PostgreSQL 13.9 開始,您連線的資料庫執行個體的last_update_timestamp
值會設定為NULL
。feedback_xmin
– 複本的熱待命 feedback_xmin。資料庫執行個體所使用的最小 (最舊) 作用中交易 ID。feedback_epoch
– 資料庫執行個體產生熱待命資訊時所使用的 epoch。replica_lag_in_msec
– 讀取器執行個體延遲於寫入器執行個體的時間 (以毫秒為單位)。log_stream_speed_in_kib_per_second
– 日誌串流輸送量 (以 KB/秒為單位)。log_buffer_sequence_number
– 日誌緩衝區序列號。oldest_read_view_trx_id
– 未使用。oldest_read_view_lsn
– 資料庫執行個體從儲存體中讀取資料時所使用的最舊 LSN。pending_read_ios
– 複本上仍處於待命狀態的未完成頁面讀取。read_ios
– 複本上的頁面讀取總數。iops
– 未使用。cpu
– 複本程序的 CPU 用量。請注意,這不是執行個體的 CPU 用量,而是程序。如需有關執行個體 CPU 用量的資訊,請參閱 Amazon Aurora 的執行個體層級指標。
使用須知
aurora_replica_status
函數會從 Aurora PostgreSQL 資料庫叢集的複本狀態管理器傳回值。您可使用此函數以獲取有關 Aurora PostgreSQL 資料庫叢集上複寫狀態的資訊,包括 Aurora 資料庫叢集中所有資料庫執行個體的指標。例如,您可以執行下列動作:
取得有關 Aurora PostgreSQL 資料庫叢集中執行個體類型 (寫入器、讀取器) 的資訊 – 您可檢查下列欄的值以取得此資訊:
server_id
– 包含您在建立執行個體時指定的執行個體名稱。在某些情況下,例如對於主 (寫入器) 執行個體,該名稱通常是將 -instance-1 附加至您為 Aurora PostgreSQL 資料庫叢集建立的名稱來建立的。session_id
–session_id
欄位指出執行個體是讀取器還是寫入器。若為寫入器執行個體,session_id
一律設定為"MASTER_SESSION_ID"
。若為讀取器執行個體,session_id
設定為特定讀取器的UUID
。
診斷常見複寫問題,如複本延遲 - 複本延遲是讀取器執行個體頁面快取落後於寫入器執行個體頁面快取的時間 (以毫秒為單位)。出現此延遲的原因是 Aurora 叢集使用非同步複寫,如 以 Amazon Aurora 進行複寫 所述。其顯示於此函數傳回結果中的
replica_lag_in_msec
欄中。由於與備用伺服器上的復原衝突而取消查詢時,也可能會發生延遲。您可檢查pg_stat_database_conflicts()
,以驗證此類衝突是否造成複本延遲。如需相關資訊,請參閱 PostgreSQL 文件中的統計數字收集器。如要進一步了解有關高可用性和複寫的資訊,請參 Amazon Aurora 常見問答集 。 Amazon CloudWatch 隨時間將
replica_lag_in_msec
結果儲存為AuroraReplicaLag
指標。如需使用 Aurora 的 CloudWatch 指標相關資訊,請參閱 使用 監控 RDS Amazon Aurora 指標 CloudWatch。
若要進一步了解 Aurora 僅供讀取複本和重新啟動的疑難排解相關資訊,請參閱 AWS Support 中心
範例
下列範例顯示如何獲取 Aurora PostgreSQL 資料庫叢集中所有執行個體的複寫狀態:
=>
SELECT * FROM aurora_replica_status();
下列範例顯示 docs-lab-apg-main
Aurora PostgreSQL 資料庫叢集中的寫入器執行個體:
=>
SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role FROM aurora_replica_status() WHERE session_id = 'MASTER_SESSION_ID';
server_id | instance_role ------------------------+--------------- db-119-001-instance-01 | writer
下列範例會列出叢集中的所有讀取器執行個體:
=>
SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role FROM aurora_replica_status() WHERE session_id <> 'MASTER_SESSION_ID';
server_id | instance_role ------------------------+--------------- db-119-001-instance-02 | reader db-119-001-instance-03 | reader db-119-001-instance-04 | reader db-119-001-instance-05 | reader (4 rows)
下列範例列出了所有執行個體、每個執行個體落後於寫入器的延遲距離,及自上次更新以來的時間:
=>
SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role, replica_lag_in_msec AS replica_lag_ms, round(extract (epoch FROM (SELECT age(clock_timestamp(), last_update_timestamp))) * 1000) AS last_update_age_ms FROM aurora_replica_status() ORDER BY replica_lag_in_msec NULLS FIRST;
server_id | instance_role | replica_lag_ms | last_update_age_ms ------------------------+---------------+----------------+-------------------- db-124-001-instance-03 | writer | [NULL] | 1756 db-124-001-instance-01 | reader | 13 | 1756 db-124-001-instance-02 | reader | 13 | 1756 (3 rows)