Utilisez la fonctionnalité Download Backup pour convertir un snapshot de sauvegarde d'une instance basée sur disque ApsaraDB RDS for MySQL en fichier CSV ou SQL. Vous pouvez ensuite restaurer ce fichier dans une base de données MySQL gérée en interne sur une machine locale ou une instance ECS.
Prérequis
-
L'instance ApsaraDB RDS for MySQL doit répondre aux exigences suivantes :
Version de la base de données : 8,0 ou 5,7 (les instances Serverless sont prises en charge)
Type de stockage : disque ESSD ou à performances premium
État : en cours d'exécution
RemarqueConsultez ces informations sur la page Basic Information de l'instance.
La fonctionnalité de téléchargement avancé n'est pas prise en charge pour les instances utilisant des disques à performances premium et ayant activé la fonctionnalité d'archivage des données. Les tâches de téléchargement échouent pour ces instances.
Le chiffrement TDE doit être désactivé sur l'instance ApsaraDB RDS for MySQL. Si l'instance contient des tables chiffrées, la restauration échoue. Vous devez d'abord les déchiffrer.
-
Le paramètre
local_infiledoit être activé sur votre base de données MySQL gérée en interne.RemarquePour vérifier l'état du paramètre
local_infile(ON indique qu'il est activé), exécutez la commande suivante :SHOW GLOBAL VARIABLES LIKE 'local_infile';Pour activer le paramètre
local_infile, exécutez la commande suivante :SET GLOBAL local_infile=1;
Limites
Les limites suivantes s'appliquent aux types de données lors de la restauration d'un ensemble de sauvegarde téléchargé vers une base de données MySQL gérée en interne.
-
Types de champs binaires non pris en charge : BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB.
RemarqueSi un ensemble de sauvegarde contient ces types de données, ils sont stockés au format hexadécimal. Lors de l'importation, MySQL les traite comme des chaînes de caractères. Vous devez utiliser manuellement la fonction
UNHEX()dans la commandeload data local infilepour les reconvertir dans leur format binaire.-
Autrement, pour les données BLOB, vous pouvez utiliser
mysqldumppour sauvegarder et restaurer les données dans votre base de données MySQL locale.Sauvegarde des données :
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <self-managed_database_name> --skip-triggers --skip-lock-tables > /tmp/<self-managed_database_name>.sqlRestauration des données :
mysql -h 127.0.0.1 -u username -p database_name < backup_file.sql
Types de données spatiales non pris en charge : GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON et GEOMETRYCOLLECTION.
Avant de commencer
Maintenance du script : Le script
restore_from_downloads.pyfourni dans cette rubrique est donné à titre indicatif uniquement et n'est plus maintenu. Utilisez-le avec prudence et vérifiez sa compatibilité avec votre environnement.Cohérence des versions de base de données : Assurez-vous que la version majeure de votre base de données MySQL gérée en interne correspond à celle de l'instance ApsaraDB RDS for MySQL. Des incompatibilités de fonctionnalités dues à des différences de version peuvent entraîner l'échec de la restauration.
Conflits de nommage : Vérifiez que la base de données cible gérée en interne ne présente aucun conflit de nom avec les bases de données ou les tables contenues dans l'ensemble de sauvegarde. Les conflits de noms provoquent l'échec de la restauration.
Interruption de tâche : L'interruption de la tâche de restauration peut entraîner des données incomplètes ou un échec de la restauration. N'interrompez pas le processus une fois celui-ci démarré.
-
Gestion des caractères spéciaux : Si un chemin de fichier, un compte de base de données ou un mot de passe contient des caractères spéciaux, tels que
&,#ou unspace, vous devez entourer la valeur de guillemets doubles (""). Sinon, la commande échouera. Par exemple :# If a file path contains special characters, such as &, enclose the path in double quotation marks. python ./restore_from_downloads.py "/path/to/data&test" 127.0.0.1 3306 root zhtpasswordtest # If a password contains special characters, such as # or @, enclose the password in double quotation marks. python ./restore_from_downloads.py /data 127.0.0.1 3306 root "#Test@20250821"
Procédure
Cet exemple montre comment restaurer un fichier SQL depuis une instance ApsaraDB RDS for MySQL basée sur disque vers une base de données MySQL gérée en interne. La base de données gérée en interne utilisée dans cet exemple s'exécute sur une instance ECS avec Alibaba Cloud Linux 3.2104 LTS 64 bits. Adaptez les commandes à votre environnement.
-
Téléchargez et décompressez le fichier de sauvegarde
Connectez-vous à la console RDS et utilisez la fonctionnalité Download Backup pour convertir le fichier de sauvegarde de votre instance ApsaraDB RDS for MySQL basée sur disque en fichier CSV ou SQL. Ensuite, téléchargez le fichier sur votre machine locale ou votre instance ECS.
-
Décompressez le fichier de sauvegarde téléchargé sur votre machine locale ou votre instance ECS.
-
Si le fichier de sauvegarde est au format
.tar.gz, exécutez la commande suivante :tar -izxvf <compressed_file_name>.tar.gz -C <destination_directory> # Example: Decompress the backup.tar.gz file to the /home/mysql/data directory. The file name and directory in the command are for reference only. tar -izxvf backup.tar.gz -C /home/mysql/data -
Si le fichier de sauvegarde est au format
.tar.zst, exécutez la commande suivante :zstd -d -c <compressed_file_name>.tar.zst | tar -xvf - -C <destination_directory> # Example: Decompress the backup.zst file to the /home/mysql/data directory. The file name and directory in the command are for reference only. zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
-
-
(Facultatif) Exécutez la commande suivante pour vérifier que le fichier de sauvegarde a bien été décompressé à l'emplacement spécifié (/home/mysql/data) :
ls -al /home/mysql/data -
Préparez le script de restauration
-
Préparez un script de restauration.
Téléchargez le fichier de script Python MySQL sur votre machine locale ou une instance ECS.
ImportantCe script est fourni à titre indicatif uniquement. Modifiez le script pour l'adapter à votre environnement. Utilisez-le avec prudence.
-
Exécutez la commande suivante pour accorder l'autorisation d'exécution sur le script :
chmod +x ./<script_name>.py # Example: chmod +x ./restore_from_downloads.py
-
-
Exécutez la commande de restauration
ImportantSi un message d'erreur tel que
Command 'python' not foundapparaît, cela signifie que Python n'est pas installé ou que la commandepythonne figure pas dans le PATH du système. Dans ce cas, vérifiez la version de Python installée et utilisez la commande appropriée pour exécuter le script. Par exemple, si vous disposez de Python 3, exécutez la commandepython3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx".python ./<script_name>.py <path_to_CSV_or_SQL_directory> <database_host> <database_port> <database_account> <database_password> # Example: python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"[root@ixxx ~]# python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tesxxx" [INFO]: restore data from /home/mysql/data to 127.xxx:3306 mysql: [Warning] Using a password on the command line interface can be insecure. [INFO]: restore structure database: zhxxx ends mysql: [Warning] Using a password on the command line interface can be insecure. [INFO]: restore structure table: zhxxx ends [INFO]: trying to exec: mysql -h127.xxx -P3306 -uroot -p#Tesxxx </home/mysql/data/zxxx mysql: [Warning] Using a password on the command line interface can be insecure. [INFO]: restore data [1/1] of table zhxxx.zhxxx Cette solution s'applique uniquement à la restauration d'un snapshot de sauvegarde depuis une instance basée sur disque. Si vous devez restaurer une sauvegarde depuis une instance dotée de disques locaux haute performance, consultez la rubrique Restaurer un fichier de sauvegarde physique d'ApsaraDB RDS for MySQL vers une base de données auto-gérée ou Restaurer un fichier de sauvegarde logique d'ApsaraDB RDS for MySQL vers une base de données auto-gérée.
Alibaba Cloud propose également le service Data Transmission Service (DTS) pour vous aider à migrer les données d'une instance ApsaraDB RDS for MySQL vers une base de données MySQL auto-gérée.
Pour plus de solutions de restauration de données, consultez la rubrique Présentation des solutions de restauration de données.
Références