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:
- Abre la consola de Amazon RDS.
- En el panel de navegación, selecciona Bases de datos.
- Selecciona tu despliegue azul-verde.
- Selecciona la pestaña Registros y eventos.
- 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:
- Crea un grupo de parámetros personalizado o modifica un grupo existente.
- Establece el parámetro rds.logical_replication en 1.
- 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:
-
Ejecuta la siguiente consulta para ver una lista de tus bases de datos:
SELECT datname FROM pg_database;
-
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.
-
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:
-
Ejecuta el siguiente comando para comprobar si hay ranuras de replicación existentes:
SELECT * FROM pg_replication_slots WHERE slot_type NOT LIKE 'physical';
-
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.