

# Captura de planes de ejecución de Aurora PostgreSQL en réplicas
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas"></a>

QPM (Administración de planes de consultas) le permite capturar los planes de consultas generados por las réplicas de Aurora y los almacena en la instancia de base de datos principal del clúster de base de datos de Aurora. Puede recopilar los planes de consultas de todas las réplicas de Aurora y mantener un conjunto de planes óptimos en una tabla persistente central en la instancia principal. A continuación, puede aplicar estos planes a otras réplicas cuando lo necesite. De este modo, se mantiene la estabilidad de los planes de ejecución y se mejora el rendimiento de las consultas en todos los clústeres de bases de datos y versiones del motor.

**Topics**
+ [Requisitos previos](#AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq)
+ [Administrar la captura de planes para réplicas de Aurora](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing)
+ [Solución de problemas](#AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting)

## Requisitos previos
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq"></a>

**Activar `capture_plan_baselines parameter` en una réplica de Aurora**: establezca el parámetro `capture_plan_baselines` en automático o manual para capturar los planes en las réplicas de Aurora. Para obtener más información, consulte [apg\$1plan\$1mgmt.capture\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines).

**Instalar la extensión postgres\$1fdw**: debe instalar la extensión de contenedor de datos externos `postgres_fdw` para capturar los planes en las réplicas de Aurora. Para instalar la extensión, ejecute el siguiente comando en cada base de datos: 

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

## Administrar la captura de planes para réplicas de Aurora
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.managing"></a>

**Activar la captura de planes para réplicas de Aurora**  
Debe tener privilegios de `rds_superuser` para crear o eliminar la captura de planes en las réplicas de Aurora. Para obtener más información sobre los roles de usuario y los permisos, consulte [Descripción de los roles y permisos de PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Roles.html).

Para capturar planes, llame a la función apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture en la instancia de base de datos del escritor, como se muestra a continuación:

```
postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('endpoint', 'password');
```
+ punto de conexión: el punto de conexión o cluster\$1endpoint del escritor de la base de datos global de Aurora proporciona compatibilidad con la conmutación por error para la captura de planes en réplicas de Aurora.

  Para obtener más información sobre el punto de conexión del escritor de la base de datos global de Aurora, consulte [Visualización de los puntos de conexión de una base de datos global de Amazon Aurora](aurora-global-database-connecting.md#viewing-endpoints).

  Para obtener más información sobre los puntos de conexión del clúster, consulte [Puntos de conexión de clúster para Amazon Aurora](Aurora.Endpoints.Cluster.md).
+ contraseña: le recomendamos que siga las siguientes indicaciones para crear una contraseña y mejorar la seguridad:
  + Debe contener al menos 8 caracteres únicos.
  + Debe contener al menos una letra en mayúsculas, una letra en minúsculas y un número.
  + Debe tener al menos un carácter especial (`?`, `!`, `#`, `<`, `>`, `*`, etc.).

**nota**  
Si cambia el punto de conexión, la contraseña o el número de puerto, debe volver a ejecutar `apg_plan_mgmt.create_replica_plan_capture()` con el punto de conexión y la contraseña para iniciar la captura de planes de nuevo. De lo contrario, no se podrán capturar los planes de las réplicas de Aurora.

**Desactivar la captura de planes para réplicas de Aurora**  
Puede desactivar el parámetro `capture_plan_baselines` en la réplica de Aurora estableciendo su valor en `off` en el grupo de parámetros.

**Eliminar la captura de planes para réplicas de Aurora**  
Puede eliminar completamente la captura de planes en las réplicas de Aurora, pero asegúrese antes de hacerlo. Para eliminar la captura de planes, llame a `apg_plan_mgmt.remove_replica_plan_capture` como se muestra a continuación:

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

Debe volver a llamar a apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture() para activar la captura de planes en las réplicas de Aurora con el punto de conexión y la contraseña.

## Solución de problemas
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting"></a>

A continuación, puede encontrar ideas para resolver problemas y soluciones si el plan no se captura en las réplicas de Aurora como se esperaba.
+ **Configuración de parámetros**: compruebe si el parámetro `capture_plan_baselines` está establecido en el valor adecuado para activar la captura de planes.
+ **Instalación de la extensión `postgres_fdw`**: utilice la siguiente consulta para comprobar si se ha instalado `postgres_fdw`.

  ```
  postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  ```
+ **Llamada a create\$1replica\$1plan\$1capture()**: utilice el siguiente comando para comprobar si se ha activado el mapeo de usuarios. De lo contrario, llame a `create_replica_plan_capture()` para iniciar la función.

  ```
  postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **Punto de conexión y número de puerto**: compruebe si el punto de conexión y el número de puerto son correctos. Si no lo son, no se mostrará ningún mensaje de error. 

  Usa el siguiente comando para comprobar el punto de conexión utilizado en create() y ver en qué base de datos está alojado:

  ```
  postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **reload ()**: debe llamar a apg\$1plan\$1mgmt.reload() después de llamar a apg\$1plan\$1mgmt.delete\$1plan() en las réplicas de Aurora para que la función de eliminación sea efectiva. Esto garantiza que el cambio se haya implementado correctamente.
+ **Contraseña**: debe introducir la contraseña en create\$1replica\$1plan\$1capture() según las pautas mencionadas. De lo contrario, se producirá un error. Para obtener más información, consulte [Administrar la captura de planes para réplicas de Aurora](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing). Utilice otra contraseña que se ajuste a los requisitos.
+ **Conexión entre regiones**: la captura de planes en réplicas de Aurora también se admite en la base de datos global de Aurora, donde la instancia de escritor y las réplicas de Aurora pueden estar en diferentes regiones. Asegúrese de utilizar el punto de conexión del escritor de la base de datos global de Aurora para mantener la conectividad después de eventos de conmutación por error o transición. Para obtener más información sobre los puntos de conexión de la base de datos global de Aurora, consulte [Visualización de los puntos de conexión de una base de datos global de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-connecting.html#viewing-endpoints). La instancia de escritor y la réplica entre regiones deben poder comunicarse mediante emparejamiento de VPC. Para obtener más información, consulte [Interconexión de VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). Si se produce una conmutación por error entre regiones, debe volver a configurar el punto de conexión para convertirlo en un nuevo punto de conexión del clúster de base de datos principal.
**nota**  
Cuando utilice un punto de conexión de clúster en lugar de un punto de conexión de escritor de base de datos global de Aurora, tendrá que actualizar el punto de conexión de clúster después de realizar una operación de conmutación por error o transición global.