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.
Le script de restauration Python n'est plus maintenu. Évaluez-le avant utilisation.
Prérequis
Prérequis du cluster PolarDB for MySQL
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).
RemarqueCette 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.
Vérifiez l'état du paramètre
local_infile. Une valeurONindique 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.
RemarqueSi un ensemble de sauvegarde contient ces types de champs, ils sont stockés au format hexadécimal. Vous devez alors utiliser manuellement la fonction
UNHEXdans la commandeload data local infilepour 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.
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.
-
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.gzvers/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.zstvers/home/mysql/data:zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
-
-
(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 -
Téléchargez le script Python sur votre machine locale ou sur l'instance ECS.
ImportantCe script est fourni à titre indicatif uniquement et peut nécessiter des adaptations pour votre environnement. Utilisez-le avec prudence.
-
Rendez le script
restore_from_downloads.pyexécutable en exécutant la commande suivante :chmod +x ./restore_from_downloads.py -
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********"RemarqueLa 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.zhxxxImportantAssurez-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 utiliserpython3 ./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 insecureapparaît lors de l'exécution d'un script Python, c'est parce que le script utilise la commandemysql -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.