Déploiements de cluster de bases de données multi-AZ pour Amazon RDS - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déploiements de cluster de bases de données multi-AZ pour Amazon RDS

Un déploiement de cluster de bases de données multi-AZ est un mode de déploiement à haute disponibilité semi-synchrone d’Amazon RDS qui compte deux instances de base de données de réplica accessibles en lecture. Un cluster de base de données multi-AZ possède une instance de base de données d'écriture et deux instances de base de données de lecture dans trois zones de disponibilité distinctes d'une même Région AWS. Les clusters de bases de données multi-AZ offrent une haute disponibilité, une capacité accrue pour les charges de travail en lecture et une moindre latence en écriture par rapport aux déploiements d’instances de base de données multi-AZ.

Vous pouvez importer des données d'une base de données sur site vers un cluster de bases de données multi-AZ en suivant les instructions dans Importation de données vers une base de données Amazon RDS for MySQL avec une durée d’indisponibilité réduite.

Vous pouvez acheter des instances de base de données réservées pour un cluster de bases de données multi-AZ. Pour de plus amples informations, veuillez consulter Instances de base de données réservées pour un cluster de bases de données multi-AZ.

La disponibilité et la prise en charge des fonctionnalités varient selon les versions spécifiques de chaque moteur de base de données, et selon les Régions AWS. Pour obtenir plus d'informations sur la disponibilité des versions et des régions d'Amazon RDS avec des clusters de bases de données multi-AZ, consultez Régions et moteurs de base de données pris en charge par les clusters de bases de données multi-AZ dans Amazon RDS.

Rubriques
Important

Les clusters de base de données multi-AZ sont différents des clusters de base de données Aurora. Pour en savoir plus sur les clusters de base de données Aurora, consultez le Guide de l'utilisateur Amazon Aurora.

Disponibilité des classes d’instance pour les clusters de bases de données multi-AZ

Les déploiements de clusters de bases de données multi-AZ sont pris en charge pour les classes d’instance de base de données suivantes : db.m5d, db.m6gd, db.m6id, db.m6idn, db.r5d, db.r6gd, db.x2iedn, db.r6id, db.r6idn et db.c6gd.

Note

Les classes d’instance c6gd sont les seules à prendre en charge la taille de l’instance medium.

Pour plus d’informations sur les classes d’instance de base de données, consultez Classes d’instance de base de données .

Architecture de clusters de bases de données multi-AZ

Avec un cluster de base de données multi-AZ, Amazon RDS réplique les données de l'instance de base de données d'écriture dans les deux instances de base de données de lecture en tirant parti des capacités de réplication natives du moteur de base de données. Lorsqu'une modification est apportée à l'instance de base de données d'écriture, elle est transmise à chaque instance de base de données de lecture.

Les déploiements de clusters de bases de données multi-AZ utilisent une réplication semi-synchrone, qui nécessite un accusé de réception d'au moins une instance de base de données de lecture pour qu'une modification soit appliquée. Il n'est pas nécessaire de confirmer que les événements ont été entièrement exécutés et validés sur tous les réplicas.

Les instances de base de données d'écriture font office de cibles de basculement automatique et traitent également le trafic en lecture pour accroître le débit de lecture des applications. En cas de panne sur votre instance de base de données de rédacteur, RDS gère laquelle des instances de base de données de lecteur devient la cible de basculement. RDS procède en fonction de l'instance de base de données de lecteur qui a l'enregistrement de changement le plus récent.

Le schéma suivant illustre un cluster de base de données multi-AZ.

Cluster de bases de données multi-AZ

Les clusters de base de données multi-AZ ont généralement une latence d'écriture moindre par rapport aux déploiements d'instances de base de données multi-AZ. Ils permettent également d'exécuter des charges de travail en lecture seule sur des instances de base de données de lecteurs. La console RDS affiche la zone de disponibilité de l'instance de base de données d'écriture et les zones de disponibilité des instances de base de données de lecture. Vous pouvez également utiliser la commande describe-db-clustersCLI ou l'opération de l'DBClustersAPI Describe pour trouver ces informations.

Important

Pour éviter les erreurs de réplication dans les clusters de bases de données multi-AZ RDS for MySQL, nous recommandons vivement que toutes les tables aient une clé primaire.

Groupes de paramètres pour clusters de bases de données multi-AZ

Dans un cluster de base de données multi-AZ, un groupe de paramètres de cluster de base de données sert de conteneur pour les valeurs de configuration du moteur qui sont appliquées à chaque instance de base de données contenue dans le cluster de base de données multi-AZ.

Dans un cluster de base de données multi-AZ, un groupe de paramètres de base de données est défini comme étant le groupe de paramètres de base de données par défaut pour le moteur et la version du moteur de base de données Les paramètres du groupe de paramètres de cluster de base de données s'appliquent à toutes les instances de base de données du cluster.

Pour plus d’informations sur les groupes de paramètres, consultez Utilisation des groupes de paramètres de clusters de bases de données pour les clusters de bases de données Multi-AZ.

RDS Proxy avec clusters de bases de données multi-AZ

Vous pouvez créer le proxy Amazon RDS pour créer un proxy pour vos clusters de bases de données multi-AZ. En utilisant RDS Proxy, vos applications peuvent grouper et partager des connexions de bases de données pour améliorer leur capacité de mise à l’échelle. Chaque proxy effectue le multiplexage de connexion, également connu sous le nom de réutilisation de connexion. Grâce au multiplexage, RDS Proxy exécute toutes les opérations d’une transaction à l’aide d’une connexion de base de données sous-jacente. Le proxy RDS peut également réduire à une seconde ou moins la durée d’indisponibilité liée à une mise à niveau de version mineure d’un cluster de bases de données multi-AZ. Pour plus d'informations sur les avantages de RDS Proxy, consultez Proxy Amazon RDS.

Pour configurer un proxy pour un cluster de base de données multi-AZ, choisissez Créer un proxy RDS lors de la création du cluster. Pour obtenir des instructions sur la création et la gestion des points de terminaison RDS Proxy, consultez Utilisation des points de terminaison du proxy Amazon RDS.

Retard de réplica et clusters de base de données multi-AZ

Le retard de réplica est la différence de temps entre la dernière transaction au niveau de l'instance de base de données d'enregistreur et la dernière transaction appliquée sur une instance de base de données de lecteur. La CloudWatch métrique Amazon ReplicaLag représente ce décalage horaire. Pour plus d'informations sur CloudWatch les métriques, consultezSurveillance des métriques Amazon RDS avec Amazon CloudWatch.

Bien que les clusters de base de données Multi-AZ permettent des performances d'écriture élevées, un retard de réplica peut toujours se produire en raison de la nature de la réplication basée sur le moteur. Étant donné que tout basculement doit d'abord résoudre le retard du réplica avant de promouvoir une nouvelle instance de base de données d'enregistreur, la surveillance et la gestion de ce retard de réplica sont à prendre en compte.

Pour les clusters de base de données Multi-AZ RDS for MySQL, le temps de basculement dépend du décalage de réplica des deux instances de base de données de lecteur restantes. Les deux instances de base de données de lecteur doivent appliquer des transactions non appliquées avant que l'une d'elles ne soit promue vers la nouvelle instance de base de données de rédacteur.

Pour les clusters de bases de données Multi-AZ RDS pour PostgreSQL, le temps de basculement dépend du décalage de réplica le plus bas des deux instances de bases de données de lecture restantes. L'instance de base de données de lecteur ayant le plus faible décalage de réplica doit appliquer les transactions non appliquées avant d'être promue en tant que nouvelle instance de base de données de rédacteur.

Pour un didacticiel expliquant comment créer une CloudWatch alarme lorsque le délai de réplication dépasse une durée définie, voirDidacticiel : Création d’une alarme Amazon CloudWatch pour un décalage de réplica de cluster de bases de données multi-AZ pour Amazon RDS.

Causes courantes du retard de réplica

En général, le retard de réplica se produit lorsque la charge de travail en écriture est trop élevée pour que les instances de base de données du lecteur puissent appliquer efficacement les transactions. Diverses charges de travail peuvent entraîner un retard de réplica temporaire ou continu. Voici quelques exemples de causes courantes :

  • Une concurrence d'écriture élevée ou une mise à jour par lots lourde sur l'instance de base de données de l'enregistreur, ce qui entraîne un retard du processus d'application sur les instances de base de données du lecteur.

  • Une charge de travail de lecture lourde qui utilise des ressources sur une ou plusieurs instances de base de données du lecteur. L'exécution de requêtes lentes ou volumineuses peut affecter le processus d'application et entraîner un retard de réplica.

  • Les transactions qui modifient de grandes quantités de données ou d'instructions DDL peuvent parfois entraîner une augmentation temporaire du retard de réplica, car la base de données doit préserver l'ordre de validation.

Atténuation du retard de réplica

Pour les clusters de bases de données multi-AZ pour RDS for MySQL et RDS pour PostgreSQL, vous pouvez réduire le retard de réplica en réduisant la charge sur votre instance de base de données d’enregistreur. Vous pouvez également utiliser le contrôle de flux pour réduire le décalage de réplica. Le contrôle de flux fonctionne en limitant les écritures sur l'instance de base de données d'enregistreur, ce qui garantit que le retard de réplica ne continue pas à augmenter sans limite. La limitation des écritures est obtenue en ajoutant un délai à la fin d'une transaction, ce qui réduit le débit d'écriture sur l'instance de base de données d'enregistreur. Bien que le contrôle de flux ne garantit pas l'élimination du retard, il peut contribuer à réduire le retard global pour de nombreuses charges de travail. Les sections suivantes fournissent des informations sur l’utilisation du contrôle de flux avec RDS for MySQL et RDS pour PostgreSQL.

Atténuation du décalage de réplica avec le contrôle de flux pour RDS for MySQL

Lorsque vous utilisez les clusters de bases de données Multi-AZ RDS pour PostgreSQL, le contrôle de flux est activé par défaut à l’aide du paramètre dynamique rpl_semi_sync_master_target_apply_lag. Ce paramètre spécifie la limite supérieure souhaitée pour le décalage du réplica. À mesure que le décalage de réplica approche cette limite configurée, le contrôle de flux limite les transactions d’écriture sur l’instance de base de données de rédacteur pour tenter de contenir le décalage du réplica en dessous de la valeur spécifiée. Dans certains cas, le décalage de réplica peut dépasser la limite spécifiée. Par défaut, ce paramètre est défini à 120 secondes. Pour désactiver le contrôle de flux, définissez ce paramètre sur sa valeur maximale de 86 400 secondes (un jour).

Pour afficher le délai de courant injecté par le contrôle de flux, affichez le paramètre Rpl_semi_sync_master_flow_control_current_delay en exécutant la requête suivante.

SHOW GLOBAL STATUS like '%flow_control%';

Votre sortie doit ressembler à ce qui suit :

+-------------------------------------------------+-------+ | Variable_name | Value | +-------------------------------------------------+-------+ | Rpl_semi_sync_master_flow_control_current_delay | 2010 | +-------------------------------------------------+-------+ 1 row in set (0.00 sec)
Note

Le délai est affiché en microsecondes.

Lorsque Performance Insights est activé pour un cluster de bases de données Multi-AZ RDS for MySQL, vous pouvez surveiller l'événement d'attente correspondant à une instruction SQL indiquant que les requêtes ont été retardées par un contrôle de flux. Lorsqu'un délai a été introduit par un contrôle de flux, vous pouvez afficher l'événement d'attente /wait/synch/cond/semisync/semi_sync_flow_control_delay_cond correspondant à l'instruction SQL du tableau de bord Performance Insights. Pour afficher ces métriques, assurez-vous que le schéma de performances est activé. Pour plus d’informations sur Performance Insights, consultez Surveillance de la charge de la base de données avec Performance Insights sur Amazon RDS.

Atténuation du décalage de réplica avec le contrôle de flux pour RDS pour PostgreSQL

Lorsque vous utilisez les clusters de bases de données Multi-AZ RDS pour PostgreSQL, le contrôle de flux est déployé en tant qu’extension. Il active un processus de travail en arrière-plan pour toutes les instances de base de données du cluster de base de données. Par défaut, les processus de travail en arrière-plan sur les instances de base de données de lecteur communiquent le retard actuel du réplica avec le processus de travail en arrière-plan sur l'instance de base de données d'enregistreur. Si le retard dépasse deux minutes sur n'importe quelle instance de base de données de lecteur, le processus de travail en arrière-plan de l'instance de base de données d'enregistreur ajoute un délai à la fin d'une transaction. Pour contrôler le seuil de retard, utilisez le paramètre flow_control.target_standby_apply_lag.

Lorsqu'un contrôle de flux limite un processus PostgreSQL, l'événement d'attente Extension dans pg_stat_activity et Performance Insights l'indique. La fonction get_flow_control_stats affiche des détails sur le délai actuellement ajouté.

Le contrôle de flux peut bénéficier à la plupart des charges de travail de traitement transactionnel en ligne (OLTP) ayant des transactions courtes mais très concurrentes. Si le retard est causé par des transactions de longue durée, telles que des opérations par lots, le contrôle de flux n'offre pas un avantage aussi important.

Vous pouvez désactiver le contrôle de flux en supprimant l'extension de shared_preload_libraries et en redémarrant votre instance de base de données.

Instantanés de cluster de bases de données multi-AZ

Amazon RDS crée et enregistre des sauvegardes automatiques de votre cluster de bases de données multi-AZ pendant la fenêtre de sauvegarde configurée. RDS crée un instantané du volume de stockage de votre cluster de bases de données en sauvegardant l’intégralité de ce dernier, et pas seulement les instances.

Vous pouvez également effectuer des sauvegardes manuelles de votre cluster de bases de données multi-AZ. Pour les sauvegardes à très long terme, envisagez d’exporter les données d’instantané vers Amazon S3. Pour plus d’informations, consultez Création d’un instantané de cluster de bases de données multi-AZ pour Amazon RDS.

Vous pouvez restaurer un cluster de bases de données Multi-AZ à un moment précis dans le temps, en créant un nouveau cluster de bases de données Multi-AZ. Pour obtenir des instructions, consultez Restauration d'un cluster de base de données multi-AZ à une date définie.

Vous pouvez également restaurer un instantané de cluster de bases de données multi-AZ dans un déploiement mono-AZ ou un déploiement d’instance de base de données multi-AZ. Pour obtenir des instructions, consultez Restauration d'un instantané de cluster de bases de données multi-AZ dans une instance de base de données.