Saltar al contenido

¿Cómo soluciono los errores que se producen al crear Amazon azul-verde en Amazon RDS para PostgreSQL y Aurora compatibles con PostgreSQL?

4 minutos de lectura
0

Quiero resolver los errores que se producen al crear despliegues azul-verde en Amazon Relational Database Service (Amazon RDS) para PostgreSQL y la edición de Amazon Aurora compatible con PostgreSQL.

Resolución

Revisión de las limitaciones de los despliegues azul-verde e identificación del error

Revisa las limitaciones de los despliegues azul-verde para Amazon RDS y Aurora compatible con PostgreSQL.

Para encontrar el mensaje de error específico de tu despliegue, sigue estos pasos:

  1. Abre la consola de Amazon RDS.
  2. En el panel de navegación, selecciona Bases de datos.
  3. Selecciona tu despliegue azul-verde.
  4. Selecciona la pestaña Registros y eventos.
  5. Revisa los registros para ver si hay mensajes de error.

Resolución del error de configuración de la replicación lógica

Si creas un despliegue azul-verde pero no activas la replicación lógica, recibirás el siguiente mensaje de error:

"Blue/Green Deployments require a DB instance with logical replication enabled. Before you create a Blue/Green Deployment for a DB instance, associate the DB instance with a custom DB instance parameter group that enables logical replication."

Para activar la replicación lógica, sigue estos pasos:

  1. Crea un grupo de parámetros personalizado o modifica un grupo existente.
  2. Establece el parámetro rds.logical_replication en 1.
  3. Aplica el grupo de parámetros personalizado a tu instancia de base de datos.

Nota: No puedes modificar los valores del grupo de parámetros predeterminado.

Resolución de parámetros de replicación incompatibles

Si creas un despliegue azul-verde con ranuras de replicación insuficientes para el recuento de tu base de datos, recibirás el siguiente mensaje de error:

"Creation of blue/green deployment failed due to incompatible parameter(s): max_replication_slots, and max_logical_replication_workers."

Para resolver este problema, sigue estos pasos:

  1. Ejecuta la siguiente consulta para ver una lista de tus bases de datos:

    SELECT datname FROM pg_database;
  2. Modifica los siguientes parámetros en tu grupo de parámetros personalizado:
    Establece max_replication_slots en un valor superior al recuento total de bases de datos.
    Establece max_wal_senders y max_logical_replication_workers en un valor igual a las ranuras de replicación lógica activas.
    Establece max_worker_processes en un valor igual a la suma de max_logical_replication_workers, autovacuum_max_workers y max_parallel_workers.

  3. Crea un nuevo despliegue azul-verde.

Resolución del error de las ranuras de replicación externas

Si creas un despliegue azul/verde cuando existen ranuras de replicación externas, recibirás el siguiente mensaje de error:

"Replica creation is canceled due to external replication."

Para resolver este problema, sigue estos pasos:

  1. Ejecuta el siguiente comando para comprobar si hay ranuras de replicación existentes:

    SELECT * FROM pg_replication_slots WHERE slot_type NOT LIKE 'physical';
  2. Ejecuta el siguiente comando para eliminar la ranura identificada:

    SELECT pg_drop_replication_slot(slot_name);

    Nota: Sustituye slot_name por el nombre de la ranura de replicación.

Resolución de los cambios de DDL que se producen después del despliegue

Si cambias el lenguaje de definición de datos (DDL) o modificas objetos grandes después de crear un despliegue azul-verde, recibirás el siguiente mensaje de error:

"DDL changes aren't supported for blue/green deployments. These changes aren't replicated from the blue environment to the green environment, and switchover will be blocked. Your green databases now have a status of REPLICATION_DEGRADED. Delete and recreate your blue/green deployment and avoid future DDL changes."

Para resolver este problema, elimina el despliegue azul-verde. A continuación, crea un nuevo despliegue azul-verde.

Tras el despliegue, no cambies el DDL ni los objetos grandes del entorno azul.

Resolución de errores de clave principal de la tabla

Si actualizas o eliminas registros de tablas que no tienen claves principales, recibirás el siguiente mensaje de error:

"Logical replication target relation 'public.image_audit' has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL"

Para resolver este problema, agrega claves principales a las tablas que requieren actualizaciones o eliminaciones. A continuación, ejecuta el siguiente comando para configurar REPLICA IDENTITY FULL:

ALTER TABLE table_name REPLICA IDENTITY FULL;

Nota: Sustituye table_name por el nombre de tu tabla.

Resolución de conflictos de extensión PG_CRON

Si usas la extensión pg_cron en tu despliegue, es posible que recibas el siguiente mensaje de error:

"role 'rdsrepladmin' cannot SET ROLE to 'rds_superuser'"

Los conflictos de replicación pueden producirse porque los trabajadores en segundo plano de la extensión pg_cron funcionan como superusuario y omiten la configuración de solo lectura.

Para resolver este problema, desactiva la extensión pg_cron en todas las bases de datos verdes después de crear el despliegue azul-verde. Mantén la extensión desactivada durante todo el despliegue.