Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Restore an ApsaraDB RDS for MySQL snapshot backup file to a self-managed database

Dernière mise à jour :Oct 09, 2026

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

    Remarque
    • Consultez 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_infile doit être activé sur votre base de données MySQL gérée en interne.

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

    Remarque
    • Si 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 commande load data local infile pour les reconvertir dans leur format binaire.

    • Autrement, pour les données BLOB, vous pouvez utiliser mysqldump pour 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>.sql

      Restauration 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.py fourni 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 un space, 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.

  1. Téléchargez et décompressez le fichier de sauvegarde

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

    2. 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
    3. (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
    4. Préparez le script de restauration

      1. Préparez un script de restauration.

        Téléchargez le fichier de script Python MySQL sur votre machine locale ou une instance ECS.

        Important

        Ce script est fourni à titre indicatif uniquement. Modifiez le script pour l'adapter à votre environnement. Utilisez-le avec prudence.

      2. 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
    5. Exécutez la commande de restauration

      Important

      Si un message d'erreur tel que Command 'python' not found apparaît, cela signifie que Python n'est pas installé ou que la commande python ne 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 commande python3 ./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
    6. Références