Utilisation des réplicas en lecture - Amazon Relational Database Service

Utilisation des réplicas en lecture

Amazon RDS utilise la fonction de réplication intégrée des moteurs de base de données MariaDB, Microsoft SQL Server, MySQL, Oracle et PostgreSQL pour créer un type particulier d'instance de base de données appelé réplica en lecture à partir d'une instance de base de données source. L'instance de base de données source devient l'instance de base de données principale. Les mises à jour apportées à l'instance de base de données principale sont copiées de façon asynchrone sur le réplica en lecture. Vous pouvez réduire la charge sur votre instance de base de données principale en acheminant les requêtes en lecture depuis vos applications vers le réplica en lecture. Les réplicas en lecture permettent une montée en puissance basée sur Elastic au-delà des contraintes de capacité d'une seule instance de base de données dans le cas de charges de travail de base de données à lecture intensive.


            Configuration d'un réplica en lecture
Note

Les informations suivantes s'appliquent à la création de réplicas en lecture Amazon RDS dans la même Région AWS que l'instance de base de données source ou dans une autre Région AWS. Les informations suivantes ne s'appliquent pas à la configuration de la réplication avec une instance qui s'exécute sur une instance Amazon EC2 ou sur site.

Lorsque vous créez un réplica en lecture, vous commencez par spécifier une instance de base de données existante en tant que source. Ensuite, Amazon RDS prend un instantané de l'instance source et crée une instance en lecture seule à partir de celui-ci. Amazon RDS utilise la méthode de réplication asynchrone pour le moteur de base de données afin de mettre à jour le réplica en lecture chaque fois qu'une modification est apportée à l'instance de base de données principale. Le réplica en lecture fonctionne comme une instance de bases de données qui autorise uniquement les connexions en lecture seule. Les applications se connectent à un réplica en lecture de la même façon qu'à toute instance de base de données. Amazon RDS réplique toutes les bases de données dans l'instance de base de données source.

Note

Le moteur Oracle DB prend en charge les bases de données de réplica en mode monté. Un réplica monté n'accepte pas les connexions utilisateur et ne peut donc pas servir de charge de travail en lecture seule. L'utilisation principale des réplicas montés est la reprise après sinistre inter-région. Pour plus d'informations, consultez Utilisation de réplicas en lecture pour Amazon RDS for Oracle.

Dans certains cas, un réplica en lecture se trouve dans une Région AWS différente de celle de son instance de base de données principale. Dans ces cas, Amazon RDS configure un canal de communication sécurisé entre l'instance de base de données principale et le réplica en lecture. Amazon RDS établit toutes les configurations de sécurité AWS nécessaires pour activer le canal sécurisé, telles que l'ajout d'entrées de groupe de sécurité. Pour plus d'informations sur les réplicas en lecture entre régions, veuillez consulter Création d'un réplica en lecture dans une autre Région AWS.

Vous pouvez configurer un réplica en lecture pour une instance de base de données disposant également d'un réplica de secours configuré pour la haute disponibilité dans un déploiement multi-AZ. La réplication avec le réplica de secours est synchrone et le réplica de secours ne peut pas servir au trafic de lecture.


            Configuration d'un réplica en lecture et d'un réplica de secours

Pour plus d'informations sur les réplicas de secours configurés pour une haute disponibilité, consultez Déploiements multi-AZ pour une haute disponibilité.

Les réplicas en lecture sont pris en charge par les moteurs de bases de données MariaDB, Microsoft SQL Server, MySQL, Oracle et PostgreSQL. Cette section fournit des informations générales sur l'utilisation des réplicas en lecture avec ces moteurs.

Pour plus d'informations sur l'utilisation de réplicas en lecture avec un moteur spécifique, veuillez consulter les sections suivantes :

Présentation des réplicas en lecture Amazon RDS

Le déploiement d'un ou de plusieurs réplicas en lecture pour une instance de bases de données source donnée peut être judicieux dans divers scénarios, notamment dans les suivants :

  • Dimensionnement au-delà de la capacité de calcul ou d'I/O d'une instance de bases de données individuelle pour des charges de travail de base de données à lecture intensive. Vous pouvez diriger ce trafic en lecture excessif vers un ou plusieurs réplicas en lecture.

  • Service du trafic en lecture alors que l'instance de bases de données source est indisponible. Dans certains, cas, votre instance de bases de données source ne peut pas prendre en charge les demandes d'I/O, par exemple en raison d'une suspension des I/O pour des sauvegardes ou la maintenance planifiée. Vous pouvez alors diriger le trafic de lecture vers vos réplicas en lecture. Dans ce cas d'utilisation, gardez à l'esprit que les données sur le réplica en lecture peuvent être « périmées » car l'instance de bases de données source est indisponible.

  • Scénarios de création de rapports commerciaux ou d'entreposage de données, dans lesquels vous pouvez souhaiter que les requêtes de rapports commerciaux s'exécutent sur un réplica en lecture, plutôt que sur votre instance de bases de données de production.

  • Mise en œuvre de la reprise après sinistre. Vous pouvez effectuez la promotion d'un réplica en lecture en instance autonome comme plan de reprise après sinistre en cas de défaillance de l'instance de base de données principale.

Par défaut, un réplica en lecture est créé avec le même type de stockage que l'instance de bases de données source. Toutefois, vous pouvez créer un réplica en lecture disposant d'un autre type de stockage que l'instance de bases de données source, en fonction des options répertoriées dans le tableau suivant.

Type de stockage de l'instance de bases de données source Allocation de stockage d'instance de bases de données source Options de type de stockage du réplica en lecture
IOPS provisionnés 100 Gio–64 Tio IOPS provisionnés, usage général, magnétique
Usage général 100 Gio–64 Tio IOPS provisionnés, usage général, magnétique
Usage général <100 Gio Usage général, magnétique
Magnétique 100 Gio - 6 Tio IOPS provisionnés, usage général, magnétique
Magnétique <100 Gio Usage général, magnétique
Note

Lorsque vous augmentez le stockage alloué d'un réplica en lecture, il doit être d'au moins 10 %. Si vous tentez d'augmenter la valeur de moins de 10 %, une erreur s'affiche.

Amazon RDS ne prend pas en charge la réplication circulaire. Vous ne pouvez pas configurer une instance de base de données afin de l'utiliser comme source de réplication pour une instance de base de données existante. Vous pouvez uniquement créer un nouveau réplica en lecture à partir d'une instance de base de données existante. Par exemple, si MyDBInstance est répliqué sur ReadReplica1, vous ne pouvez pas configurer ReadReplica1 de façon à ce qu'il soit répliqué sur MyDBInstance. Pour MariaDB et MySQL, et pour certaines versions de PostgreSQL, vous pouvez créer un réplica en lecture à partir d'un réplica en lecture existant. Par exemple, à partir de ReadReplica1, vous pouvez créer un nouveau réplica en lecture, comme ReadReplica2. Pour Oracle et SQL Server, vous ne pouvez pas créer de réplica en lecture à partir d'un réplica en lecture existant.

Si vous n'avez plus besoin de réplicas en lecture, vous pouvez les supprimer explicitement en utilisant les mêmes mécanismes que pour la suppression d'une instance de base de données. Si vous supprimez une instance de base de données source sans supprimer ses réplicas en lecture dans la même Région AWS, chaque réplica en lecture est promu en instance de base de données autonome. Pour plus d'informations sur la création d'une instance de base de données, veuillez consulter Suppression d'une instance DB. Pour plus d'informations sur la promotion d'un réplica en lecture, veuillez consulter Promotion d'un réplica en lecture en instance de bases de données autonome.

Si vous avez des réplicas en lecture entre régions, consultez Considérations liées à la réplication entre régions pour en savoir plus sur la suppression de l'instance de base de données source pour un réplica en lecture entre régions.

Différences entre les réplicas en lecture pour les différents moteurs de bases de données

Dans la mesure où les moteurs de bases de données Amazon RDS implémentent la réplication différemment, plusieurs différences importantes sont à noter :

Fonction ou comportement MySQL et MariaDB Oracle PostgreSQL SQL Server

Quelle est la méthode de réplication ?

Réplication logique

Réplication physique

Réplication physique

Réplication physique

Comment les journaux de transactions sont-ils purgés ?

RDS for MySQL et RDS for MariaDB conservent les journaux binaires qui n'ont pas été appliqués.

Si une instance de base de données principale ne possède aucun réplica en lecture entre régions, Amazon RDS for Oracle conserve un minimum de deux heures de journaux de transactions sur l'instance de base de données source. Les journaux sont purgés de l'instance de base de données source au bout de deux heures ou une fois que le paramètre d'heures de conservation du journal d'archive est passé, le plus long des deux. Les journaux sont purgés du réplica en lecture une fois que le paramètre d'heures de conservation du journal d'archive est passé, uniquement s'ils ont été appliqués correctement à la base de données.

Dans certains cas, une instance de base de données principale peut avoir un ou plusieurs réplicas en lecture entre régions. Dans ce cas, Amazon RDS for Oracle conserve les journaux de transaction sur l'instance de base de données source jusqu'à ce qu'ils aient été transmis et appliqués à tous les réplicas en lecture entre régions.

Pour plus d'informations sur la définition des heures de conservation des journaux d'archivage, veuillez consulter Conservation des journaux redo archivés.

PostgreSQL dispose du paramètre wal_keep_segments, qui indique le nombre de fichiers WAL (write-ahead log) à conserver pour fournir les données aux réplicas en lecture. La valeur de ce paramètre spécifie le nombre de journaux à conserver.

Le fichier journal virtuel (VLF) du fichier journal des transactions sur le réplica principal peut être tronqué une fois qu'il n'est plus nécessaire pour les réplicas secondaires.

Le VLF ne peut être marqué comme inactif que lorsque les enregistrements de journaux ont été sécurisés dans les réplicas. Quelle que soit la vitesse à laquelle les sous-systèmes de disque se trouvent dans le réplica principal, le journal des transactions conserve les VLF jusqu'à ce que le réplica le plus lent l'ait sécurisé.

Est-il possible de rendre un réplica accessible en écriture ?

Oui. Vous pouvez permettre au réplica en lecture MySQL ou MariaDB d'être accessible en écriture.

Non. Un réplica en lecture Oracle est une copie physique et Oracle n'autorise pas les écritures dans un réplica en lecture. Vous pouvez promouvoir un réplica en lecture afin de le rendre inscriptible. Le réplica en lecture promu a les données répliquées jusqu'au moment où la demande a été faite pour le promouvoir.

Non. Un réplica en lecture PostgreSQL est une copie physique et PostgreSQL ne permet pas de rendre accessible en écriture un réplica en lecture.

Non. Un réplica en lecture SQL Server est une copie physique et n'autorise pas les écritures. Vous pouvez promouvoir un réplica en lecture afin de le rendre inscriptible. Le réplica en lecture promu a les données répliquées jusqu'au moment où la demande a été faite pour le promouvoir.

Des sauvegardes peuvent-elles être effectuées sur le réplica ?

Oui. Les sauvegardes automatiques et les instantanés manuels sont pris en charge sur les réplicas en lecture RDS for MySQL ou RDS for MariaDB.

Oui. Les sauvegardes automatiques et les instantanés manuels sont pris en charge sur les réplicas en lecture RDS for Oracle.

Oui, vous pouvez créer un instantané manuel de réplicas en lecture RDS for PostgreSQL, mais les sauvegardes automatiques ne sont pas prises en charge.

Non. Les sauvegardes automatiques et les instantanés manuels ne sont pas pris en charge sur les réplicas en lecture RDS for SQL Server.

Est-il possible d'utiliser la réplication parallèle ?

Oui. Toutes les versions prises en charge de MariaDB et MySQL autorisent les threads de réplication parallèles.

Oui. Les données des journaux redo sont toujours transmises en parallèle de la base de données principale vers tous ses réplicas en lecture.

Non. PostgreSQL dispose d'un processus unique de réplication.

Oui. Les données des journaux redo sont toujours transmises en parallèle de la base de données principale vers tous ses réplicas en lecture.

Pouvez-vous maintenir un réplica dans un état monté plutôt qu'en lecture seule ?

Non.

Oui. L'utilisation principale des réplicas montés est la reprise après sinistre inter-région. Une licence Active Data Guard n'est pas requise pour les réplicas montés. Pour plus d'informations, consultez Utilisation de réplicas en lecture pour Amazon RDS for Oracle.

Non.

Non.

Création d'un réplica en lecture

Vous pouvez créer un réplica en lecture à partir d'une instance de base de données existante à l'aide de la AWS Management Console, de la AWS CLI ou de l'API RDS. Vous créez un réplica en lecture en spécifiant SourceDBInstanceIdentifier, qui est l'identifiant de l'instance de base de données source à partir de laquelle vous souhaitez répliquer les données.

Lorsque vous créez un réplica en lecture, Amazon RDS prend un instantané de votre instance de base de données source et commence la réplication. En conséquence, vous connaissez une brève suspension des I/O sur votre instance de base de données source pendant la réalisation de l'instantané de base de données.

Note

La suspension d'I/O dure généralement environ une minute. Vous pouvez éviter la suspension d'I/O si l'instance de base de données source est un déploiement multi-AZ, car dans ce cas l'instantané est pris à partir de l'instance de base de données secondaire.

Une transaction de longue durée active peut ralentir le processus de création du réplica en lecture. Nous vous recommandons d'attendre que les transactions de longue durée se terminent pour créer un réplica en lecture. Si vous créez plusieurs réplicas en lecture en parallèle à partir de la même instance de base de données source, Amazon RDS prend un seul instantané au début de la première action de création.

Lors de la création d'un réplica en lecture, il convient de prendre en considération plusieurs éléments. Tout d'abord, vous devez activer les sauvegardes automatiques sur l'instance de bases de données source en affectant à la période de rétention des sauvegardes une valeur différente de 0. Cette exigence s'applique également à un réplica en lecture qui serait l'instance de base de données source d'un autre réplica en lecture. Pour activer les sauvegardes automatiques sur un réplica en lecture RDS for MySQL, commencez par créer le réplica en lecture, puis modifiez-le pour activer les sauvegardes automatiques.

Note

Dans une Région AWS, nous vous recommandons vivement de créer tous les réplicas en lecture dans le même cloud privé virtuel (VPC) basé sur Amazon VPC que l'instance de base de données source. Si vous créez un réplica en lecture dans un VPC différent de l'instance de base de données source, les plages d'adresses CIDR (classless inter-domain routing) peuvent se chevaucher entre le réplica et le système RDS. Le chevauchement CIDR rend le réplica instable, ce qui peut avoir un impact négatif sur les applications qui s'y connectent. Si vous recevez une erreur lors de la création du réplica en lecture, choisissez un autre groupe de sous-réseaux de base de données de destination. Pour plus d'informations, consultez Utilisation d'un(e) instance de base de données dans un VPC.

Vous ne pouvez pas créer de réplica en lecture dans un compte AWS différent de celui de l'instance de base de données source.

Pour créer un réplica en lecture à partir d'une instance de base de données source

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans la panneau de navigation, choisissez Databases (Bases de données).

  3. Sélectionnez l'instance de base de données que vous voulez utiliser comme source pour votre réplica en lecture.

  4. Sous Actions, choisissez Créer des réplicas en lecture.

  5. Sous Identifiant de l'instance DB, saisissez un nom pour le réplica en lecture.

  6. Choisissez les spécifications de votre instance. Nous vous recommandons d'utiliser le même type de stockage et la même classe d'instance de base de données que l'instance de base de données source pour le réplica en lecture.

  7. Pour Déploiement Multi-AZ, choisissez Oui afin de créer une instance de secours de votre réplica dans une autre zone de disponibilité pour la prise en charge du basculement pour le réplica.

    Note

    La création de votre réplica en lecture en tant qu'instance de base de données multi-AZ est indépendante du fait que la base de données source soit ou non une instance de base de données multi-AZ.

  8. Pour créer un réplica en lecture chiffré :

    1. Choisissez Activer le chiffrement.

    2. Pour AWS KMS key, choisissez l'identificateur AWS KMS keyde la clé KMS.

    Note

    L'instance de base de données source doit être chiffrée. Pour en savoir plus sur le chiffrement de l'instance de bases de données source, consultez Chiffrement des ressources Amazon RDS.

  9. Spécifiez d'autres paramètres, tels que la scalabilité automatique du stockage.

    Pour obtenir des informations sur chaque paramètre, consultez Paramètres des instances de base de données.

  10. Choisissez Créer un réplica en lecture.

Une fois le réplica en lecture créé, vous pouvez le voir sur la page Bases de données de la console RDS. Il affiche le réplica dans la colonne Rôle .

Pour créer un réplica en lecture à partir d'une instance de base de données source, utilisez la commande AWS CLI create-db-instance-read-replica. Cet exemple permet également la scalabilité automatique du stockage.

Vous pouvez spécifier d'autres paramètres. Pour plus d'informations sur chaque paramètre, consultez Paramètres des instances de base de données.

Exemple

Pour Linux, macOS ou Unix :

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance \ --max-allocated-storage 1000

Pour Windows :

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance ^ --max-allocated-storage 1000

Pour créer un réplica en lecture à partir d'une instance de base de données MySQL, MariaDB, Oracle, PostgreSQL ou SQL Server source, appelez l'opération CreateDBInstanceReadReplica de l'API Amazon RDS avec les paramètres requis suivants :

  • DBInstanceIdentifier

  • SourceDBInstanceIdentifier

Promotion d'un réplica en lecture en instance de bases de données autonome

Vous pouvez promouvoir un réplica en lecture an tant qu'une instance de base de données autonome. Lorsque vous effectuez la promotion d'un réplica en lecture, l'instance de bases de données est redémarrée avant de devenir disponible.


                Promotion d'un réplica en lecture

Il existe plusieurs raisons pour lesquelles vous pouvez souhaiter promouvoir un réplica en lecture en une instance de base de données autonome :

  • Exécution d'opérations DDL (MySQL et MariaDB uniquement) – Les opérations DDL, telles que la création ou la reconstruction d'index, peuvent prendre du temps et imposer une pénalité importante de performances à votre instance de base de données. Vous pouvez exécuter ces opérations sur un réplica en lecture MySQL ou MariaDB une fois que ce réplica en lecture est synchronisé avec son instance de bases de données principale. Ensuite, vous pouvez promouvoir le réplica en lecture et indiquer à vos applications d'utiliser l'instance promue.

  • Partitionnement – Le partitionnement incarne l'architecture « ne rien partager » et implique essentiellement la décomposition d'une grande base de données en plusieurs bases de données plus petites. Pour fractionner une base de données, l'une des méthodes consiste à fractionner les tables qui ne sont pas jointes dans la même requête sur différents hôtes. L'autre méthode consiste à dupliquer une table entre plusieurs hôtes, puis à utiliser un algorithme de hachage pour déterminer l'hôte qui reçoit une mise à jour donnée. Vous pouvez créer des réplicas en lecture correspondant à chacune de vos partitions (bases de données plus petites) et les promouvoir quand vous décidez de les convertir en partitions autonomes. Vous pouvez alors extraire l'espace clé (si vous fractionnez les lignes) ou la distribution des tables pour chaque partitionnement selon vos besoins.

  • Implémentation d'une récupération en cas de défaillance – Vous pouvez utiliser la promotion de réplica en lecture comme plan de récupération de données en cas de défaillance de l'instance de base de données principale. Cette approche complète la réplication synchrone, la détection automatique d'échec et le basculement.

    Si vous êtes conscient des ramifications et des limitations de la réplication asynchrone et que vous souhaitez toujours utiliser la promotion de réplica en lecture pour la récupération des données, vous pouvez le faire. Pour cela, commencez par créer un réplica en lecture, puis surveillez l'instance de base de données principale pour détecter les pannes. En cas de panne, procédez comme suit :

    1. Promouvez le réplica en lecture.

    2. Dirigez le trafic de base de données vers l'instance de bases de données promue.

    3. Créez un réplica en lecture de remplacement avec l'instance de base de données promue comme source.

Lorsque vous effectuez la promotion d'un réplica en lecture, la nouvelle instance de base de données créée conserve le groupe d'options et le groupe de paramètres de l'ancien réplica en lecture. Le processus de promotion peut prendre plusieurs minutes ou plus longtemps, selon la taille du réplica en lecture. Une fois le réplica en lecture promu en une nouvelle instance de base de données, il est similaire à toute autre instance de base de données. Par exemple, vous pouvez créer des réplicas en lecture à partir de la nouvelle instance de base de données et effectuer des opérations de restauration à un moment donné. Comme l'instance de bases de données promue n'est plus un réplica en lecture, vous ne pouvez pas l'utiliser comme cible de réplication. Si une instance de base de données source possède plusieurs réplicas en lecture, la promotion d'un des réplicas en lecture en instance de base de données n'a aucun effet sur les autres réplicas.

La durée de la sauvegarde dépend du nombre de modifications apportées à la base de données depuis la dernière sauvegarde. Si vous souhaitez promouvoir un réplica en lecture en instance autonome, nous vous recommandons d'activer les sauvegardes et d'en effectuer au moins une avant la promotion. En outre, vous ne pouvez pas promouvoir un réplica en lecture en une instance autonome lorsque son état est backing-up. Si vous avez activé des sauvegardes sur votre réplica en lecture, configurez la fenêtre de sauvegarde automatique afin que les sauvegardes quotidiennes n'interfèrent pas avec la promotion du réplica en lecture.

Les étapes suivantes montrent le processus général de promotion d'un réplica en lecture en instance de base de données :

  1. Arrêtez l'écriture de toute transaction sur l'instance de base de données principale, puis attendez que toutes les mises à jour soient effectuées sur le réplica en lecture. Les mises à jour de la base de données ont lieu sur les réplica en lecture après avoir eu lieu sur l'instance de base de données principale, et cette latence de réplication peut varier de façon significative. Utilisez la métrique Replica Lag pour déterminer à quel moment toutes les mises à jour ont été effectuées sur le réplica en lecture.

  2. Pour MySQL et MariaDB uniquement : si vous avez besoin d'apporter des modifications au réplica en lecture MySQL ou MariaDB, vous devez affecter au paramètre read_only la valeur 0 dans le groupe de paramètres de base de données du réplica en lecture. Vous pouvez alors effectuer toutes les opérations DDL requises, telles que la création d'index, sur le réplica en lecture. Les actions entreprises sur le réplica en lecture n'affectent pas la performance de l'instance de base de données principale.

  3. Promouvez le réplica en lecture en utilisant l'option Promote (Promouvoir) sur la console Amazon RDS, la commande promote-read-replica de l'AWS CLI ou l'opération de l'API Amazon RDS PromoteReadReplica.

    Note

    Le processus de promotion dure quelques minutes. Lorsque vous promouvez un réplica en lecture, la réplication est arrêtée et le réplica en lecture est redémarré. Une fois le redémarrage terminé, le réplica en lecture est disponible en tant que nouvelle instance de base de données.

  4. (Facultatif) Modifiez la nouvelle instance de base de données pour en faire un déploiement multi-AZ. Pour plus d'informations, consultez Modification d'une instance de base de données Amazon RDS et Déploiements multi-AZ pour une haute disponibilité.

Pour promouvoir un réplica en lecture en tant qu'instance de base de données autonome

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans la console Amazon RDS, choisissez Bases de données.

    Le volet Bases de données s'affiche. Chaque réplica en lecture affiche Réplica dans la colonne Rôle.

  3. Choisissez le réplica en lecture que vous voulez promouvoir.

  4. Pour Actions, choisissez Promote (Promouvoir).

  5. Dans la page Promouvoir le réplica en lecture, saisissez la période de rétention des sauvegardes et la fenêtre de sauvegarde pour l'instance de base de données nouvellement promue.

  6. Lorsque les paramètres vous conviennent, choisissez Continue.

  7. Dans la page de confirmation, choisissez Promouvoir le réplica en lecture.

Pour promouvoir un réplica en lecture en tant qu'instance de base de données autonome, utilisez la commande AWS CLI de lapromote-read-replica.

Exemple

Pour Linux, macOS ou Unix :

aws rds promote-read-replica \ --db-instance-identifier myreadreplica

Pour Windows :

aws rds promote-read-replica ^ --db-instance-identifier myreadreplica

Pour promouvoir un réplica en lecture en tant qu'instance de base de données autonome, appelez l'opération PromoteReadReplica de l'API Amazon RDS avec le paramètre requis DBInstanceIdentifier.

Supervision de la réplication en lecture

Vous pouvez superviser le statut d'un réplica en lecture de différentes manières. La console Amazon RDS affiche le statut d'un réplica en lecture dans la section Replication (Réplication) de l'onglet Connectivity & security (Connectivité et sécurité), dans les détails du réplica en lecture. Pour consulter les détails d'un réplica en lecture, cliquez sur son nom dans la liste des instances de base de données de la console Amazon RDS.


                Statut du réplica en lecture

Vous pouvez également consulter le statut d'un réplica en lecture à l'aide de la commande de l'AWS CLI describe-db-instances ou de l'opération de l'API Amazon RDS DescribeDBInstances.

Le statut d'un réplica en lecture peut avoir les valeurs suivantes :

  • replicating (réplication en cours) – Le réplica en lecture réplique correctement.

  • réplication dégradée (SQL Server uniquement)– Les réplicas reçoivent des données de l'instance principale, mais une ou plusieurs bases de données peuvent ne pas recevoir de mises à jour. Cela peut se produire, par exemple, lorsqu'un réplica est en train de configurer des bases de données nouvellement créées.

    L'état ne passe pas de replication degraded à error, à moins qu'une erreur ne se produise pendant l'état dégradé.

  • error (erreur) – Une erreur s'est produite dans le cadre de la réplication. Examinez le champ Replication Error (Erreur de réplication) dans la console Amazon RDS ou le journal des événements pour déterminer l'erreur exacte. Pour plus d'informations sur la résolution d'une erreur de réplication, consultez Résolution d'un problème de réplica en lecture MySQL.

  • terminated (arrêté) (MariaDB, MySQL ou PostgreSQL uniquement) – La réplication est arrêtée. Cela se produit si la réplication est arrêtée pendant plus de trente jours consécutifs, manuellement ou en raison d'une erreur de réplication. Dans ce cas, Amazon RDS met fin à la réplication entre l'instance de base de données principale et tous les réplicas en lecture. Amazon RDS fait cela pour éviter l'augmentation des besoins en stockage sur l'instance de base de données source et de longs délais de basculement.

    Une réplication interrompue peut affecter le stockage, car les journaux peuvent croître en taille et en nombre en raison du volume élevé des messages d'erreur consignés dans le journal. Une réplication interrompue peut également affecter la récupération en cas de défaillance en raison du temps dont a besoin Amazon RDS pour conserver et traiter le grand nombre de journaux au cours de la récupération.

  • stopped (interrompue) (MariaDB ou MySQL uniquement) – La réplication s'est interrompue en raison d'une demande initiée par le client.

  • replication stop point set (point d'arrêt de réplication réglé) (MySQL uniquement) – Un point d'arrêt de réplication a été réglé par le client à l'aide de la procédure stockée mysql.rds_start_replication_until et la réplication est en cours.

  • replication stop point reached (point d'arrêt de réplication atteint) (MySQL uniquement) – Un point d'arrêt de réplication a été réglé par le client à l'aide de la procédure stockée mysql.rds_start_replication_until et la réplication est arrêtée, car le point d'arrêt est atteint.

Vous pouvez voir où une instance de base de données est répliquée et, le cas échéant, vérifier son état de réplication. Sur la page Bases de données de la console RDS, elle affiche Primaire dans la colonne Rôle . Choisissez son nom d'instance de base de données. Sur sa page détaillée, dans l'onglet Connectivité et sécurité, son état de réplication se trouve sous Réplication.

Surveillance du retard de réplication

Vous pouvez surveiller le retard de réplication dans Amazon CloudWatch en consultant la métrique Amazon RDS ReplicaLag.

Pour MySQL et MariaDB, la métrique ReplicaLag contient la valeur du champ Seconds_Behind_Master de la commande SHOW REPLICA STATUS. Les causes courantes du retard de réplication pour MySQL et MariaDB sont les suivantes :

  • Une indisponibilité du réseau.

  • L'écriture dans des tables avec des index sur un réplica en lecture. Si le paramètre read_only n'a pas pour valeur 0 sur le réplica en lecture, il peut interrompre la réplication.

  • Utilisation d'un moteur de stockage non transactionnel tel que MyISAM. La réplication est prise en charge uniquement pour le moteur de stockage InnoDB sur MySQL et pour le moteur de stockage XtraDB sur MariaDB.

Note

Les versions précédentes de MariaDB et MySQL utilisaient SHOW SLAVE STATUS à la place de SHOW REPLICA STATUS. Si vous utilisez une version de MariaDB antérieure à la version 10.5 ou MySQL antérieure à la version 8.0.23, utilisez alors SHOW SLAVE STATUS.

Lorsque la métrique ReplicaLag atteint 0, le réplica a rattrapé l'instance de bases de données principale. Si la métrique ReplicaLag retourne -1, la réplication n'est actuellement pas active. ReplicaLag = -1 est équivalent à Seconds_Behind_Master = NULL.

Pour Oracle, la métrique ReplicaLag correspond à la somme de la valeur Apply Lag et à la différence entre la durée actuelle et la valeur DATUM_TIME du retard appliqué. La valeur DATUM_TIME correspond à la dernière heure à laquelle le réplica en lecture a reçu des données de son instance de base de données source. Pour plus d'informations, veuillez consulter V$DATAGUARD_STATS dans la documentation d'Oracle.

Pour SQL Server, la métrique ReplicaLag correspond au décalage maximal des bases de données qui ont pris du retard, en secondes. Par exemple, si vous avez deux bases de données qui accusent respectivement un retard de 5 secondes et 10 secondes, alors ReplicaLag a pour valeur 10 secondes. La métrique ReplicaLag renvoie la valeur de la requête suivante.

SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;

Pour plus d'informations, veuillez consulter secondary_lag_seconds dans la documentation Microsoft.

ReplicaLag renvoie -1 si RDS ne peut pas déterminer le retard, par exemple lors de la configuration du réplica, ou lorsque le réplica en lecture est à l'état error.

Note

Les nouvelles bases de données ne sont pas incluses dans le calcul du retard tant qu'elles ne sont pas accessibles sur le réplica en lecture.

Pour PostgreSQL, la métrique ReplicaLag renvoie la valeur de la requête suivante.

SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag

PostgreSQL versions 9.5.2 et ultérieures utilise des emplacements physiques de réplication pour gérer la rétention WAL (Write Ahead Log) sur l'instance source. Pour chaque instance de réplica en lecture entre régions, Amazon RDS crée un emplacement de réplication physique et l'associe à l'instance. Deux métriques Amazon CloudWatch, Oldest Replication Slot Lag et Transaction Logs Disk Usage, indiquent le retard du dernier réplica en termes de données WAL reçues et le volume de stockage utilisé pour les données WAL. La valeur Transaction Logs Disk Usage peut considérablement augmenter lorsqu'un réplica en lecture entre régions présente un retard important.

Pour plus d'informations sur la surveillance d'une instance de base de données avec CloudWatch, veuillez consulter Surveillance des métriques Amazon RDS avec Amazon CloudWatch.

Création d'un réplica en lecture dans une autre Région AWS

Avec Amazon RDS, vous pouvez créer un réplica en lecture dans une Région AWS différente de l’instance de base de données source.


                Configuration d'un réplica en lecture entre régions

Vous créez un réplica en lecture dans une autre Région AWS pour effectuer les opérations suivantes :

  • Améliorer vos capacités de reprise après sinistre.

  • Mettre à l'échelle des opérations de lecture dans une Région AWS plus proche de vos utilisateurs.

  • Faciliter la migration depuis un centre de données d'une Région AWS vers un centre de données d'une autre Région AWS.

La création d'un réplica en lecture dans une Région AWS différente de celle de l'instance source est similaire à la création d'un réplica dans la même Région AWS. Vous pouvez utiliser la AWS Management Console, exécuter la commande create-db-instance-read-replica ou appeler l'opération de l'API CreateDBInstanceReadReplica.

Note

Pour que vous puissiez créer un réplica en lecture chiffré dans une Région AWS différente de celle de l'instance de base de données source, cette instance de base de données source doit être chiffrée.

Disponibilité des régions et des versions

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 avec la réplication entre régions, consultez Réplicas en lecture entre Régions.

Création d'un réplica en lecture entre régions

Les procédures suivantes expliquent comment créer un réplica en lecture à partir d'une instance de base de données MariaDB, MySQL, Oracle ou PostgreSQL source dans une autre Région AWS.

Vous pouvez créer un réplica en lecture entre Régions AWS à l'aide d'AWS Management Console.

Pour créer un réplica en lecture entre Régions AWS avec la console

  1. Connectez-vous à l'AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans la panneau de navigation, choisissez Databases (Bases de données).

  3. Choisissez l'instance de base de données MariaDB, MySQL, Oracle ou PostgreSQL que vous souhaitez utiliser comme source pour un réplica en lecture.

  4. Sous Actions, choisissez Créer des réplicas en lecture.

  5. Sous Identifiant de l'instance DB, saisissez un nom pour le réplica en lecture.

  6. Choisissez la Région de destination.

  7. Choisissez les spécifications de l'instance que vous souhaitez utiliser. Nous vous recommandons d'utiliser le même type de stockage et la même classe d'instance de base de données pour le réplica en lecture.

  8. Pour créer un réplica en lecture chiffré dans une autre Région AWS :

    1. Choisissez Activer le chiffrement.

    2. Pour AWS KMS key, choisissez l'identifiant AWS KMS key de la clé KMS dans la Région AWS de destination.

    Note

    L'instance de base de données source doit être chiffrée pour que vous puissiez créer un réplica en lecture chiffré. Pour en savoir plus sur le chiffrement de l'instance de bases de données source, consultez Chiffrement des ressources Amazon RDS.

  9. Choisissez d'autres options, telles que la scalabilité automatique du stockage.

  10. Choisissez Créer un réplica en lecture.

Pour créer un réplica en lecture à partir d'une instance de base de données MySQL, MariaDB, Oracle ou PostgreSQL source dans une autre Région AWS, vous pouvez utiliser la commande create-db-instance-read-replica. Dans ce cas, vous utilisez create-db-instance-read-replica à partir de la Région AWS où vous voulez placer le réplica en lecture (région de destination) et vous spécifiez l'Amazon Resource Name (ARN) pour l'instance de base de données source. Un ARN identifie de façon unique une ressource créée dans Amazon Web Services.

Par exemple, si votre instance de base de données source se trouve dans la région US East (N. Virginia), l'ARN ressemble à l'exemple suivant :

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Pour en savoir plus sur les ARN, consultez Utilisation des Amazon Resource Names (ARN) dans Amazon RDS.

Pour créer un réplica en lecture dans une Région AWS différente de celle de l'instance de base de données source, vous pouvez utiliser la commande AWS CLI create-db-instance-read-replica à partir de la Région AWS de destination. Les paramètres suivants sont nécessaires pour créer un réplica en lecture dans une autre Région AWS :

  • --region – La Région AWS de destination dans laquelle le réplica en lecture est créé.

  • --source-db-instance-identifier – Identifiant d'instance de base de données de l'instance de base de données source. Cet identifiant doit être au format ARN pour la Région AWS source.

  • --db-instance-identifier – Identifiant du réplica en lecture dans la Région AWS de destination.

Exemple d'un réplica en lecture entre régions

Le code suivant crée un réplica en lecture dans la région USA Ouest (Oregon) à partir d'une instance de base de données source dans la région US East (N. Virginia).

Pour Linux, macOS ou Unix :

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Pour Windows :

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Le paramètre suivant est également nécessaire pour créer un réplica en lecture chiffré dans une autre Région AWS :

  • --kms-key-id – Identifiant AWS KMS key de la clé KMS à utiliser pour chiffrer le réplica en lecture dans la Région AWS de destination.

Exemple d'un réplica en lecture entre régions chiffré

Le code suivant crée un réplica en lecture chiffré dans la région USA Ouest (Oregon) à partir d'une instance de base de données source dans la région US East (N. Virginia).

Pour Linux, macOS ou Unix :

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance \ --kms-key-id my-us-west-2-key

Pour Windows :

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance ^ --kms-key-id my-us-west-2-key

L'option --source-region est obligatoire lorsque vous créez un réplica en lecture chiffré entre la région AWS GovCloud (US-East) et la région AWS GovCloud (US-West). Pour --source-region, spécifiez la Région AWS de l'instance de base de données source.

Si --source-region n'est pas spécifié, spécifiez une valeur --pre-signed-url. Une URL présignée est une URL qui contient une demande signée via Signature Version 4 pour la commande create-db-instance-read-replica qui est appelée dans la Région AWS source. Pour en savoir plus sur l'option pre-signed-url, consultez create-db-instance-read-replica dans le manuel AWS CLI Command Reference.

Pour créer un réplica en lecture à partir d'une instance de base de données MySQL, MariaDB, Oracle ou PostgreSQL source dans une autre Région AWS, vous pouvez appeler l'opération d'API Amazon RDS CreateDBInstanceReadReplica. Dans ce cas, vous appelez CreateDBInstanceReadReplica à partir de la Région AWS où vous voulez placer le réplica en lecture (région de destination) et vous spécifiez l'Amazon Resource Name (ARN) pour l'instance de base de données source. Un ARN identifie de façon unique une ressource créée dans Amazon Web Services.

Pour créer un réplica en lecture chiffré dans une Région AWS différente de celle de l'instance de base de données source, vous pouvez utiliser l'opération d'API Amazon RDS CreateDBInstanceReadReplica à partir de la Région AWS de destination. Pour créer un réplica en lecture chiffré dans une autre Région AWS, vous devez spécifier une valeur pour PreSignedURL. La valeur de PreSignedURL doit contenir une demande pour l'opération CreateDBInstanceReadReplica à appeler dans la Région AWS source dans laquelle le réplica en lecture est créé. Pour en savoir plus sur PreSignedUrl, consultez CreateDBInstanceReadReplica.

Par exemple, si votre instance de bases de données source se trouve dans la région US East (N. Virginia), l'ARN ressemble à ce qui suit.

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Pour en savoir plus sur les ARN, consultez Utilisation des Amazon Resource Names (ARN) dans Amazon RDS.

Exemple

https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=&region-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>

Processus de réplication entre régions au sein d'Amazon RDS

Amazon RDS utilise le processus ci-dessous pour créer un réplica en lecture entre régions. Selon les Régions AWS impliquées et le volume de données figurant dans les bases de données, ce processus peut prendre des heures. Vous pouvez utiliser ces informations pour déterminer l'avancement du processus lorsque vous créez un réplica en lecture entre régions :

  1. Amazon RDS commence par configurer l'instance DB source comme source de réplication et définit le statut sur modifying (modification).

  2. Amazon RDS commence à configurer le réplica en lecture spécifié dans la Région AWS de destination et définit l'état sur creating (création en cours).

  3. Amazon RDS crée un instantané de base de données automatisé de l'instance de base de données source dans la Région AWS source. Le format du nom de l'instantané de base de données est : rds:<InstanceID>-<timestamp>, où <InstanceID> est l'identifiant de l'instance source, et <timestamp> est la date et l'heure du début de la copie. Par exemple, rds:mysourceinstance-2013-11-14-09-24 a été créé à partir de l'instance mysourceinstance le 2013-11-14-09-24. Pendant la création de l'instantané de base de données automatique, le statut de l'instance de base de données source reste modifying (modification), le statut du réplica en lecture reste creating (création) et le statut de l'instantané de base de données est creating (création). La colonne d'avancement de la page de l'instantané de base de données dans la console indique le niveau d'avancement de la création de l'instantané de base de données. Une fois l'instantané de base de données terminé, le statut de l'instantané de base de données et celui de l'instance de base de données source sont définis sur available (disponible).

  4. Amazon RDS commence une copie de l'instantané entre régions pour le transfert de données initial. La copie de l'instantané est répertoriée en tant qu'instantané automatisé dans la Région AWS de destination avec un statut creating (création en cours). Elle porte le même nom que l'instantané de base de données source. La colonne d'avancement de l'affichage de l'instantané de base de données indique le niveau d'avancement de la copie. Une fois la copie terminée, le statut de la copie de l'instantané de base de données est défini sur available (disponible).

  5. Amazon RDS utilise alors l'instantané de base de données copié pour le chargement initial des données sur le réplica en lecture. Au cours de cette phase, le réplica en lecture figure dans la liste des instances de bases de données de la destination, avec le statut creating (création). Une fois le chargement terminé, le statut du réplica en lecture est défini sur available (disponible) et la copie de l'instantané de base de données est supprimée.

  6. Lorsque le réplica en lecture atteint le statut disponible, Amazon RDS commence par répliquer les modifications apportées à l'instance source depuis le début de l'opération de création du réplica en lecture. Durant cette phase, la durée du retard de réplication pour le réplica en lecture est supérieure à 0.

    Pour plus d'informations sur la durée du retard de réplication, veuillez consulter Supervision de la réplication en lecture.

Considérations liées à la réplication entre régions

Toutes les considérations liées à la réplication au sein d'une Région AWS s'appliquent à la réplication entre régions. Les considérations supplémentaires suivantes s'appliquent lors d'une réplication entre Régions AWS :

  • Une instance de base de données source peut avoir des réplicas en lecture entre régions dans plusieurs Régions AWS.

  • Pour les instances de base de données Microsoft SQL Server, Oracle et PostgreSQL, vous pouvez uniquement créer un réplica en lecture entre régions Amazon RDS qu'à partir d'une instance de base de données source Amazon RDS qui n'est pas un réplica en lecture d'une autre instance de base de données Amazon RDS. Cette limitation ne s'applique pas aux instances de bases de données MariaDB et MySQL.

  • Vous pouvez vous attendre à un degré supérieur de latence pour tout réplica en lecture figurant dans une autre Région AWS que celle de l'instance source. Cette latence vient des canaux de réseau plus longs entre les centres de données régionaux.

  • Pour ces réplicas en lecture entre régions, toutes les commandes de création de réplica en lecture qui spécifient le paramètre --db-subnet-group-name doivent spécifier un groupe de sous-réseaux DB du même VPC.

  • En raison de la limite du nombre d'entrées de liste de contrôle d'accès (ACL) pour un VPC, nous ne pouvons pas garantir plus de cinq instances de réplica en lecture entre régions.

  • Dans la plupart des cas, le réplica en lecture utilise le groupe de paramètres de base de données par défaut et le groupe d'options de base de données par défaut pour le moteur de base de données spécifié.

    Pour les moteurs de base de données MySQL et Oracle, vous pouvez spécifier un groupe de paramètres personnalisé pour le réplica en lecture dans l'option --db-parameter-group-name de la commande AWS CLI create-db-instance-read-replica. Vous ne pouvez pas spécifier un groupe de paramètres personnalisé lorsque vous utilisez AWS Management Console.

  • Le réplica en lecture utilise le groupe de sécurité par défaut.

  • Pour les instances de base de données MariaDB, MySQL et Oracle, lorsque la source d'un réplica en lecture entre régions est supprimée, le réplica en lecture est promu.

  • Pour les instances de base de données PostgreSQL, lorsque l'instance de base de données source d'un réplica en lecture entre régions est supprimée, l'état de réplication du réplica en lecture est défini sur terminated. Le réplica en lecture n'est pas promu.

    Vous devez promouvoir le réplica en lecture ou le supprimer manuellement.

Demande d'un réplica en lecture entre régions

Pour communiquer avec la région source afin de demander la création d'un réplica en lecture entre régions, le demandeur (rôle IAM ou utilisateur IAM) doit avoir accès à l'instance de base de données source et à la région source.

Certaines conditions de la politique IAM du demandeur peuvent occasionner l'échec de la demande. Les exemples suivants supposent que l'instance de base de données source se trouve dans la USA Est (Ohio) et que le réplica en lecture est créé dans la US East (N. Virginia). Ces exemples illustrent les conditions de la politique IAM du demandeur qui occasionnent l'échec de la demande :

  • La stratégie du demandeur est assortie d'une condition pour la aws:RequestedRegion.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }

    La demande échoue car la politique interdit l'accès à la région source. Pour qu'une demande aboutisse, spécifiez les régions source et destination.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
  • La politique du demandeur interdit l'accès à l'instance de base de données source.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...

    Pour qu'une demande aboutisse, spécifiez à la fois l'instance source et le réplica.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
  • La stratégie du demandeur refuse aws:ViaAWSService.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }

    La communication avec la région source est effectuée par RDS pour le compte du demandeur. Pour qu'une demande aboutisse, ne refusez pas les appels effectués par les services AWS.

  • La stratégie du demandeur est assortie d'une condition pour aws:SourceVpc ou aws:SourceVpce.

    Ces demandes peuvent échouer car l'appel effectué par RDS à la région distante ne provient pas du point de terminaison VPC ou du VPC spécifié.

Si vous devez utiliser l'une des conditions précédentes, qui sont susceptibles d'occasionner l'échec d'une requête, vous pouvez inclure une deuxième instruction avec aws:CalledVia dans votre politique pour que la demande soit couronnée de succès. Par exemple, vous pouvez utiliser aws:CalledVia avec aws:SourceVpce comme indiqué ici :

... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }

Pour de plus amples informations, veuillez consulter Policies and permissions in IAM (Stratégies et autorisations dans IAM) dans le IAM Guide de l'utilisateur.

Autorisation du réplica en lecture

Après qu'une demande de création d'un réplica en lecture de base de données inter-région a renvoyé success, RDS démarre la création du réplica en arrière-plan. Une autorisation devant permettre à RDS d'accéder à l'instance de base de données source est créée. Cette autorisation associe l'instance de base de données source au réplica en lecture et permet à RDS de ne copier que vers le réplica en lecture spécifié.

L'autorisation est vérifiée par RDS à l'aide de l'autorisation rds:CrossRegionCommunication dans le rôle IAM lié au service. Si le réplica est autorisé, RDS communique avec la région source et accomplit la création du réplica.

RDS n'a pas accès aux instances DB qui n'ont pas été autorisées auparavant par une demande CreateDBInstanceReadReplica. L'autorisation est révoquée lorsque la création du réplica en lecture est terminée.

RDS utilise le rôle lié au service afin de vérifier l'autorisation dans la région source. Si vous supprimez le rôle lié au service durant le processus de création de réplication, la création échoue.

Pour plus d'informations, consultez Utilisation des rôles liés à un service dans le IAM Guide de l'utilisateur.

Utilisation des informations d'identification AWS Security Token Service

Les jetons de séance du point de terminaison AWS Security Token Service (AWS STS) global sont valides uniquement dans les Régions AWS qui sont activées par défaut (régions commerciales). Si vous utilisez des informations d'identification à partir de l'opération assumeRole de l'API dans AWS STS, utilisez le point de terminaison régional si la région source est une région opt-in. Sinon, la demande échoue. La raison en est que vos informations d'identification doivent être valides dans les deux régions, ce qui est vrai pour les régions opt-in uniquement lorsque le point de terminaison AWS STS régional est utilisé.

Pour utiliser le point de terminaison global, assurez-vous qu'il est activé dans les opérations pour les deux régions. Définissez le point de terminaison global sur Valid in all Régions AWS dans les paramètres du compte AWS STS.

La même règle s'applique aux informations d'identification dans le paramètre URL pré-signé.

Pour plus d'informations, consultez Gestion de AWS STS dans une Région AWS dans le Guide de l'utilisateur IAM.

Coûts de la réplication entre régions

Les données transférées pour la réplication entre régions génèrent des frais de transfert de données Amazon RDS. Ces actions de réplication entre régions génèrent des frais pour les données transférées hors de la Région AWS source :

  • Lorsque vous créez un réplica en lecture, Amazon RDS prend un instantané de l'instance source et transfère cet instantané vers la Région AWS du réplica en lecture.

  • Pour chaque modification des données effectuée dans les bases de données source, Amazon RDS transfère les données de la Région AWS source vers la Région AWS du réplica en lecture.

Pour de plus amples informations sur la tarification du transfert des données, veuillez consulter la Tarification Amazon RDS.

Pour les instances MySQL et MariaDB, vous pouvez réduire les coûts de transfert de données en réduisant le nombre de réplicas en lecture entre régions que vous créez. Par exemple, supposons que vous disposez d'une instance de base de données source dans une Région AWS et que vous souhaitez disposer de trois réplicas en lecture dans une autre Région AWS. Dans ce cas, vous créez uniquement l'un des réplicas en lecture à partir de l'instance de base de données source. Ensuite, vous créez les deux autres réplicas à partir du premier réplica en lecture plutôt qu'à partir de l'instance de base de données source.

Par exemple, si vous avez source-instance-1 dans une Région AWS, vous pouvez procéder comme suit :

  • Créez read-replica-1 dans la nouvelle Région AWS en spécifiant source-instance-1 comme source.

  • Créez read-replica-2 à partir de read-replica-1.

  • Créez read-replica-3 à partir de read-replica-1.

Dans cet exemple, seules les données transférées de source-instance-1 vers read-replica-1 vous sont facturées. Les données transférées de read-replica-1 vers les deux autres réplicas ne vous sont pas facturées, car ils figurent tous dans la même Région AWS. Si vous créez les trois réplicas directement à partir de source-instance-1, les transferts de données vers les trois réplicas vous sont facturés.