

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

# 擷取複本中的 Aurora PostgreSQL 執行計畫
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas"></a>

QPM (查詢計畫管理) 可讓您擷取 Aurora 複本產生的查詢計畫，並將其儲存在 Aurora 資料庫叢集的主要資料庫執行個體上。您可以從所有 Aurora 複本收集查詢計畫，並在主要執行個體的中央永久性資料表中維護一組最佳計畫。然後，您可以在需要時將這些計畫套用至其他複本。這可協助您維護執行計畫的穩定性，並改善資料庫叢集和引擎版本的查詢效能。

**Topics**
+ [

## 先決條件
](#AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq)
+ [

## 管理 Aurora 複本的計畫擷取
](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing)
+ [

## 故障診斷
](#AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting)

## 先決條件
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq"></a>

**在 Aurora 複本中開啟 `capture_plan_baselines parameter`** - 將 `capture_plan_baselines` 參數設定為自動或手動，以在 Aurora 複本中擷取計畫。如需更多詳細資訊，請參閱 [apg\$1plan\$1mgmt.capture\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines)。

**安裝 postgres\$1fdw 擴充功能** - 您必須安裝 `postgres_fdw` 外部資料包裝函式，才能在 Aurora 複本中擷取計畫。在每個資料庫中執行下列命令，以安裝擴充功能。

```
postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;
```

## 管理 Aurora 複本的計畫擷取
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.managing"></a>

**開啟 Aurora 複本的計畫擷取**  
您必須擁有在 Aurora 複本中建立或移除計畫擷取的 `rds_superuser` 權限。如需有關使用者角色和權限的詳細資訊，請參閱[了解 PostgreSQL 角色和權限](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Roles.html)。

若要擷取計畫，請在寫入器資料庫執行個體中呼叫函數 apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture，如下所示：

```
postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('endpoint', 'password');
```
+ 端點：Aurora 全球資料庫寫入器端點或 cluster\$1endpoint 為 Aurora 複本中的計劃擷取提供容錯移轉支援。

  如需 Aurora 全球資料庫寫入器端點的詳細資訊，請參閱[檢視 Amazon Aurora 全域資料庫的端點](aurora-global-database-connecting.md#viewing-endpoints)。

  如需叢集端點的詳細資訊，請參閱 [Amazon Aurora 的叢集端點](Aurora.Endpoints.Cluster.md)。
+ 密碼 - 我們建議您在建立密碼時遵循以下準則以增強安全性：
  + 必須包含至少 8 個字元。
  + 至少須包含一個大寫字母、一個小寫字母和一個數字。
  + 必須至少有一個特殊字元 (`?`、`!`、`#`、`<`、`>`、`*` 等等)。

**注意**  
如果您變更端點、密碼或連接埠號碼，則必須使用端點和密碼再次執行 `apg_plan_mgmt.create_replica_plan_capture()`，以重新初始化計劃擷取。如果沒有，從 Aurora 複本擷取計畫將會失敗。

**關閉 Aurora 複本的計畫擷取**  
您可以在 Aurora 複本中關閉 `capture_plan_baselines` 參數，方法是在「參數」群組中將其值設定為 `off`。

**移除 Aurora 複本的計畫擷取**  
您可以完全移除 Aurora 複本中的計畫擷取，但在執行之前請務必先確定。若要移除計畫擷取，請呼叫 `apg_plan_mgmt.remove_replica_plan_capture`，如下所示：

```
postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();
```

您必須再次呼叫 apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture()，以使用端點和密碼在 Aurora 複本中開啟計劃擷取。

## 故障診斷
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting"></a>

接下來，如果 Aurora 複本未按預期擷取計畫，您可以找到疑難排解的概念和解決方法。
+ **參數設定** - 檢查 `capture_plan_baselines` 參數是否設定為適當的值以開啟計畫擷取。
+ **`postgres_fdw` 擴充功能已安裝** - 使用以下查詢來檢查 `postgres_fdw` 是否已安裝。

  ```
  postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  ```
+ **呼叫 create\$1replica\$1plan\$1capture()** - 使用下列命令來檢查使用者映射是否存在。否則，請呼叫 `create_replica_plan_capture()` 以初始化功能。

  ```
  postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **端點和連接埠號碼**：檢查端點和連接埠號碼是否適用。如果這些值不正確，將不會顯示任何錯誤訊息。

  使用以下命令來驗證是否在 create() 中是否使用了端點，並檢查它駐留在哪個資料庫中：

  ```
  postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **reload()** - 在 Aurora 複本中呼叫 apg\$1plan\$1mgmt.delete\$1plan() 後，必須呼叫 apg\$1plan\$1mgmt.reload() 才能使刪除函數生效。這樣可確保變更已成功實施。
+ **密碼** - 您必須依照上述指南在 create\$1replica\$1plan\$1capture() 中輸入密碼。否則，您將收到錯誤訊息。如需詳細資訊，請參閱 [管理 Aurora 複本的計畫擷取](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing)。使用符合要求的另一個密碼。
+ **跨區域連線** - Aurora 全球資料庫也支援 Aurora 複本中的計畫擷取，其中寫入器執行個體和 Aurora 複本可以位於不同的區域。確保您使用 Aurora 全球資料庫寫入器端點，在容錯移轉或轉換事件後維持連線能力。如需 Aurora 全球資料庫端點的詳細資訊，請參閱[檢視 Amazon Aurora 全球資料庫的端點](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-connecting.html#viewing-endpoints)。寫入器執行個體和跨區域複本必須能夠使用 VPC 對等互連進行通訊。如需詳細資訊，請參閱 [VPC 對等互連](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)。如果發生跨區域容錯移轉，您必須將端點重新設定為新的主要資料庫叢集端點。
**注意**  
使用叢集端點 (而非 Aurora 全球資料庫寫入器端點) 時，您需要在執行全域容錯移轉或轉換操作之後更新叢集端點。