Tous les produits
Search
Centre de documentation

PolarDB:Restore to a self-managed MySQL database

Dernière mise à jour :Sep 17, 2026

PolarDB vous permet d'exporter une sauvegarde instantanée depuis un cluster basé sur des disques cloud sous forme de fichier CSV ou SQL. Utilisez ensuite ce fichier pour restaurer les données dans une base de données MySQL auto-gérée.

Important

Le script de restauration Python n'est plus maintenu. Évaluez-le avant utilisation.

Prérequis

Prérequis du cluster PolarDB for MySQL

Important

Pour garantir le succès de la restauration, la version de votre base de données auto-gérée doit correspondre à celle du cluster source PolarDB for MySQL.

Le cluster doit répondre aux exigences suivantes :

  • Cluster : Cette fonctionnalité est disponible uniquement pour l'édition Cluster Edition des clusters Enterprise Edition.

  • Région : Chine (Chengdu), Chine (Guangzhou), Chine (Qingdao), Chine (Beijing), Chine (Shanghai), Chine (Zhangjiakou), Chine (Hangzhou), Chine (Shenzhen), Chine (Hong Kong), Malaisie (Kuala Lumpur), Indonésie (Jakarta), Japon (Tokyo), Singapour, États-Unis (Silicon Valley), États-Unis (Virginie) et Allemagne (Francfort).

    Remarque

    Cette fonctionnalité sera bientôt disponible dans d'autres régions.

  • Autres :

    • L'utilisateur RAM doit disposer des autorisations nécessaires pour télécharger les fichiers de sauvegarde. Pour accorder des autorisations à un utilisateur RAM, consultez la rubrique Permissions des utilisateurs RAM.

    • Les données de sauvegarde ne sont pas chiffrées. Vous ne pouvez pas télécharger de fichiers de sauvegarde depuis des clusters PolarDB chiffrés.

    • Une seule tâche de téléchargement (en cours ou échouée) est autorisée par cluster ou instance à la fois.

Prérequis de la base de données MySQL auto-gérée

Assurez-vous que le paramètre local_infile est activé dans votre base de données MySQL auto-gérée.

Remarque
  • Vérifiez l'état du paramètre local_infile. Une valeur ON indique que le paramètre est activé : SHOW GLOBAL VARIABLES LIKE 'local_infile';

  • Activez le paramètre local_infile : SET GLOBAL local_infile=1;

Limites

Les limites suivantes s'appliquent lors de la restauration des données depuis une sauvegarde téléchargée vers une base de données MySQL auto-gérée :

  • Les types de champs binaires suivants ne sont pas pris en charge : BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB.

    Remarque

    Si un ensemble de sauvegarde contient ces types de champs, ils sont stockés au format hexadécimal. Vous devez alors utiliser manuellement la fonction UNHEX dans la commande load data local infile pour reconvertir les valeurs hexadécimales en leur format binaire d'origine.

  • Les types de champs spatiaux suivants ne sont pas pris en charge : GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON et GEOMETRYCOLLECTION.

Notes d'utilisation

  • Utilisez la même version de base de données pour le cluster PolarDB for MySQL et la base de données MySQL auto-gérée. Des incompatibilités entre versions différentes peuvent entraîner l'échec de la restauration.

  • Avant d'exécuter la commande de restauration, vérifiez que la base de données de destination ne contient aucune base ni table portant le même nom que celles présentes dans les données de sauvegarde. Cela évite les conflits et la perte potentielle de données. Supprimez préalablement toutes les bases ou tables conflictuelles.

  • L'interruption d'une tâche de restauration peut entraîner l'incomplétude des données ou l'échec de la tâche.

Procédure

Cet exemple illustre la restauration des données depuis un fichier de sauvegarde SQL d'un cluster PolarDB for MySQL vers une base de données MySQL auto-gérée sur une instance ECS (CentOS 7.8 64 bits). Adaptez les commandes à votre environnement.

  1. Dans la console PolarDB, utilisez la fonctionnalité Télécharger des fichiers de sauvegarde pour convertir le fichier de sauvegarde du cluster au format CSV ou SQL. Ensuite, téléchargez le fichier sur votre machine locale ou sur une instance ECS.

  2. Décompressez le fichier de sauvegarde.

    • Pour les fichiers .tar.gz :

      tar -izxvf <compressed_package_name>.tar.gz -C <destination_directory>

      Exemple : décompression de backup.tar.gz vers /home/mysql/data :

      tar -izxvf backup.tar.gz -C /home/mysql/data
    • Pour les fichiers .tar.zst :

      zstd -d -c <compressed_package_name>.tar.zst | tar -xvf - -C <destination_directory>

      Exemple : décompression de backup.tar.zst vers /home/mysql/data :

      zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
  3. (Facultatif) Vérifiez que le fichier de sauvegarde est bien décompressé dans le répertoire spécifié (/home/mysql/data).

    ls -al /home/mysql/data
  4. Téléchargez le script Python sur votre machine locale ou sur l'instance ECS.

    Important

    Ce script est fourni à titre indicatif uniquement et peut nécessiter des adaptations pour votre environnement. Utilisez-le avec prudence.

  5. Rendez le script restore_from_downloads.py exécutable en exécutant la commande suivante :

    chmod +x ./restore_from_downloads.py
  6. Restaurez les données depuis le fichier CSV ou SQL vers votre base de données auto-gérée :

    python ./restore_from_downloads.py <path_to_csv_or_sql_directory> <database_endpoint> <database_port> <database_username> <database_password>

    Exemple :

    python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
    Remarque

    La fermeture de la fenêtre du terminal arrête le script. Pour l'exécuter en arrière-plan, utilisez la commande suivante :

     nohup python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********" > app.log 2>&1 &

    Sortie :

    [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
    Important
    • Assurez-vous que votre base de données auto-gérée ne contient pas de base portant le même nom que celle présente dans la sauvegarde. Sinon, la restauration échouera.

    • Si le nom d'utilisateur ou le mot de passe de la base de données contient des caractères spéciaux, tels que des dièses (#) ou des espaces, entourez la valeur de guillemets doubles ("") lorsque vous la transmettez en tant que paramètre de ligne de commande. Par exemple, si le mot de passe de la base de données est #1234, vous devez transmettre "#1234" dans la ligne de commande.

    • Si vous recevez une erreur telle que Command 'python' not found, cela signifie que Python n'est pas installé ou qu'il ne figure pas dans le PATH de votre système. Vérifiez votre installation Python et la commande utilisée pour l'exécuter. Par exemple, si Python 3 est installé, vous pouvez utiliser python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx".

    • Si le message d'avertissement [Warning] Using a password on the command line interface can be insecure apparaît lors de l'exécution d'un script Python, c'est parce que le script utilise la commande mysql -h<database endpoint> -P<database port> -u<database username> -p<database password> -e<SQL>. Cette méthode n'est pas sécurisée car d'autres utilisateurs du système peuvent afficher le mot de passe en exécutant des commandes telles que ps. Cet avertissement n'affecte pas votre opération de récupération. Une fois la récupération terminée, connectez-vous à la base de données MySQL auto-gérée et modifiez le mot de passe du compte.

    • Une erreur telle que Access denied for user 'xxx'@'xxx' (using password: YES) indique un nom d'utilisateur ou un mot de passe incorrect. Vérifiez que vous avez saisi correctement les identifiants.