Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Restaurer les données d'une instance ApsaraDB RDS for MySQL vers une base de données MySQL auto-gérée à partir d'un fichier de sauvegarde physique

Dernière mise à jour :Aug 19, 2026

Utilisez Percona XtraBackup pour restaurer une sauvegarde physique complète d'une instance ApsaraDB RDS for MySQL vers une base de données MySQL auto-gérée exécutée sous Linux.

Important

Cette procédure nécessite un environnement Linux et s'applique uniquement aux instances RDS utilisant des disques locaux (Premium Local SSDs). Elle restaure l'intégralité des données contenues dans la sauvegarde, et non des bases de données ou des tables individuelles. Si votre configuration ne correspond pas à ces prérequis, consultez la section Limitations.

Fonctionnement

  1. Téléchargez un fichier de sauvegarde physique depuis la console ApsaraDB RDS.

  2. Décompressez le fichier à l'aide de qpress et xbstream.

  3. Exécutez Percona XtraBackup pour restaurer les données dans un nouveau répertoire de données sur l'hôte MySQL auto-géré.

  4. Démarrez le processus MySQL auto-géré en utilisant le répertoire de données restauré.

  5. Connectez-vous à la base de données et vérifiez les données.

Limitations

Prérequis

Avant de commencer, assurez-vous que :

  • Votre instance RDS exécute MySQL 8.0, 5,7, 5,6 ou 5,5 sur RDS High-availability Edition avec des Premium Local SSDs. Vérifiez ces informations sur la page Basic Information de l'instance.

  • Aucune table de l'instance n'est chiffrée avec TDE.

  • L'utilisateur RAM que vous utilisez dispose des autorisations nécessaires pour télécharger les fichiers de sauvegarde. Pour plus de détails, consultez Autoriser un utilisateur RAM avec des autorisations en lecture seule à télécharger des fichiers de sauvegarde.

  • La base de données MySQL auto-gérée exécute la même version majeure que votre instance RDS (par exemple, les deux exécutent MySQL 8.0).

  • La base de données MySQL auto-gérée s'exécute sous Linux. Les exemples de cette rubrique utilisent CentOS 7.9 64 bits.

Impacts potentiels

  • Si d'autres services sont en cours d'exécution dans la base de données MySQL auto-gérée, ils deviennent indisponibles pendant la restauration.

  • La restauration écrit les données dans un nouveau répertoire de données et n'affecte pas les données existantes de la base de données auto-gérée.

Facturation

Préparer l'environnement

1. Configurer les répertoires

Exécutez les commandes suivantes sur l'hôte Linux où réside la base de données MySQL auto-gérée.

Créez le backup decompression directory pour stocker les fichiers de sauvegarde décompressés :

sudo mkdir /var/mysql_bkdata
sudo chown -R $USER:$USER /var/mysql_bkdata

Créez le data directory vers lequel les données de sauvegarde seront restaurées :

sudo mkdir /var/mysql_newdata
sudo chown -R $USER:$USER /var/mysql_newdata
$USER:$USER fait référence à l'utilisateur actuel et au groupe d'utilisateurs, résolus automatiquement à partir de l'environnement. Aucune substitution n'est nécessaire.

2. Localiser le fichier de configuration MySQL

Le chemin du fichier de configuration varie selon la version de MySQL :

Version MySQL Chemin du fichier de configuration
8,0 / 5,7 /etc/my.cnf
5,6 /usr/my.cnf
5,5 Exécutez `echo "[mysqld]"

sudo tee /etc/my.cnf` pour le créer

Pour trouver le chemin sur votre hôte :

sudo find / -name my.cnf
Si le résultat diffère du tableau ci-dessus, utilisez le chemin réel lors de l'exécution des commandes ultérieures.

3. Installer les outils

Version XtraBackup par version MySQL :

Version RDS MySQL XtraBackup à installer
MySQL 8.0 RDS XtraBackup 8.0 (build personnalisé ApsaraDB)
MySQL 5.7 / 5,6 / 5,5 Percona XtraBackup 2.4
Important

Pour MySQL 8.0, utilisez la build XtraBackup fournie par ApsaraDB. La version open source de Percona XtraBackup peut présenter des problèmes de compatibilité avec les fichiers redo log de RDS.

Installer XtraBackup pour MySQL 8.0

Téléchargez le package correspondant au système d'exploitation de votre hôte et transférez-le sur le serveur (consultez Transférer ou télécharger des fichiers pour les instances ECS). Ensuite, installez-le. Le tableau suivant présente les liens de téléchargement et des exemples de commandes d'installation — les exemples supposent que le package est téléchargé dans /XtraBackup8.0/.

Environnement hôte Téléchargement Commande d'installation
Linux 6 (x86_64) RDS XtraBackup 8.0.rpm) sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios6.x86_64
Linux 7 (x86_64) RDS XtraBackup 8.0 sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm
Linux 7 (ARM AArch64) RDS XtraBackup 8.0 sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.aarch64.rpm
Linux 8 (ARM AArch64) RDS XtraBackup 8.0 sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.al8.aarch64.rpm

Après l'installation, l'exécutable XtraBackup se trouve à l'emplacement /u01/xtrabackup80/bin/xtrabackup. Ce répertoire n'est pas ajouté automatiquement à PATH. Utilisez soit le chemin complet (comme indiqué dans cette rubrique), soit ajoutez manuellement le répertoire à PATH.

Installer XtraBackup pour MySQL 5.7, 5,6 ou 5,5

Installez Percona XtraBackup 2.4. Exemple utilisant la version 2.4.28 :

wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
sudo yum localinstall -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm

Installer qpress

# Download the qpress executable
wget "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230406/flxd/qpress-11-linux-x64.tar"

# Extract the archive
tar -xvf qpress-11-linux-x64.tar

# Grant execute permissions
sudo chmod 775 qpress

# Make qpress available system-wide
sudo cp qpress /usr/bin

Étape 1 : Télécharger le fichier de sauvegarde

  1. Connectez-vous à la console ApsaraDB RDS. Dans la barre de navigation supérieure, sélectionnez la région où réside votre instance RDS, puis cliquez sur l'ID de l'instance.

  2. Dans le volet de navigation de gauche, cliquez sur Backup and Restoration.

  3. Choisissez Base Backups > Data Backup. Recherchez le fichier de sauvegarde physique à télécharger et cliquez sur Download Instance Backup dans la colonne Actions.

  4. Dans la boîte de dialogue Download Instance Backup Set, cliquez sur Copy Internal URL ou Copy Public URL.

    Important

    - Internal URL : L'hôte MySQL auto-géré et l'instance RDS doivent se trouver dans le même VPC. Les VPC inter-régions et les configurations réseau classique vers VPC ne sont pas pris en charge. - Public URL : Des frais de trafic Internet s'appliquent si vous dépassez le quota gratuit. - Une URL de téléchargement est valide pendant 1 heure après sa génération. Actualisez la page pour obtenir une nouvelle URL si elle expire.

  5. Sur l'hôte Linux, exécutez la commande suivante pour télécharger le fichier de sauvegarde. Remplacez l'URL par celle que vous avez copiée.

    - Entourez l'URL de guillemets simples afin que le shell la traite comme une chaîne littérale. - Remplacez test_xb.qp par le nom de fichier de votre choix, mais conservez la même extension que dans l'URL de téléchargement . - Extensions des fichiers de sauvegarde physique : _xb.qp ou _qp.xb pour MySQL 8.0/5,7/5,6 ; tar.gz pour MySQL 5.5. - Ne modifiez ni ne supprimez un fichier de sauvegarde physique. Si vous devez modifier les données, restaurez-les d'abord dans la base de données auto-gérée.
    wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp

Étape 2 : Décompresser le fichier de sauvegarde

Exécutez la commande de décompression correspondant à l'extension de votre fichier de sauvegarde. Remplacez le nom de fichier et le répertoire par vos valeurs réelles.

Important

Assurez-vous que qpress et Percona XtraBackup sont installés avant d'exécuter ces commandes. Consultez Préparer l'environnement.

Fichiers _xb.qp

# MySQL 8.0
qpress -do test_xb.qp | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

# MySQL 5.5 / 5.6 / 5.7
qpress -do test_xb.qp | xbstream -x -v -C /var/mysql_bkdata/

Fichiers _qp.xb

# Step 1: Parse the file
cat test_qp.xb | xbstream -x -v -C /var/mysql_bkdata/

# Step 2: Decompress
## MySQL 5.5 / 5.6 / 5.7
innobackupex --decompress --remove-original /var/mysql_bkdata/

## MySQL 8.0
/u01/xtrabackup80/bin/xtrabackup --decompress --remove-original --target-dir=/var/mysql_bkdata/

Fichiers .tar.gz

tar -izxvf test.tar.gz -C /var/mysql_bkdata/

Fichiers .xb.gz

# MySQL 8.0
gzip -d -c test.xb.gz | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

# MySQL 5.5 / 5.6 / 5.7
gzip -d -c test.xb.gz | xbstream -x -v -C /var/mysql_bkdata/

Résolution des erreurs de décompression

Erreur : sh: qpress: command not found

Installez qpress. Consultez Préparer l'environnement.

Erreur : innobackupex introuvable (pour les fichiers _qp.xb)

Installez Percona XtraBackup. Consultez Préparer l'environnement.

Erreur : can't change to dir to xx (errorcode: no such file or directory) (pour les fichiers _qp.xb)

Vérifiez que le chemin du répertoire cible et le nom du fichier de sauvegarde sont corrects.

Étape 3 : Restaurer les données

Avant la restauration, arrêtez la base de données MySQL auto-gérée. Vérifiez la présence de processus MySQL en cours d'exécution et terminez-les :

ps -ef | grep '[m]ysql'
sudo kill -9 <PID>

Suivez les étapes correspondant à votre version de MySQL.

MySQL 8.0

3,1 Préparer la sauvegarde

/u01/xtrabackup80/bin/xtrabackup --defaults-file=/var/mysql_bkdata/backup-my.cnf \
  --prepare --target-dir=/var/mysql_bkdata/
Paramètre Description
--defaults-file Chemin vers backup-my.cnf dans le répertoire de décompression de la sauvegarde. Ce fichier est créé automatiquement lors de la décompression de la sauvegarde.
--prepare Prépare la sauvegarde pour la restauration.
--target-dir Le répertoire de décompression de la sauvegarde (/var/mysql_bkdata/ dans cet exemple).

3,2 Mettre à jour datadir dans le fichier de configuration

Ouvrez le fichier de configuration :

sudo vim /etc/my.cnf

Définissez datadir sur le nouveau répertoire de données :

datadir = /var/mysql_newdata

Enregistrez et quittez (appuyez sur Esc, puis tapez :wq).

3,3 Définir la propriété des répertoires

chown -R mysql:mysql /var/mysql_newdata

3,4 Copier les données vers le nouveau répertoire de données

sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/
Paramètre Description
--defaults-file Chemin vers my.cnf. XtraBackup lit datadir à partir de ce fichier pour déterminer la destination de la restauration.
--copy-back Copie les données de sauvegarde vers le répertoire de données.
--target-dir Le répertoire de décompression de la sauvegarde. XtraBackup copie les données de cet emplacement vers le répertoire de données.

MySQL 5.7

3,1 Préparer la sauvegarde

innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
Paramètre Description
--defaults-file Chemin vers backup-my.cnf dans le répertoire de décompression de la sauvegarde.
--apply-log Prépare la sauvegarde. Le chemin qui suit est le répertoire de décompression de la sauvegarde.

3,2 Mettre à jour datadir et les paramètres InnoDB dans le fichier de configuration

Ouvrez le fichier de configuration :

sudo vim /etc/my.cnf

Définissez datadir et ajoutez les paramètres de tablespace undo InnoDB :

datadir = /var/mysql_newdata
innodb_undo_tablespaces=2
innodb_undo_directory=/var/mysql_newdata
Important

La valeur de innodb_undo_tablespaces doit correspondre à la valeur indiquée dans /var/mysql_bkdata/backup-my.cnf. Vérifiez la valeur avec :

cat /var/mysql_bkdata/backup-my.cnf | grep innodb_undo_tablespaces

Enregistrez et quittez.

3,3 Copier les données vers le nouveau répertoire de données

sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/
Paramètre Description
--defaults-file Chemin vers my.cnf. XtraBackup lit datadir à partir de ce fichier.
--copy-back Copie les données de sauvegarde vers le répertoire de données spécifié par datadir.

MySQL 5.6

3,1 Préparer la sauvegarde

innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

3,2 Mettre à jour datadir dans le fichier de configuration

Ouvrez le fichier de configuration :

sudo vim /usr/my.cnf

Ajoutez le paramètre datadir :

datadir = /var/mysql_newdata

Enregistrez et quittez.

3,3 Copier les données vers le nouveau répertoire de données

sudo innobackupex --defaults-file=/usr/my.cnf --copy-back /var/mysql_bkdata/

MySQL 5.5

3,1 Préparer la sauvegarde

innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

3,2 Mettre à jour datadir et les paramètres de journal InnoDB dans le fichier de configuration

Ouvrez le fichier de configuration :

sudo vim /etc/my.cnf

Ajoutez les paramètres datadir et de taille de fichier journal InnoDB :

datadir = /var/mysql_newdata
innodb_log_file_size=1048576000
Important

La valeur de innodb_log_file_size doit correspondre à la valeur indiquée dans /var/mysql_bkdata/backup-my.cnf. Vérifiez la valeur avec :

cat /var/mysql_bkdata/backup-my.cnf | grep innodb_log_file_size

Enregistrez et quittez.

3,3 Copier les données vers le nouveau répertoire de données

sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

Résolution des erreurs de restauration

Erreur : xtrabackup: Unknown error 3613

Mettez à jour Percona XtraBackup vers la dernière version et réessayez.

Erreur : Original data directory /var/mysql_newdata is not empty!

Videz le répertoire et réessayez :

sudo rm -rf /var/mysql_newdata/*

Erreur : InnoDB: Encryption information in datafile: ./xxx.ibd can't be decrypted

Vérifiez si TDE est activé. Si des tables chiffrées existent, déchiffrez-les et recommencez la restauration depuis le début. Consultez Configurer TDE.

Si TDE est désactivé, vérifiez que la version correcte de XtraBackup est installée pour votre version de MySQL.

Erreur : innobackupex: File 'undo001' not found (Errcode: 2 - No Such file or directory)

Le format du fichier undo diffère selon la version de la base de données. Confirmez que la version de MySQL auto-gérée correspond à la version de l'instance RDS.

Étape 4 : Démarrer la base de données

MySQL 8.0 ou 5,7

  1. (Facultatif) Si le paramètre lower_case_table_names de votre instance RDS est défini sur 1, ajoutez le même paramètre à my.cnf. Pour vérifier la valeur du paramètre, consultez Afficher les paramètres d'une instance ApsaraDB RDS for MySQL. Ouvrez le fichier :

    sudo vim /etc/my.cnf

    Ajoutez :

    lower_case_table_names=1

    Enregistrez et quittez.

  2. Accordez la propriété du répertoire de données à l'utilisateur mysql :

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. Démarrez le processus MySQL :

    Paramètre Description
    --defaults-file Chemin vers le fichier de configuration MySQL (/etc/my.cnf dans cet exemple).
    --user L'utilisateur exécutant le processus de base de données. Toujours mysql.
    --datadir Le répertoire de données à utiliser au démarrage (/var/mysql_newdata dans cet exemple).
    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

MySQL 5.6

  1. (Facultatif) Si lower_case_table_names est 1 sur l'instance RDS, ajoutez-le à /usr/my.cnf :

    sudo vim /usr/my.cnf

    Ajoutez :

    lower_case_table_names=1

    Enregistrez et quittez.

  2. Accordez la propriété du répertoire de données :

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. Démarrez le processus MySQL :

    sudo mysqld --defaults-file=/usr/my.cnf --user=mysql --datadir=/var/mysql_newdata &

MySQL 5.5

  1. Accordez la propriété du répertoire de données :

    sudo chown -R mysql:mysql /var/mysql_newdata
  2. Démarrez le processus MySQL :

    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

Résolution des erreurs de démarrage

Erreur : mysqld: [ERROR] Failed to open required defaults file: /etc/my.cnf (Ubuntu)

AppArmor sur Ubuntu bloque l'accès au fichier de configuration. Exécutez :

apt install -y apparmor-utils
aa-complain /usr/sbin/mysqld

Erreur : error 1105 Unknown error après le démarrage, ou échec du démarrage de la base de données

Modifiez le moteur de stockage pour les tables système :

USE mysql;
ALTER TABLE proc ENGINE=myisam;
ALTER TABLE event ENGINE=myisam;
ALTER TABLE func ENGINE=myisam;

Si ERROR 1067 (42000): Invalid default value for 'modified' apparaît, exécutez d'abord ceci :

SET SQL_MODE='ALLOW_INVALID_DATES';

Erreur : InnoDB: Assertion failure in thread 140xxx in file page0zip.icne xxx

Cela indique généralement un espace disque insuffisant. Étendez le disque et réessayez.

Erreurs : [ERROR] Failed to open the relay log, [ERROR] Slave: Failed to initialize the master info, [ERROR] Failed to create or recover replication info repositories

Ces messages apparaissent car l'instance RDS utilise le mode HA, mais la base de données auto-gérée ne possède pas de nœuds primaire/secondaire. La base de données démarre normalement — ignorez ces erreurs.

Erreur : [ERROR] Data Dictionary initialization failed

Le système d'exploitation sous-jacent de RDS est Linux. Effectuez la restauration sur un hôte Linux pour éviter les problèmes de compatibilité du système d'exploitation.

Impossible de démarrer avec sudo systemctl start mysqld

SELinux peut s'exécuter en mode enforcing. Vérifiez avec :

getenforce
  • Dans les environnements de développement ou de test, changez le mode SELinux en permissive, puis exécutez sudo systemctl start mysqld.

  • Dans les environnements de production, vérifiez les journaux d'audit SELinux pour identifier l'opération bloquée et mettez à jour la politique SELinux en conséquence.

Étape 5 : Vérifier la restauration

  1. Connectez-vous à la base de données MySQL auto-gérée :

    Si vous avez oublié les identifiants, ajoutez --skip-grant-tables à la commande de démarrage (étape 4) pour contourner la vérification des autorisations. Réinitialisez les identifiants après la connexion.
    mysql -u<username> -p<password>
  2. Vérifiez que les bases de données attendues sont présentes :

    SHOW DATABASES;

    Si vous ne voyez que des bases de données système ou un sous-ensemble de bases de données, redémarrez la base de données auto-gérée et reconnectez-vous en utilisant le compte root ou le compte privilégié de l'instance RDS d'origine.

  3. Si les horodatages des données sont dans le mauvais fuseau horaire, définissez time_zone sur la base de données auto-gérée pour qu'elle corresponde à l'instance RDS. Si le paramètre time_zone de RDS est défini sur system, recherchez la région de l'instance RDS et utilisez le fuseau horaire correspondant.

Résolution des erreurs de connexion :

Erreur : Access denied for user 'XXX'

Vérifiez si le nom d'utilisateur et le mot de passe du compte utilisé pour se connecter à la base de données sont corrects. Le compte doit avoir été créé sur l'instance RDS.

Mot de passe après la restauration :

FAQ

Puis-je restaurer les données d'un fichier de sauvegarde téléchargé vers une autre instance RDS ?

Non. Les fichiers de sauvegarde téléchargés ne peuvent pas être chargés directement dans une autre instance RDS. Deux alternatives :

Comment restaurer les données à un moment précis ?

Téléchargez les fichiers de sauvegarde de journaux pour la plage horaire cible depuis la console, puis utilisez-les pour la récupération à un instant donné. Consultez Télécharger des fichiers de sauvegarde et Restaurer les données à un moment précis.

Comment restaurer ou migrer des données depuis une instance RDS Basic Edition ?

RDS Basic Edition prend uniquement en charge les sauvegardes instantanées et ne permet pas le téléchargement de sauvegardes physiques. Utilisez l'une de ces méthodes :

Puis-je restaurer les données de plusieurs instances RDS dans une seule base de données MySQL auto-gérée ?

Non. Chaque restauration de sauvegarde physique cible une base de données MySQL auto-gérée distincte. Après avoir restauré chaque instance dans sa propre base de données, utilisez DTS ou mysqldump pour consolider les données. Consultez Migrer des données depuis une base de données MySQL auto-gérée vers ApsaraDB RDS for MySQL.

Comment restaurer les données de mon instance RDS for MySQL vers une base de données MySQL auto-gérée ?

Après avoir restauré une sauvegarde physique vers une base de données auto-gérée, le compte privilégié conserve-t-il ses autorisations d'origine ?

Oui. Le compte privilégié conserve toujours ses autorisations d'origine. Les autorisations des comptes ne sont pas affectées par les sauvegardes.

Étapes suivantes