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

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

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, 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 décrit dans cette section restaure une sauvegarde d'une base de données sur site. Vous pouvez utiliser cette technique pour les bases de données situées dans d'autres emplacements, tels que Amazon EC2 ou des services cloud non-AWS, tant que la base de données est accessible.

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, 5.7 et 8.0. L'importation de fichiers de sauvegarde à partir d'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 sur site peut être hors connexion pendant que le fichier de sauvegarde est créé, copié et restauré. Si votre base de données ne peut pas être hors connexion, vous pouvez utiliser la réplication des journaux binaires (binlog) 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 l'AWS Database Migration Service pour migrer votre base de données vers Amazon RDS. Pour de plus amples informations, veuillez consulter Qu'est-ce qu'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 devez importer vos données dans la version mineure par défaut de votre version majeure MySQL dans votre région AWS. Par exemple, si votre version majeure est MySQL 5.6 et que la version mineure par défaut pour votre région AWS est 5.6.51, vous devez importer vos données dans une instance DB MySQL version 5.6.51. Vous pouvez mettre à niveau votre instance DB après l'importation. Pour plus d'informations sur la détermination de la version secondaire par défaut, reportez-vous à la section Versions de MySQL sur Amazon RDS.

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

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

  • Vous ne pouvez pas importer une base de données MySQL sur site d'une version majeure vers une autre. Par exemple, vous ne pouvez pas importer une base de données MySQL 5.6 dans une base de données Amazon RDS MySQL 5.7 ou 8.0. De même, vous ne pouvez pas importer une base de données MySQL 5.7 dans une base de données RDS for MySQL 8.0. Vous pouvez mettre à niveau votre instance de base de données après l'importation.

  • 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 procéder à une restauration vers une autre classe d'instance de base de données, puis modifier la classe d'instance de base de données ultérieurement. Pour plus d'informations sur les classes d'instance , consultez Spécifications matérielles pour les classes d'instance de base de données .

  • 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 Gzip (.gz), tar (.tar.gz) ou Percona xbstream (.xbstream) pour stocker les fichiers des sauvegardes complètes et incrémentielles dans le compartiment Amazon S3. Percona XtraBackup 8.0 prend uniquement en charge Percona xbstream pour la compression.

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

  • 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:12M:autoextend". 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".

  • La taille maximale de la base de données restaurée est la taille maximale de base de données prise en charge moins la taille de la sauvegarde. Ainsi, si la taille maximale de base de données prise en charge est de 64 TiO et que la taille de la sauvegarde est de 30 TiO, la taille maximale de la base de données restaurée est de 34 TiO, comme dans l'exemple suivant :

    64 TiB - 30 TiB = 34 TiB

    Pour de plus amples informations sur la taille maximale de base de données prise en charge par Amazon RDS for MySQL, veuillez consulter Stockage SSD à usage général et Stockage SSD d'I/O par seconde provisionnées.

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, veuillez consulter 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 8.0, vous devez utiliser Percona XtraBackup 8.0. Percona XtraBackup 8.0.12 et versions ultérieures prennent en charge la migration de toutes les versions de MySQL. Si vous migrez vers RDS for MySQL 8.0.20 ou versions ultérieures, vous devez utiliser Percona XTrabackUp 8.0.12 ou versions ultérieures.

Pour les migrations MySQL 5.7, vous pouvez également utiliser Percona XtraBackup 2.4. Pour les migrations de versions antérieures de MySQL, vous pouvez également utiliser 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 de plus amples informations sur la sauvegarde de votre base de données avec Percona XtraBackup, veuillez consulter 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)

Note

Percona XtraBackup 8.0 prend uniquement en charge Percona xbstream pour la compression.

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 de plus amples informations sur la création de sauvegardes incrémentielles à l'aide de Percona XtraBackup, veuillez consulter 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 de répertoire du compartiment Amazon S3. Amazon RDS effectue une itération sur l'ensemble des fichiers et répertoires. Amazon RDS utilise le fichier xtrabackup-checkpoints inclus avec chaque sauvegarde incrémentielle pour identifier le répertoire de base et ordonner des sauvegardes incrémentielles selon leur plage de numéros de séquence de journal (LSN).

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 de plus amples informations sur la création de sauvegardes incrémentielles à l'aide de Percona XtraBackup, veuillez consulter 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 de plus amples informations sur le formatage des ARN, veuillez consulter 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 à partir d'Amazon S3 vers une nouvelle instance de base de données MySQL à l'aide de la AWS Management Console, de 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 à la 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.

    La page Créer une base de données par restauration à partir de S3 s'affiche.

    
                                Page sur laquelle vous spécifiez les détails de la restauration d'une instance de base de données à partir de S3
  5. Sous Destination S3 :

    1. Choisissez le Compartiment S3 où vous souhaitez écrire les journaux d'audit.

    2. (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.

  6. Sous Options du moteur :

    1. Dans le champ Type de moteur, choisissez MySQL.

    2. Dans le champ Version du moteur source, choisissez la version MySQL majeure de votre base de données source.

    3. Pour Version, choisissez la version mineure par défaut de votre version majeure MySQL dans votre région AWS.

      Dans l'AWS Management Console, seule la version mineure par défaut est disponible. Vous pouvez mettre à niveau votre instance DB après l'importation.

  7. Dans le champ Rôle IAM, vous pouvez choisir un rôle IAM existant.

  8. (Facultatif) Vous pouvez également créer un rôle IAM pour vous en sélectionnant Create a new role (Créer un rôle) et en saisissant le nom du rôle IAM.

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

    Veillez à allouer suffisamment de mémoire à votre nouvelle instance de base de données afin que l'opération de restauration aboutisse.

    Vous pouvez également choisir Activer la scalabilité automatique du stockage pour faciliter une croissance automatique ultérieure.

  10. Choisissez des paramètres supplémentaires selon vos besoins.

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

Pour importer des données d'Amazon S3 dans une nouvelle instance de base de données MySQL à l'aide de 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

Veillez à allouer suffisamment de mémoire à votre nouvelle instance de base de données afin que l'opération de restauration aboutisse.

Vous pouvez également utiliser le paramètre --max-allocated-storage pour activer la scalabilité automatique du stockage et faciliter une croissance automatique ultérieure.

  • --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.m5.large \ --engine mysql \ --master-username admin \ --master-user-password mypassword \ --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.51 \ --max-allocated-storage 1000

Pour Windows :

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m5.large ^ --engine mysql ^ --master-username admin ^ --master-user-password mypassword ^ --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.51 ^ --max-allocated-storage 1000

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.