Passer au contenu

Comment résoudre les erreurs qui se produisent lorsque je crée des déploiements bleu/vert dans Amazon RDS pour PostgreSQL et Aurora compatibles avec PostgreSQL ?

Lecture de 4 minute(s)
0

Je souhaite résoudre les erreurs qui se produisent lorsque je crée des déploiements bleu/vert dans Amazon Relational Database Service (Amazon RDS) pour PostgreSQL et Amazon Aurora édition compatible avec PostgreSQL.

Résolution

Examiner les limites des déploiements bleu/vert et identifier votre erreur

Examinez les limites des déploiements bleu/vert pour Amazon RDS et Aurora compatible avec PostgreSQL.

Pour trouver le message d'erreur spécifique à votre déploiement, procédez comme suit :

  1. Ouvrez la console Amazon RDS.
  2. Dans le volet de navigation, sélectionnez Bases de données.
  3. Sélectionnez votre déploiement bleu/vert.
  4. Choisissez l'onglet Journaux et événements.
  5. Consultez les journaux pour détecter les messages d'erreur.

Résoudre l'erreur de configuration de réplication logique

Si vous créez un déploiement bleu/vert mais que vous n'activez pas la réplication logique, le message d'erreur suivant s'affiche :

« 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. »

Pour activer la réplication logique, procédez comme suit :

  1. Créez un groupe de paramètres personnalisés ou modifiez un groupe existant.
  2. Définissez le paramètre rds.logical_replication sur 1.
  3. Appliquez le groupe de paramètres personnalisés à votre instance de base de données.

Remarque : il est impossible de modifier des valeurs du groupe de paramètres par défaut.

Résoudre les paramètres de réplication incompatibles

Si vous créez un déploiement bleu/vert avec des emplacements de réplication insuffisants par rapport au nombre de bases de données, le message d'erreur suivant s'affiche :

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

Afin de résoudre ce problème, procédez comme suit :

  1. Exécutez la requête suivante pour afficher la liste de vos bases de données :

    SELECT datname FROM pg_database;
  2. Modifiez les paramètres suivants dans votre groupe de paramètres personnalisés :
    Définissez max_replication_slots sur une valeur supérieure au nombre total de votre base de données.
    Définissez max_wal_senders et max_logical_replication_workers sur une valeur égale à vos emplacements de réplication logique actifs.
    Définissez max_worker_processes sur une valeur égale à la somme de max_logical_replication_workers, autovacuum_max_workers et max_parallel_workers.

  3. Créez un nouveau déploiement bleu/vert.

Résoudre l'erreur des emplacements de réplication externes

Si vous créez un déploiement bleu/vert alors que des emplacements de réplication externes existent, le message d'erreur suivant s'affiche :

« Replica creation is canceled due to external replication. »

Afin de résoudre ce problème, procédez comme suit :

  1. Exécutez la commande suivante pour vérifier les emplacements de réplication existants :

    SELECT * FROM pg_replication_slots WHERE slot_type NOT LIKE 'physical';
  2. Exécutez la commande suivante pour supprimer l'emplacement identifié :

    SELECT pg_drop_replication_slot(slot_name);

    Remarque : remplacez slot_name par le nom de l’emplacement de réplication.

Résoudre les modifications DDL qui se produisent après le déploiement

Si vous modifiez le langage de définition des données (DDL) ou modifiez des objets volumineux après avoir créé un déploiement bleu/vert, le message d'erreur suivant s'affiche :

« 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. »

Pour résoudre ce problème, supprimez votre déploiement bleu/vert. Puis, créez un nouveau déploiement bleu/vert.

Après le déploiement, ne modifiez pas le DDL et les objets volumineux dans l'environnement bleu.

Résoudre les erreurs de clé primaire de la table

Si vous mettez à jour ou supprimez des enregistrements dans des tables ne contenant pas de clé primaire, le message d'erreur suivant s'affiche :

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

Pour résoudre ce problème, ajoutez des clés primaires aux tables qui nécessitent des mises à jour ou des suppressions. Exécutez ensuite la commande suivante pour définir REPLICA IDENTITY FULL :

ALTER TABLE table_name REPLICA IDENTITY FULL;

Remarque : remplacez table_name par le nom de votre table.

Résoudre les conflits d'extension PG_CRON

Si vous utilisez l'extension pg_cron dans votre déploiement, le message d'erreur suivant peut s'afficher :

« role 'rdsrepladmin' cannot SET ROLE to 'rds_superuser' »

Des conflits de réplication peuvent survenir car les outils de travail en arrière-plan de l'extension pg_cron s'exécutent en tant que superutilisateur et ignorent les paramètres en lecture seule.

Pour résoudre ce problème, désactivez l'extension pg_cron sur toutes les bases de données vertes après avoir créé le déploiement bleu/vert. Maintenez l'extension désactivée tout au long du déploiement.