Quelle est la marche à suivre pour effectuer des sauvegardes natives d'une instance de base de données Amazon RDS exécutant SQL Server ?

Date de la dernière mise à jour : 09/11/2020

Je souhaite effectuer une sauvegarde native de ma base de données utilisateur dans mon instance de base de données Amazon Relational Database Service (Amazon RDS) qui exécute SQL Server. J'ai besoin de stocker le fichier de sauvegarde dans Amazon Simple Storage Service (Amazon S3), ou d'utiliser le fichier de sauvegarde de base de données pour restaurer la même instance de base de données RDS SQL Server ou une autre instance de base de données RDS SQL Server. Comment procéder ?

Brève description

Amazon RDS prend en charge la sauvegarde native et la restauration pour les bases de données Microsoft SQL Server. Vous pouvez créer une sauvegarde complète de votre base de données sur site et stocker le fichier dans Amazon S3. Vous pouvez ensuite restaurer le fichier de sauvegarde sur une instance de base de données Amazon RDS existante qui exécute SQL Server. Vous pouvez également restaurer ce fichier de sauvegarde sur un serveur sur site ou une autre instance de base de données Amazon RDS qui exécute SQL Server.

Résolution

Pour configurer une native de sauvegarde de la base de données SQL Server, utilisez les services suivants :

  • Un compartiment Amazon S3 pour stocker vos fichiers de sauvegarde
  • Un rôle AWS Identity and Access Management (IAM) pour accéder au compartiment
  • L'option SQLSERVER_BACKUP_RESTORE ajoutée à un groupe d'options sur l'instance de base de données

Remarque : créez le compartiment S3 dans la même région que votre instance de base de données RDS.

  1. Ouvrez la console Amazon RDS, puis sélectionnez Option Groups (Groupes d'options) dans le volet de navigation. Choisissez Create Group (Créer un groupe), puis saisissez le nom, la description, le moteur et la version du moteur de votre serveur. Ensuite, choisissez Create (Créer).
  2. Sélectionnez le groupe d'options que vous avez créé, puis Add Option (Ajouter une option). Choisissez SQLSERVER_BACKUP_RESTORE. Il est recommandé de créer un rôle IAM, puis de choisir Add Option (Ajouter une option), de sorte que votre rôle IAM dispose des privilèges requis. Choisissez votre compartiment S3, ou créez-en un. Sélectionnez ensuite Apply Immediately (Appliquer immédiatement), puis Add Option (Ajouter une option).
  3. Associez le groupe d'options à l'instance de base de données en choisissant Databases (Bases de données) dans le volet de navigation, puis choisissez l'instance à sauvegarder. Sélectionnez Actions, puis Modify (Modifier).
  4. Sous Database Options (Options de base de données), choisissez le groupe d'options que vous avez créé, puis Apply Immediately (Appliquer immédiatement) et Continue (Continuer). Passez en revue les informations, puis choisissez Modify DB Instance (Modifier l'instance de base de données). La modification de ce groupe d'options n'entraîne aucun temps d'arrêt, car le redémarrage de l'instance n'est pas obligatoire.
  5. Lorsque le statut passe de modifying (modification en cours) à available (disponible), connectez-vous à l'instance de base de données via SQL Server Management Studio, puis choisissez New Query (Nouvelle requête). Entrez l'une des instructions SQL suivantes pour lancer la sauvegarde de la base de données souhaitée :

Lancer une sauvegarde pour les bases de données non chiffrées

exec msdb.dbo.rds_backup_database 
@source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension', 
@overwrite_S3_backup_file=1;

Lancer une sauvegarde pour les bases de données chiffrées

exec msdb.dbo.rds_backup_database 
@source_db_name='database_name', 
@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',   
@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id', 
@overwrite_S3_backup_file=1;

Remarque : remplacez les paramètres database_name, bucket_name, file_name_and_extension, region, account-id et key-id répertoriés dans ces exemples afin qu'ils correspondent à votre scénario. Vous pouvez utiliser le fichier de sauvegarde, généré dans le compartiment S3, pour restaurer la base de données utilisateur vers une nouvelle instance de base de données RDS. Lorsque la procédure stockée rds_backup_database ou rds_restore_database est appelée, la tâche démarre et génère des informations sur la tâche.

Lorsque l'état du cycle de vie de la tâche est SUCCESS (OPÉRATION RÉUSSIE), la tâche est terminée. Ensuite, vous pouvez ouvrir la console Amazon S3, choisir le compartiment dans lequel vous avez créé la sauvegarde de base de données utilisateur, puis afficher le fichier de sauvegarde. Vous pouvez télécharger ce fichier ou utiliser le fichier de sauvegarde de base de données utilisateur pour restaurer la même instance de base de données SQL Server RDS ou une nouvelle instance de base de données RDS.

Utilisez l'une des instructions SQL suivantes pour effectuer une restauration à partir du fichier de sauvegarde disponible dans le compartiment S3 :

Restaurer les bases de données non chiffrées

exec msdb.dbo.rds_restore_database 
@restore_db_name='database_name', 
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';

Restaurer les bases de données chiffrées

exec msdb.dbo.rds_restore_database 
@restore_db_name='database_name', 
@s3_arn_to_restore_from='arn:aws:s3::: bucket_name/file_name_and_extension', 
@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id';

Vous pouvez obtenir l'ID de tâche après avoir exécuté l'instruction de sauvegarde ou de restauration. Vous pouvez utiliser le script suivant pour identifier toutes les tâches terminées et en attente pour une base de données particulière :

exec msdb.dbo.rds_task_status @db_name='database_name'

Pour suivre le statut de la tâche, utilisez l'instruction SQL suivante :

exec msdb..rds_task_status @task_id= 5

Pour obtenir une liste d'erreurs et de solutions potentielles, reportez-vous à Migrating Microsoft SQL Server Enterprise Workloads to Amazon RDS (Migration de charges de travail Microsoft SQL Server Enterprise vers Amazon RDS).