

# Capturar planos de execução nas réplicas do Aurora PostgreSQL
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas"></a>

O QPM (gerenciamento de planos de consulta) permite capturar os planos de consulta gerados pelas réplicas do Aurora e armazená-los na instância de banco de dados primária do cluster de banco de dados do Aurora. Você pode coletar os planos de consulta de todas as réplicas do Aurora e manter um conjunto de planos ideais em uma tabela persistente central na instância primária. Então, você pode aplicar esses planos a outras réplicas quando necessário. Isso ajuda você a manter a estabilidade dos planos de execução e melhorar a performance das consultas nos clusters de banco de dados e nas versões do mecanismo.

**Topics**
+ [Pré-requisitos](#AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq)
+ [Gerenciar a captura de planos em réplicas do Aurora](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing)
+ [Solução de problemas](#AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting)

## Pré-requisitos
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq"></a>

**Ativar `capture_plan_baselines parameter` na réplica do Aurora**: defina o parâmetro `capture_plan_baselines` como automático ou manual para capturar os planos nas réplicas do Aurora. Para ter mais informações, consulte [apg\_plan\_mgmt.capture\_plan\_baselines](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines).

**Instalar a extensão postgres\_fdw**: você deve instalar a extensão `postgres_fdw` externa do wrapper de dados para capturar os planos nas réplicas do Aurora. Para instalar a extensão, execute o command a seguir o em cada banco de dados. 

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

## Gerenciar a captura de planos em réplicas do Aurora
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.managing"></a>

**Ativar a captura de planos em réplicas do Aurora**  
Você deve ter privilégios de `rds_superuser` para criar ou remover a captura de planos nas réplicas do Aurora. Para obter mais informações sobre funções e permissões de usuário, consulte [Noções básicas de perfis e permissões do PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Roles.html).

Para capturar planos, chame a função apg\_plan\_mgmt.create\_replica\_plan\_capture na instância de banco de dados de gravação, conforme mostrado a seguir:

```
postgres=> CALL apg_plan_mgmt.create_replica_plan_capture({{'endpoint'}}, {{'password'}});
```
+ endpoint: o endpoint de gravador ou o cluster\_endpoint do Aurora Global Database oferece suporte a failover para captura de planos em réplicas do Aurora.

  Para ter mais informações sobre o endpoint de gravador do Aurora Global Database, consulte [Visualizar os endpoints de um Amazon Aurora Global Database](aurora-global-database-connecting.md#viewing-endpoints).

  Para ter mais informações sobre endpoints do cluster, consulte [Endpoints de cluster para Amazon Aurora](Aurora.Endpoints.Cluster.md).
+ Senha: siga as diretrizes abaixo ao criar a senha para aumentar a segurança:
  + Deve conter pelo menos oito caracteres.
  + Deve conter pelo menos uma letra maiúscula, uma letra minúscula e um número.
  + Deve ter pelo menos um caractere especial (`?`, `!`, `#`, `<`, `>`, `*` e assim por diante).

**nota**  
Se você alterar o endpoint, a senha ou o número da porta, deverá executar `apg_plan_mgmt.create_replica_plan_capture()` novamente com o endpoint e a senha para reinicializar a captura de plano. Caso contrário, os planos de captura das réplicas do Aurora falharão.

**Desativar a captura de planos em réplicas do Aurora**  
Você pode desativar o parâmetro `capture_plan_baselines` na réplica do Aurora definindo o respectivo valor como `off` no grupo de parâmetros.

**Remover a captura de planos em réplicas do Aurora**  
Você pode remover completamente a captura de planos nas réplicas do Aurora, mas certifique-se antes de fazer isso. Para remover a captura de planos, chame `apg_plan_mgmt.remove_replica_plan_capture` conforme mostrado:

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

Você deve chamar apg\_plan\_mgmt.create\_replica\_plan\_capture() novamente para ativar a captura de planos nas réplicas do Aurora com o endpoint e a senha.

## Solução de problemas
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting"></a>

A seguir vão algumas ideias e soluções alternativas de problemas caso o plano não seja capturado nas réplicas do Aurora conforme o esperado.
+ **Configurações de parâmetros**: verifique se o parâmetro `capture_plan_baselines` está definido com o valor adequado para ativar a captura de planos.
+ A **extensão `postgres_fdw` está instalada**: use a consulta a seguir para verificar se `postgres_fdw` está instalada.

  ```
  postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  ```
+ **create\_replica\_plan\_capture() é chamado**: use o comando a seguir para verificar se o mapeamento do usuário existe. Caso contrário, chame `create_replica_plan_capture()` para inicializar o atributo.

  ```
  postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **Endpoint e número da porta**: verifique se o endpoint e o número da porta são apropriados. Não haverá nenhuma mensagem de erro exibida se esses valores estiverem incorretos. 

  Use o comando a seguir para verificar se o endpoint é usado no create() e para verificar em qual banco de dados ele reside:

  ```
  postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **reload ()**: você deve chamar apg\_plan\_mgmt.reload() depois de chamar apg\_plan\_mgmt.delete\_plan() nas réplicas do Aurora para tornar a função delete efetiva. Isso garante que a mudança seja implementada com sucesso.
+ **Senha**: você deve inserir a senha em create\_replica\_plan\_capture() de acordo com as diretrizes mencionadas. Caso contrário, você receberá uma mensagem de erro. Para obter mais informações, consulte [Gerenciar a captura de planos em réplicas do Aurora](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing). Use outra senha que esteja de acordo com os requisitos.
+ **Conexão entre regiões**: a captura de planos nas réplicas do Aurora também é compatível com o banco de dados global do Aurora, onde a instância de gravação e as réplicas do Aurora podem estar em regiões diferentes. Use o endpoint de gravador do Aurora Global Database para manter a conectividade após eventos de failover ou transição. Para ter mais informações sobre os endpoints do Aurora Global Database, consulte [Visualizar os endpoints de um Amazon Aurora Global Database](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-connecting.html#viewing-endpoints). A instância de gravação e a réplica entre regiões devem ser capazes de se comunicar usando o emparelhamento de VPC. Para obter mais informações, consulte [Emparelhamento de VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). Se ocorrer um failover entre regiões, você deverá reconfigurar o endpoint com o novo endpoint primário do cluster de banco de dados.
**nota**  
Ao usar um endpoint de cluster em vez de um endpoint de gravador do Aurora Global Database, você precisará atualizar o endpoint de cluster depois de realizar uma operação de failover ou transição global.