Utilisation des réplicas en lecture pour Microsoft SQL Server dans 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.

Utilisation des réplicas en lecture pour Microsoft SQL Server dans Amazon RDS

Vous utilisez généralement des réplicas en lecture pour configurer la réplication entre instances de base de données Amazon RDS. Pour obtenir des informations générales sur les réplicas en lecture, veuillez consulter Utilisation des réplicas en lecture d'instance de base de données.

Cette section contient des informations spécifiques sur l'utilisation des réplicas en lecture sur Amazon RDS pour SQL Server.

Configuration des réplicas en lecture pour SQL Server

Avant qu'une instance de base de données puisse être utilisée comme instance source pour la réplication, vous devez activer les sauvegardes automatiques sur l'instance de base de données source. Pour cela, vous devez définir la période de rétention des sauvegardes sur une valeur autre que 0. Pour définir ce type de déploiement, l'activation des sauvegardes automatiques doit également être effective.

La création d'un réplica en lecture SQL Server ne nécessite pas d'arrêt de l'instance de base de données principale. Amazon RDS définit les paramètres et autorisations nécessaires pour l'instance de base de données source et le réplica en lecture sans interruption de service. Un instantané de l'instance de base de données source est pris, et devient le réplica en lecture. Aucune interruption de service ne se produit lorsque vous supprimez un réplica en lecture.

Vous pouvez créer jusqu'à 15 réplicas en lecture à partir d'une seule instance de base de données source. Pour que la réplication fonctionne efficacement, nous vous recommandons de configurer chaque réplica en lecture avec la même quantité de ressources de calcul et de stockage que l'instance de base de données source. Si vous mettez à l'échelle l'instance de base de données source, faites-le également pour les réplicas en lecture.

La version du moteur de base de données SQL Server de l'instance de base de données source et de tous ses réplicas en lecture doit être identique. Amazon RDS met à niveau la base de données principale immédiatement après la mise à niveau des réplicas en lecture, indépendamment de la fenêtre de maintenance. Pour de plus amples informations sur la mise à niveau de la version du moteur de base de données, veuillez consulter la section Mise à niveau du moteur de base de données Microsoft SQL Server.

Pour qu'un réplica en lecture reçoive et applique les modifications de la source, il doit disposer de ressources de calcul et de stockage suffisantes. Si un réplica en lecture atteint sa capacité en ce qui concerne les ressources de calcul, de réseau ou de stockage, il arrête de recevoir ou d'appliquer les modifications provenant de sa source. Vous pouvez modifier les ressources de stockage et d'UC d'un réplica en lecture indépendamment de sa source et d'autres réplicas en lecture.

Limites des réplicas en lecture avec SQL Server

Les limites suivantes s'appliquent aux réplicas en lecture SQL Server sur Amazon RDS :

  • Les réplicas en lecture sont uniquement disponibles sur le moteur SQL Server Enterprise Edition (EE).

  • Les répliques en lecture sont disponibles pour les versions de SQL Server 2016—2022.

  • Vous pouvez créer jusqu'à 15 réplicas en lecture à partir d'une seule instance de base de données source. La réplication peut être retardée lorsque votre instance de base de données source possède plus de 5 répliques de lecture.

  • Les réplicas en lecture sont uniquement disponibles pour les instances de base de données exécutées sur les classes d'instances de base de données avec quatre vCPU ou plus.

  • Une réplique en lecture prend en charge jusqu'à 100 bases de données selon le type de classe d'instance et le mode de disponibilité. Vous devez créer des bases de données sur l'instance de base de données source pour les répliquer automatiquement dans les répliques de lecture. Vous ne pouvez pas choisir des bases de données individuelles à répliquer. Pour plus d’informations, consultez Limites propres aux instances de bases de données Microsoft SQL Server.

  • Vous ne pouvez pas supprimer une base de données d'une réplique lue. Pour supprimer une base de données, supprimez-la de l'instance de base de données source avec la procédure rds_drop_database stockée. Pour plus d’informations, consultez Suppression d'une base de données Microsoft SQL Server.

  • Si l'instance de base de données source utilise le chiffrement transparent des données (TDE) pour chiffrer les données, la réplique en lecture configure également automatiquement le TDE.

    Si l'instance de base de données source utilise une clé KMS pour chiffrer les données, les répliques de lecture dans la même région utilisent la même clé KMS. Pour les répliques de lecture entre régions, vous devez spécifier une clé KMS provenant de la région de la réplique de lecture lors de la création de la réplique de lecture. Vous ne pouvez pas modifier la clé KMS d'une réplique en lecture.

  • Les répliques en lecture ont le même fuseau horaire et le même classement que l'instance de base de données source, quel que soit le fuseau de disponibilité dans lequel elles ont été créées.

  • Les réplicas en lecture sont uniquement disponibles pour les instances de base de données exécutées sur les classes d'instances de base de données avec quatre vCPU ou plus.

  • Les éléments suivants ne sont pas pris en charge sur Amazon RDS pour SQL Server :

    • Rétention des sauvegardes des réplicas en lecture

    • Restauration de oint-in-time PC à partir de répliques lues

    • Instantanés manuels de réplicas en lecture

    • Réplicas en lecture multi-AZ

    • Création de réplicas en lecture à partir de réplicas en lecture

    • Synchronisation des connexions utilisateur pour lire les réplicas en lecture

  • Amazon RDS pour SQL Server n'intervient pas pour atténuer un retard de réplica élevé entre une instance de base de données source et ses réplicas en lecture. Assurez-vous que l'instance de base de données et ses réplicas en lecture ont une taille appropriée, en termes de puissance de calcul et de stockage, afin de pouvoir répondre aux besoins de la charge opérationnelle.

  • Vous pouvez effectuer une réplication entre les régions AWS GovCloud (USA Est) et AWS GovCloud (USA Ouest), mais pas à l'intérieur ou à l'extérieur. AWS GovCloud (US) Regions

Considérations relatives aux options pour les réplicas RDS for SQL Server

Avant de créer un réplica RDS for SQL Server, tenez compte des exigences, restrictions et recommandations suivantes :

  • Si votre réplica SQL Server se trouve dans la même région que son instance de base de données source, assurez-vous qu'il appartient au même groupe d'options que l'instance de base de données source. Les modifications apportées au groupe d'options source ou à l'appartenance au groupe d'options source sont propagées aux réplicas. Ces modifications sont appliquées aux réplicas immédiatement après leur application à l'instance de base de données source, quelle que soit la fenêtre de maintenance du réplica.

    Pour plus d'informations sur les groupes d'options, consultez Utilisation de groupes d'options.

  • Lorsque vous créez un réplica SQL Server entre régions, Amazon RDS crée un groupe d'options qui lui est dédié.

    Vous ne pouvez pas supprimer un réplica SQL Server entre régions du groupe d'options qui lui est dédié. Aucune autre instance de base de données ne peut utiliser le groupe d'options dédié à un réplica SQL Server entre régions.

    Les options suivantes sont des options répliquées. Pour ajouter des options répliquées à un réplica SQL Server entre régions, ajoutez-le au groupe d'options de l'instance de base de données source. L'option est également installée sur tous les réplicas de l'instance de base de données source.

    • TDE

    Les options suivantes sont des options non répliquées. Vous pouvez ajouter ou supprimer des options non répliquées dans un groupe d'options dédié.

    • MSDTC

    • SQLSERVER_AUDIT

    • Pour activer l'option SQLSERVER_AUDIT sur le réplica en lecture entre régions, ajoutez l'option SQLSERVER_AUDIT sur le groupe d'options dédié sur le réplica en lecture entre régions et dans le groupe d'options de l'instance source. En ajoutant l'option SQLSERVER_AUDIT sur l'instance source du réplica en lecture SQL Server entre régions, vous pouvez créer un objet d'audit au niveau du serveur et des spécifications d'audit au niveau du serveur sur chacun des réplicas en lecture entre régions de l'instance source. Pour autoriser l'accès aux réplicas en lecture entre régions afin de charger les journaux d'audit complets dans un compartiment Amazon S3, ajoutez l'option SQLSERVER_AUDIT au groupe d'options dédié et configurez les paramètres des options. Le compartiment Amazon S3 que vous utilisez comme cible pour les fichiers d'audit doit se trouver dans la même région que le réplica en lecture entre régions. Vous pouvez modifier le paramètre de l'option pour chaque réplica en lecture entre régions indépendamment afin que chacun puisse accéder à un compartiment Amazon S3 dans sa région respective.

    Les options suivantes ne sont pas prises en charge pour les réplicas en lecture entre régions.

    • SSRS

    • SSAS

    • SSIS

    Les options suivantes sont partiellement prises en charge pour les réplicas en lecture entre régions.

    • SQLSERVER_BACKUP_RESTORE

    • L'instance de base de données source d'un réplica SQL Server entre régions peut avoir l'option SQLSERVER_BACKUP_RESTORE, mais vous ne pouvez pas effectuer de restaurations natives sur l'instance de base de données source tant que vous n'avez pas supprimé tous ses réplicas entre régions. Toutes les tâches de restauration natives existantes seront annulées lors de la création d'un réplica entre régions. Vous ne pouvez pas ajouter l'option SQLSERVER_BACKUP_RESTORE à un groupe d'options dédié.

      Pour plus d'informations sur la sauvegarde et la restauration natives, consultez Importation et exportation de bases de données SQL Server à l'aide de la sauvegarde et de la restauration natives.

    Lorsque vous promouvez un réplica en lecture SQL Server entre régions, le réplica promu se comporte de la même façon que d'autres instances de base de données SQL Server, y compris pour la gestion de ses options. Pour plus d'informations sur les groupes d'options, consultez Utilisation de groupes d'options.

Synchronisation des utilisateurs et des objets de base de données avec un réplica en lecture SQL Server

Tous les identifiants, rôles de serveur personnalisés, tâches d'agent SQL ou autres objets de niveau serveur qui existent dans l'instance de base de données principale au moment de la création d'un réplica en lecture sont censés être présents dans le réplica en lecture nouvellement créé. Toutefois, les objets de niveau serveur qui sont créés dans l'instance de base de données principale après la création du réplica en lecture ne sont pas répliqués automatiquement. Vous devez les créer manuellement dans le réplica en lecture.

Les utilisateurs de base de données sont automatiquement répliqués à partir de l'instance de base de données principale dans le réplica en lecture. La base de données du réplica en lecture étant en mode lecture seule, l'identifiant de sécurité (SID) de l'utilisateur de la base de données ne peut pas être mis à jour dans la base de données. Par conséquent, lors de la création de connexions SQL dans le réplica en lecture, il est essentiel de s'assurer que le SID de cette connexion correspond au SID de la connexion SQL correspondante dans l'instance de base de données principale. Si vous ne synchronisez pas les SID des connexions SQL, ils ne pourront pas accéder à la base de données dans le réplica en lecture. Les connexions authentifiées Windows Active Directory (AD) ne rencontrent pas ce problème, car SQL Server obtient le SID auprès d'Active Directory.

Pour synchroniser une connexion SQL à partir de l'instance de base de données principale vers le réplica en lecture
  1. Connectez-vous à l'instance de base de données principale.

  2. Créez une nouvelle connexion SQL dans l'instance de base de données principale.

    USE [master] GO CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD';
    Note

    Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

  3. Créez un nouvel utilisateur de base de données pour la connexion SQL dans la base de données.

    USE [REPLACE WITH YOUR DB NAME] GO CREATE USER TestLogin1 FOR LOGIN TestLogin1; GO
  4. Vérifiez le SID de la connexion SQL nouvellement créée dans l'instance de base de données principale.

    SELECT name, sid FROM sys.server_principals WHERE name = TestLogin1;
  5. Connectez-vous au réplica en lecture. Créez la nouvelle connexion SQL.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #4];
Comme alternative, si vous avez accès à la base de données de réplica en lecture, vous pouvez corriger l'utilisateur orphelin comme suit :
  1. Connectez-vous au réplica en lecture.

  2. Identifiez les utilisateurs orphelins dans la base de données.

    USE [REPLACE WITH YOUR DB NAME] GO EXEC sp_change_users_login 'Report'; GO
  3. Créez une nouvelle connexion SQL pour l'utilisateur de la base de données orphelin.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #2];

    Exemple :

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'TestPa$$word#1', SID=[0x1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P];
    Note

    Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

Résolution d'un problème de réplica en lecture SQL Server

Vous pouvez surveiller le délai de réplication dans Amazon CloudWatch en consultant la ReplicaLag métrique Amazon RDS. Pour de plus amples informations sur la durée du retard de réplication, veuillez consulter Supervision de la réplication en lecture.

Si le retard de réplication est trop long, vous pouvez utiliser la requête suivante pour obtenir des informations sur le retard

SELECT AR.replica_server_name , DB_NAME (ARS.database_id) 'database_name' , AR.availability_mode_desc , ARS.synchronization_health_desc , ARS.last_hardened_lsn , ARS.last_redone_lsn , ARS.secondary_lag_seconds FROM sys.dm_hadr_database_replica_states ARS INNER JOIN sys.availability_replicas AR ON ARS.replica_id = AR.replica_id --WHERE DB_NAME(ARS.database_id) = 'database_name' ORDER BY AR.replica_server_name;