Restauration d'une sauvegarde dans une instance de base de données MySQL Amazon RDS - Amazon Relational Database Service

Restauration d'une sauvegarde dans une instance de base de données MySQL Amazon RDS

Amazon RDS prend en charge l'importation de bases de données MySQL à l'aide de fichiers de sauvegarde. Vous pouvez créer une sauvegarde de votre base de données sur site, la stocker sur Amazon S3, puis restaurer le fichier de sauvegarde sur une nouvelle instance de base de données Amazon RDS qui exécute MySQL.

Le scénario pris en charge est présenté dans le schéma suivant.


            Importation MySQL de fichiers de sauvegarde depuis une architecture S3

L'importation de fichiers de sauvegarde depuis Amazon S3 est prise en charge pour MySQL version 5.6 et 5.7. L'importation de fichiers de sauvegarde depuis Amazon S3 est disponible dans toutes les régions AWS.

Nous vous recommandons d'importer votre base de données vers Amazon RDS à l'aide de fichiers de sauvegarde si votre base de données peut être hors connexion pendant que le fichier de sauvegarde est créé, copié et restauré. Si votre base de données sur site ne peut pas être hors connexion, vous pouvez utiliser la réplication des journaux binaires pour mettre à jour la base de données après avoir migré vers Amazon RDS via Amazon S3 comme expliqué dans cette rubrique. Pour plus d'informations, consultez Réplication avec une instance MySQL ou MariaDB s'exécutant à l'extérieur d'Amazon RDS. Vous pouvez également utiliser AWS Database Migration Service pour migrer votre base de données vers Amazon RDS. Pour plus d'informations, consultez Qu'est-ce que AWS Database Migration Service ?

Limitations et recommandations pour l'importation de fichiers de sauvegarde de Amazon S3 vers Amazon RDS

Voici des limitations et recommandations pour l'importation de fichiers de sauvegarde depuis Amazon S3 :

  • Vous pouvez uniquement importer vos données vers une nouvelle instance de base de données, pas une instance de base de données existante.

  • Vous devez utiliser Percona XtraBackup pour créer la sauvegarde de votre base de données locale.

  • Vous ne pouvez pas migrer à partir d'une base de données source dotée de tables définies à l'extérieur du répertoire de données MySQL par défaut.

  • Vous ne pouvez pas importer une base de données MySQL 5.5 ou 8.0

  • Vous ne pouvez pas importer une base de données MySQL 5.6 sur site vers une base de données Amazon RDS MySQL 5.7 ou 8.0. Vous pouvez mettre à niveau votre instance de base de données après l'importation.

  • Vous ne pouvez pas restaurer des bases de données d'une taille supérieure à la taille maximale prise en charge par Amazon RDS pour MySQL. Pour plus d’informations sur les limites de stockage, consultez Stockage SSD à usage général et Stockage SSD d'I/O par seconde provisionnées.

  • Vous ne pouvez pas restaurer à partir d'une base de données source chiffrée, mais vous pouvez restaurer vers une instance de base de données Amazon RDS chiffrée.

  • Vous ne pouvez pas restaurer à partir d'une sauvegarde chiffrée dans le compartiment Amazon S3.

  • Vous ne pouvez pas restaurer à partir d'un compartiment Amazon S3 d'une région AWS différente de celle de votre instance de base de données Amazon RDS.

  • L'importation à partir d'Amazon S3 n'est pas prise en charge sur la classe d'instance de base de données db.t2.micro. Toutefois, vous pouvez restaurer vers une autre classe d'instance de base de données, puis modifier la classe d'instance ultérieurement. Pour plus d'informations sur les classes d'instance , consultez Spécifications matérielles pour toutes les classes d'instances de base de données disponibles.

  • Amazon S3 limite la taille d'un fichier chargé vers un compartiment Amazon S3 à 5 To. Si un fichier de sauvegarde dépasse 5 To, vous devez diviser celui-ci en plusieurs fichiers plus petits.

  • Lorsque vous restaurez la base de données, la sauvegarde est copiée, puis extraite sur votre instance de base de données. Par conséquent, allouez pour votre instance de base de données une quantité d'espace de stockage égale ou supérieure à la somme de la taille de sauvegarde, plus la taille de la base de données d'origine sur le disque.

  • Amazon RDS limite le nombre de fichiers chargés vers un compartiment Amazon S3 à 1 million. Si les données de sauvegarde de votre base de données, y compris toutes les sauvegardes complètes et incrémentielles, dépassent 1 million de fichiers, utilisez un fichier tarball (.tar.gz) pour stocker les fichiers des sauvegardes complètes et incrémentielles dans le compartiment Amazon S3.

  • Les comptes utilisateur ne sont pas importés automatiquement. Enregistrez vos comptes utilisateur depuis votre base de données source et ajoutez-les à votre nouvelle instance de base de données ultérieurement.

  • Les fonctions ne sont pas importées automatiquement. Enregistrez vos fonctions depuis votre base de données source et ajoutez-les à votre nouvelle instance de base de données ultérieurement.

  • Les procédures stockées ne sont pas importées automatiquement. Enregistrez vos procédures stockées depuis votre base de données source et ajoutez-les à votre nouvelle instance de base de données ultérieurement.

  • Les informations de format de fuseau horaire ne sont pas importées automatiquement. Enregistrez les informations de fuseau horaire depuis votre base de données source et ajoutez-les à votre nouvelle instance de base de données ultérieurement. Pour plus d'informations, consultez Fuseau horaire local pour les instances de bases de données MySQL.

  • La rétromigration n'est pas prise en charge à la fois pour les versions principales et pour les versions mineures. Par exemple, il n'est pas possible de migrer de la version 5.7 à la version 5.6. De même, il n'est pas possible de migrer de la version 5.6.39 à la version 5.6.37.

  • Le paramètre innodb_data_file_path doit être configuré avec un seul fichier de données qui utilise le nom de fichier de données par défaut "ibdata1". Les bases de données comportant deux fichiers de données, ou avec un fichier de données portant un nom différent, ne peuvent pas faire l'objet d'une migration à l'aide de cette méthode.

    Voici des exemples de noms de fichier non autorisés : "innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend" et "innodb_data_file_path=ibdata01:50M:autoextend".

Présentation de la configuration de l'importation des fichiers de sauvegarde de Amazon S3 vers Amazon RDS

Voici les composants que vous devrez configurer pour importer les fichiers de sauvegarde de Amazon S3 vers Amazon RDS :

  • Un compartiment Amazon S3 pour stocker vos fichiers de sauvegarde.

  • Une sauvegarde de votre base de données locale créée par Percona XtraBackup.

  • Un rôle AWS Identity and Access Management (IAM) permettant d'autoriser Amazon RDS à accéder au compartiment.

Si vous avez déjà un compartiment Amazon S3, vous pouvez l'utiliser. Si vous n'avez pas de compartiment Amazon S3, vous pouvez en créer un nouveau. Si vous souhaitez créer un compartiment, consultez Créer un compartiment.

Utilisez l'outil Percona XtraBackup pour créer votre sauvegarde. Pour plus d'informations, consultez Création de la sauvegarde de votre base de données.

Si vous avez déjà un rôle IAM, vous pouvez l'utiliser. Si vous n'avez pas de rôle IAM, vous pouvez en créer manuellement un nouveau. Sinon, vous pouvez choisir d'avoir un rôle IAM créé pour vous dans votre compte par l'assistant lorsque vous restaurez la base de données à l'aide de la AWS Management Console. Si vous souhaitez manuellement créer un nouveau rôle IAM ou attacher des stratégies d'approbation et d'autorisation à un rôle IAM existant, consultez Création manuelle d'un rôle IAM. Si vous souhaitez qu'un nouveau rôle IAM soit créé pour vous, suivez la procédure décrite dans Console.

Création de la sauvegarde de votre base de données

Utilisez le logiciel Percona XtraBackup pour créer votre sauvegarde. Vous pouvez installer Percona XtraBackup à partir de la page Download Percona XtraBackup.

Note

Pour la migration MySQL 5.7, vous devez utiliser Percona XtraBackup 2.4. Pour les versions MySQL antérieures, utilisez Percona XtraBackup 2.3 ou 2.4.

Vous pouvez créer une sauvegarde complète de vos fichiers de base de données MySQL à l'aide de Percona XtraBackup. Sinon, si vous utilisez déjà Percona XtraBackup pour sauvegarder vos fichiers de base de données MySQL, vous pouvez charger les fichiers et répertoires existants de vos sauvegardes complètes et incrémentielles.

Pour plus d'informations sur la sauvegarde de votre base de données avec Percona XtraBackup, consultez la Documentation Percona XtraBackup et le binaire xtrabackup sur le site Web de Percona.

Création d'une sauvegarde complète à l'aide de Percona XtraBackup

Pour créer une sauvegarde complète de vos fichiers de base de données MySQL qui peut être restaurée à partir de Amazon S3, utilisez l'utilitaire Percona XtraBackup (xtrabackup) pour sauvegarder votre base de données.

Par exemple, la commande suivante crée une sauvegarde d'une base de données MySQL et stocke les fichiers dans le dossier /on-premises/s3-restore/backup.

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

Si vous souhaitez compresser votre sauvegarde en un seul fichier (qui peut être divisé ultérieurement, si nécessaire), vous pouvez enregistrer votre sauvegarde dans l'un des formats suivants :

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

La commande suivante crée une sauvegarde de votre base de données MySQL, divisée en plusieurs fichiers Gzip.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

La commande suivante crée une sauvegarde de votre base de données MySQL, divisée en plusieurs fichiers tar.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

La commande suivante crée une sauvegarde de votre base de données MySQL, divisée en plusieurs fichiers xbstream.

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream

Utilisation des sauvegardes incrémentielles avec Percona XtraBackup

Si vous utilisez déjà Percona XtraBackup pour effectuer des sauvegardes complètes et incrémentielles de vos fichiers de base de données MySQL, vous n'avez pas besoin de créer de sauvegarde complète et de charger les fichiers de sauvegarde vers Amazon S3. Au lieu de cela, vous pouvez économiser beaucoup de temps en copiant vos fichiers et répertoires de sauvegarde existants dans votre compartiment Amazon S3. Pour plus d'informations sur la création de sauvegardes incrémentielles à l'aide de Percona XtraBackup, consultez Incremental Backup (Sauvegarde incrémentielle).

Lorsque vous copiez les fichiers existants des sauvegardes complètes et incrémentielles dans un compartiment Amazon S3, vous devez copier de façon récursive le contenu du répertoire de base. Ce contenu inclut la sauvegarde complète, ainsi que tous les fichiers et répertoires des sauvegardes incrémentielles. Cette copie doit conserver la structure d'annuaire dans le compartiment Amazon S3. Amazon RDS itère dans tous les fichiers et annuaires. Amazon RDS utilise le fichier xtrabackup-checkpoints inclus avec chaque sauvegarde incrémentielles pour identifier le répertoire de base et pour ordonner les sauvegardes incrémentielles par leur plage de numéros de séquence de journal.

Considérations relatives à la sauvegarde pour Percona XtraBackup

Amazon RDS utilise vos fichiers de sauvegarde sur la base des noms de fichier. Nommez vos fichiers de sauvegarde avec l'extension de fichier appropriée basée sur le format de fichier—par exemple, .xbstream pour les fichiers stockés en utilisant le format de xbstream Percona.

Amazon RDS utilise vos fichiers de sauvegarde dans l'ordre alphabétique, ainsi que l'ordre numérique naturel. Utilisez l'option split lorsque vous émettez la commande xtrabackup pour vous assurer que vos fichiers de sauvegarde sont écrits et nommés dans l'ordre approprié.

Amazon RDS ne prend pas en charge les sauvegardes partielles créées à l'aide de Percona XtraBackup. Vous ne pouvez pas utiliser les options suivantes pour créer une sauvegarde partielle lorsque vous sauvegardez les fichiers source pour votre base de données : --tables, --tables-exclude, --tables-file, --databases, --databases-exclude ou --databases-file.

Amazon RDS prend en charge les sauvegardes incrémentielles créées à l'aide de Percona XtraBackup. Pour plus d'informations sur la création de sauvegardes incrémentielles à l'aide de Percona XtraBackup, consultez Incremental Backup (Sauvegarde incrémentielle).

Création manuelle d'un rôle IAM

Si vous n'avez pas de rôle IAM, vous pouvez en créer manuellement un nouveau. Sinon, vous pouvez choisir d'avoir un rôle IAM créé pour vous par l'assistant lorsque vous restaurez la base de données à l'aide de la AWS Management Console. Si vous souhaitez qu'un nouveau rôle IAM soit créé pour vous, suivez la procédure décrite dans Console.

Pour créer manuellement un rôle IAM afin d'importer votre base de données à partir de Amazon S3, créez un rôle pour déléguer des autorisations depuis le service Amazon RDS vers votre compartiment Amazon S3. Lorsque vous créez un rôle IAM, vous attachez des stratégies d'approbation et d'autorisation. Pour importer vos fichiers de sauvegarde depuis Amazon S3, utilisez des stratégies d'approbation et d'autorisation similaires aux exemples suivants. Pour plus d'informations sur la création d'un rôle, consultez Création d'un rôle pour déléguer des autorisations à un service AWS.

Sinon, vous pouvez choisir d'avoir un rôle IAM créé pour vous par l'assistant lorsque vous restaurez la base de données à l'aide de la AWS Management Console. Si vous souhaitez qu'un nouveau rôle IAM soit créé pour vous, suivez la procédure décrite dans Console

Les stratégies d'approbation et d'autorisation nécessitent que vous fournissiez un Amazon Resource Name (ARN). Pour plus d'informations sur le formatage des ARN, consultez ARN (Amazon Resource Name) et espaces de noms de service AWS.

Exemple Stratégie d'approbation pour l'importation à partir d'Amazon S3

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

Exemple Stratégie d'autorisation pour l'importation à partir de Amazon S3 — Autorisations des utilisateurs IAM

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::IAM User ID:role/S3Access" } ] }

Exemple Stratégie d'autorisation pour l'importation à partir de Amazon S3 — Autorisations des rôles

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::bucket_name/prefix*" } ] }
Note

Si vous incluez un préfixe de nom de fichier, vous devez inclure un astérisque (*) après le préfixe. Si vous ne voulez pas spécifier un préfixe, indiquez uniquement un astérisque.

Pour importer des données à partir d'Amazon S3 vers une nouvelle instance de base de données MySQL

Vous pouvez importer des données de Amazon S3 vers une nouvelle instance de base de données MySQL DB à l'aide de AWS Management Console, AWS CLI ou de l'API RDS.

Pour importer des données à partir d'Amazon S3 vers une nouvelle instance de base de données MySQL

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

  2. Dans le coin supérieur droit de la console Amazon RDS, choisissez la région AWS dans laquelle créer votre instance de base de données. Choisissez la même région AWS que celle du compartiment Amazon S3 contenant la sauvegarde de votre base de données.

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

  4. Choisissez Restaurer à partir de S3 pour lancer l'assistant.

    L'assistant s'ouvre à la page Select engine (Sélectionner un moteur).

  5. Sur la page Sélectionner le moteur, choisissez MySQL, puis Suivant.

    La page Specify source backup details (Spécifier les détails de sauvegarde source) s'affiche.

    
                        Page sur laquelle vous spécifiez les détails sur la sauvegarde de votre base de données source
  6. Sur la page Specify source backup details (Spécifier les détails de sauvegarde source), spécifiez des informations sur votre sauvegarde.

    1. Pour Moteur source, choisissez mysql.

    2. Pour Version de moteur source, choisissez la version MySQL de votre base de données source.

    3. Pour Compartiment S3, choisissez votre compartiment Amazon S3.

    4. (Facultatif) Pour Préfixe du chemin de dossier S3, saisissez un préfixe de chemin de fichier pour les fichiers stockés dans votre compartiment Amazon S3. Si vous ne spécifiez pas de préfixe, RDS crée votre cluster/instance de base de données à l'aide de tous les fichiers et dossiers du dossier racine du compartiment S3. Si vous indiquez un préfixe, RDS crée votre instance de base de données à l'aide des fichiers et dossiers du compartiment S3 pour lesquels le chemin du fichier commence par le préfixe spécifié. Par exemple, supposons que vous stockez vos fichiers de sauvegarde sur S3 dans un sous-dossier appelé « sauvegardes » et que vous avez plusieurs ensembles de fichiers de sauvegarde, chacun dans son propre répertoire (gzip_backup1, gzip_backup2, etc.). Dans ce cas, vous devez spécifier un préfixe sauvegardes/gzip_backup1 pour restaurer les fichiers dans le dossier gzip_backup1.

    5. Pour Créer un rôle, choisissez Oui afin de créer un rôle IAM dans votre compte ou Non afin de sélectionner un rôle IAM existant.

    6. Pour Rôle IAM, sélectionnez un rôle IAM existant ou pour Nom d'un nouveau rôle IAM, spécifiez le nom d'un nouveau rôle IAM. Vous pouvez choisir d'avoir un nouveau rôle IAM créé pour vous en sélectionnant Oui pour Créer un rôle.

  7. Choisissez Next pour continuer. La page Specify DB details (Spécifier les détails de la base de données) s'affiche.

    Sur la page Specify DB details (Spécifier les détails de la base de données), spécifiez les informations de votre instance de base de données. Pour plus d'informations sur chaque paramètre, consultez Paramètres des instances de base de données.

    Note

    Assurez d'allouer suffisamment de mémoire pour votre nouvelle instance de base de données afin que la restauration puisse réussir. À ce stade, vous pouvez aussi allouer de la mémoire supplémentaire pour une croissance future.

  8. Choisissez Next pour continuer. La page Configure advanced settings (Configurer les paramètres avancés) s'affiche.

    Fournissez des informations supplémentaires dont Amazon RDS a besoin pour lancer l'instance de base de données. Pour plus d'informations sur chaque paramètre, consultez Paramètres des instances de base de données.

  9. Choisissez Create database (Créer une base de données).

Pour importer les données à partir de Amazon S3 vers une nouvelle instance de base de données MySQL à l'aide de l'AWS CLI, appelez la commande restore-db-instance-from-s3 avec les paramètres suivants. Pour plus d'informations sur chaque paramètre, consultez Paramètres des instances de base de données.

Note

Assurez d'allouer suffisamment de mémoire pour votre nouvelle instance de base de données afin que la restauration puisse réussir. À ce stade, vous pouvez aussi allouer de la mémoire supplémentaire pour une croissance future.

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-username

  • --master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

Exemple

Pour Linux, macOS ou Unix :

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m4.large \ --engine mysql \ --master-username masterawsuser \ --master-user-password masteruserpassword \ --s3-bucket-name mybucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 5.6.40

Pour Windows :

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m4.large ^ --engine mysql ^ --master-username masterawsuser ^ --master-user-password masteruserpassword ^ --s3-bucket-name mybucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 5.6.40

Pour importer les données à partir de Amazon S3 vers une nouvelle instance de base de données MySQL à l'aide de l'API Amazon RDS, appelez l'opération RestoreDBInstanceFromS3.