

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# aurora\$1replica\$1status
<a name="aurora_replica_status"></a>

顯示所有 Aurora PostgreSQL 讀取器節點的狀態。

## 語法
<a name="aurora_replica_status-syntax"></a>

 

```
aurora_replica_status()
```

## 引數
<a name="aurora_replica_status-arguments"></a>

無

## 傳回類型
<a name="aurora_replica_status-return-type"></a>

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\$1xmin。資料庫執行個體所使用的最小 (最舊) 作用中交易 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`：叢集中每個節點的 Aurora 儲存常駐程式 CPU 用量。如需有關執行個體 CPU 用量的資訊，請參閱 [Amazon Aurora 的執行個體層級指標](Aurora.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances)。

## 使用須知
<a name="aurora_replica_status-usage-notes"></a>

所有目前可用的 Aurora PostgreSQL 版本都支援此功能。`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 進行複寫](Aurora.Replication.md) 所述。其顯示於此函數傳回結果中的 `replica_lag_in_msec` 欄中。由於與備用伺服器上的復原衝突而取消查詢時，也可能會發生延遲。您可檢查 `pg_stat_database_conflicts()`，以驗證此類衝突是否造成複本延遲。如需相關資訊，請參閱 *PostgreSQL 文件*中的[統計數字收集器](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-CONFLICTS-VIEW)。如要進一步了解有關高可用性和複寫的資訊，請參 [Amazon Aurora 常見問答集](https://aws.amazon.com/rds/aurora/faqs/#High_Availability_and_Replication)。

  Amazon CloudWatch 隨時間將 `replica_lag_in_msec` 結果儲存為 `AuroraReplicaLag` 指標。如需使用 Aurora 的 CloudWatch 指標相關資訊，請參閱 [使用 Amazon CloudWatch 監控 Amazon Aurora 指標](monitoring-cloudwatch.md)。

若要進一步了解 Aurora 僅供讀取複本和重新啟動的疑難排解相關資訊，請參閱 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)中的[為什麼我的 Amazon Aurora 僅供讀取複本落後且重新啟動？](https://aws.amazon.com/premiumsupport/knowledge-center/aurora-read-replica-restart/)。

## 範例
<a name="aurora_replica_status-examples"></a>

下列範例顯示如何獲取 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)
```