Création d'un réplica en lecture dans une autre Région AWS - Amazon Relational Database Service

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

Amazon RDS vous permet de créer un réplica en lecture MariaDB, MySQL, Oracle ou PostgreSQL dans une Région AWS différente de celle de l'instance de base de données source. La création d'un réplica en lecture entre plusieurs régions n'est pas prise en charge pour SQL Server sur Amazon RDS.


                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.

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 :

  • Vous pouvez opérer une réplication entre Régions AWS uniquement lorsque vous utilisez les instances de base de données Amazon RDS suivantes :

    • MariaDB (toutes les versions)

    • MySQL (toutes les versions)

    • Oracle Enterprise Edition (EE) d'Oracle Database 12c version 1 (12.1) utilisant les versions 12.1.0.2.v10 ou ultérieures, Oracle Database 12c version 2 (12.2) et Oracle Database 19c utilisant l'architecture non CDB

      Note

      Les instances de base de données Oracle que vous créez à l'aide de l'architecture CDB ne sont pas prises en charge.

      Une licence Active Data Guard est obligatoire. Pour plus d'informations sur les limites des réplicas en lecture entre régions Oracle, veuillez consulter Exigences de réplica pour Oracle.

    • PostgreSQL (toutes versions)

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

  • Vous ne pouvez 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.

  • Vous pouvez opérer une réplication entre les régions AWS GovCloud (USA-East) et AWS GovCloud (US-West), mais pas vers l'intérieur ou l'extérieur d'AWS GovCloud (US).

  • 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.