La modification du jeu de caractères d'une table (par exemple, de gbk à utf8mb4) à l'aide de la commande ALTER verrouille la table, ce qui peut avoir un impact significatif sur vos services lorsque la table est volumineuse.
Pour éviter le verrouillage des tables, vous pouvez créer un schéma de table avec le nouveau jeu de caractères dans une instance de destination, migrer les données depuis l'instance source à l'aide de Data Transmission Service (DTS), et mettre en place une solution de restauration ou d'écriture double afin de garantir une transition fluide.
Précautions
Avant de modifier le jeu de caractères, testez vos applications et vos instructions SQL pour vérifier qu'elles sont compatibles avec le nouveau jeu de caractères.
Lors d'une migration complète des données, DTS consomme des ressources de lecture et d'écriture sur les instances source et de destination, ce qui peut augmenter la charge de la base de données. Évaluez les performances des deux instances et envisagez de migrer les données pendant les heures creuses.
Si une table de l'instance source ne possède ni clé primaire ni contrainte d'unicité, et que ses colonnes ne garantissent pas l'unicité, la migration risque de créer des données en double dans l'instance de destination.
Instructions
Étape 1 : Exporter et importer le schéma de la table
Dans cet exemple, toutes les instances accessibles via Data Management (DMS) utilisent le Flexible Control Mode.
-
Exportez le script de schéma des tables dont vous souhaitez modifier le jeu de caractères depuis l'instance source.
Connectez-vous à l'instance source à l'aide de DMS. Pour plus d'informations, consultez la rubrique Se connecter à une instance ApsaraDB RDS avec DMS.
-
Dans la barre de navigation supérieure, choisissez .
RemarquePour effectuer cette opération, vous devez d'abord activer l'option Drop-down Menus in Top Navigation Bar dans le menu des paramètres, accessible via l'icône
située dans le coin supérieur droit. -
Configurez les paramètres d'exportation.
RemarqueLes paramètres requis et le processus de configuration peuvent varier en fonction du mode de gestion de l'instance de destination. Pour plus d'informations, consultez la rubrique Exporter des bases de données.
Paramètre
Description
Data Export Type in Application
Sélectionnez Database Export.
Database name
Sélectionnez la base de données que vous souhaitez exporter.
RemarqueVous devez disposer des autorisations requises pour exporter la base de données. Pour plus d'informations, consultez la rubrique Afficher mes autorisations.
Exported table
Dans cet exemple, l'option Specific Tables est sélectionnée. Vous pouvez choisir Specific Tables ou All Tables selon vos besoins.
RemarqueSi vous sélectionnez Specific Tables, vous devez sélectionner les tables et configurer les conditions de filtrage sur le côté droit de la page.
Export content
Sélectionnez Code Structure.
File Format
Dans cet exemple, le format SQL est sélectionné par défaut et ne peut pas être modifié.
Exported Structure Type
Sélectionnez les types de schéma à exporter en fonction de vos besoins métier.
-
Procedure
-
Function
-
Trigger
-
View
-
Event
RemarqueLes types de schéma pris en charge varient selon le type de base de données. Les options affichées dans la console font foi.
More Options
Cliquez sur Big Data Export Options ou SQL Script Options, puis sélectionnez les options requises.
-
Cliquez sur Submit an application et attendez l'approbation du ticket.
Une fois le ticket approuvé, dans la section Download, cliquez sur Download Exported File. Le lien de téléchargement reste valide pendant 24 heures. Veillez à télécharger le fichier dans ce délai.
Décompressez le fichier téléchargé. Ouvrez ensuite le script de schéma et modifiez la configuration du jeu de caractères pour utiliser le jeu de caractères cible.
Achetez une nouvelle instance ApsaraDB RDS for MySQL avec les mêmes spécifications que l'instance source. Pour plus d'informations, consultez la rubrique Créer une instance ApsaraDB RDS for MySQL.
-
Importez le script de schéma modifié dans la nouvelle instance ApsaraDB RDS for MySQL.
Connectez-vous à la nouvelle instance ApsaraDB RDS for MySQL à l'aide de DMS. Pour plus d'informations, consultez la rubrique Se connecter à une instance ApsaraDB RDS avec DMS.
Dans la barre de navigation supérieure, choisissez .
-
Configurez les paramètres d'importation.
RemarqueLes paramètres requis et le processus de configuration peuvent varier en fonction du mode de gestion de l'instance. Pour plus d'informations, consultez la rubrique Importer des données.
Paramètre
Description
Data Change Type in Application
Sélectionnez Large Data Import.
Database
Base de données de destination pour l'importation.
RemarquePour les instances en mode Flexible ou Stable Control Mode, vous devez vous connecter à la base de données avant de pouvoir la sélectionner.
File Encoding
Sélectionnez l'encodage de caractères du fichier d'importation :
-
UTF-8
-
GBK
-
ISO-8859-1
-
Détection automatique
Import Mode
Sélectionnez un mode d'importation :
-
Speed Mode : Lors de la phase d'exécution, le système lit le fichier et exécute directement les instructions SQL sur la base de données de destination. Ce mode est plus rapide mais moins sécurisé que le mode Security Mode.
RemarquePar défaut, les règles de sécurité pour le mode Speed Mode n'autorisent pas l'importation de données en mode Speed Mode. Vous pouvez activer cette fonctionnalité pour la règle de sécurité concernée dans .
-
Security Mode : Lors de la phase de précontrôle, le système analyse le fichier et met en cache les données SQL ou CSV. Lors de la phase d'exécution, il lit les données depuis le cache et exécute les instructions sur la base de données de destination. Ce mode offre une meilleure sécurité, mais est plus lent que le mode Speed Mode.
File Type
Sélectionnez le type de fichier que vous importez.
-
Script SQL : En mode Security Collaboration, seuls les types de commande INSERT et REPLACE sont autorisés par défaut. Un administrateur de base de données (DBA) ou un administrateur peut modifier ces paramètres dans Security Rules > SQL Correct > Large Data Import.
-
CSV : Le délimiteur dans le fichier doit être une virgule.
-
Excel : Le fichier Excel peut contenir des en-têtes (attributs) ou uniquement des données.
Attachment
Cliquez sur File pour télécharger la pièce jointe.
Remarque-
Les types de fichiers SQL, CSV, TXT, XLSX et ZIP sont pris en charge.
-
La taille maximale du fichier est de 5 Go.
Other Options
Indiquez si les erreurs doivent être ignorées.
-
Ne pas ignorer (désactivé) : Option par défaut. En cas d'erreur, le système arrête l'exécution des instructions SQL suivantes et signale une erreur.
-
Ignorer (activé) : En cas d'erreur, le système l'ignore et continue d'exécuter les instructions SQL suivantes.
-
-
Cliquez sur Submit an application. Attendez que le précontrôle système soit réussi. Si le précontrôle échoue, identifiez et corrigez le problème en suivant les instructions, puis soumettez à nouveau le ticket.
RemarqueLe système effectue un précontrôle de votre script SQL téléchargé. Si vous téléchargez un fichier CSV, il génère les instructions
INSERTcorrespondantes. Une fois le ticket approuvé, dans la section Perform, cliquez sur Execute Change.
-
Dans la boîte de dialogue Task Settings, choisissez le moment d'exécution du ticket. Vous pouvez choisir Execute Immediately. Sinon, désactivez l'option Execute Immediately et sélectionnez une heure de début. Cliquez ensuite sur Confirm Execution. La boîte de dialogue affiche également une Note for Security Change : Essayez d'exécuter l'opération pendant les heures creuses.
Les méthodes d'exécution sont les suivantes :
Running Immediately : Option par défaut. La tâche s'exécute immédiatement après que vous avez cliqué sur Confirm Execution.
Schedule : Sélectionnez une heure de début pour la tâche. La tâche s'exécute automatiquement à l'heure spécifiée après que vous avez cliqué sur Confirm Execution.
RemarquePendant l'exécution, le système lit les instructions SQL analysées en flux continu et les exécute par lots dans la base de données. La taille de chaque lot est de 1 Mo.
Vous pouvez afficher l'état de la tâche, les détails de la vérification SQL et les journaux de planification dans la section Execution.
-
Lorsqu'une tâche en pause est redémarrée, son comportement dépend du mode d'importation :
Mode Speed Mode : L'exécution du script ou l'importation du fichier de données recommence depuis le début.
Mode Security Mode : L'exécution du script ou l'importation du fichier de données reprend à partir du point de pause.
Une fois l'importation réussie, vous pouvez vérifier le jeu de caractères de la table en exécutant la commande
show create table <table_name>;.
-
Remarque
Si vous êtes redirigé automatiquement vers la console Data Management (DMS), cliquez sur l'icône

située dans le chatbot 
en bas à droite pour revenir à la version précédente de la console DTS.Si vous utilisez la nouvelle console DTS, cliquez sur l'icône

en bas à droite pour revenir à la version précédente.
Dans le volet de navigation de gauche, cliquez sur Data Migration.
-
En haut de la page Migration Tasks, sélectionnez la région du cluster de destination.
Dans le coin supérieur droit de la page, cliquez sur Create Data Migration Task.
-
Configurez les bases de données source et de destination pour la tâche de migration.
Catégorie
Paramètre
Description
Nom de la tâche
-
DTS génère automatiquement un nom de tâche. Spécifiez un nom descriptif pour faciliter l'identification. Le nom n'a pas besoin d'être unique.
Base de données source
Type d'instance
Sélectionnez RDS Instance.
Région de l'instance
Sélectionnez la région où se trouve l'instance RDS source.
ID de l'instance RDS
Sélectionnez l'ID de l'instance RDS source.
Compte de base de données
Saisissez le compte de base de données pour l'instance RDS source. Ce compte doit disposer des autorisations de lecture et d'écriture sur les bases de données à migrer.
Mot de passe de la base de données
Saisissez le mot de passe du compte de base de données.
RemarqueAprès avoir saisi les informations de la base de données source, vous pouvez cliquer sur Test Connectivity à côté de Database Password pour vérifier que les informations sont correctes. Si les informations sont correctes, le message Passed s'affiche. Si le message Failed s'affiche, cliquez sur Diagnose à côté du message Failed et ajustez les informations de la base de données source selon les instructions.
Méthode de connexion
Sélectionnez Non-encrypted ou SSL-encrypted. Si vous choisissez SSL-encrypted, vous devez d'abord activer le chiffrement SSL pour l'instance RDS. Pour plus d'informations, consultez Configurer le chiffrement SSL.
RemarqueLe paramètre Encryption est disponible uniquement dans les régions de Chine continentale.
Base de données de destination
Type d'instance
Sélectionnez RDS Instance.
Région de l'instance
Sélectionnez la région où se trouve l'instance RDS de destination.
ID de l'instance RDS
Sélectionnez l'ID de l'instance RDS de destination.
Compte de base de données
Saisissez le compte de base de données pour l'instance RDS de destination. Ce compte doit disposer des autorisations de lecture et d'écriture sur les bases de données de destination.
Mot de passe de la base de données
Saisissez le mot de passe du compte de base de données.
RemarqueAprès avoir saisi les informations de la base de données de destination, vous pouvez cliquer sur Test Connectivity après Database Password pour vérifier que les informations saisies sont correctes. Si les informations sont correctes, un message Passed s'affiche. Si un message Failed s'affiche, cliquez sur Diagnose après Failed et ajustez les informations de la base de données de destination selon les instructions.
Méthode de connexion
Sélectionnez Non-encrypted ou SSL-encrypted. Si vous choisissez SSL-encrypted, vous devez d'abord activer le chiffrement SSL pour l'instance RDS. Pour plus d'informations, consultez Configurer le chiffrement SSL.
RemarqueLe paramètre Encryption est disponible uniquement dans les régions de Chine continentale.
-
Une fois la configuration terminée, cliquez sur Add Whitelist and Proceed to Next Step dans le coin inférieur droit de la page.
RemarqueLes adresses IP des serveurs DTS sont automatiquement ajoutées à la liste d'autorisation de l'instance ApsaraDB RDS for MySQL afin de garantir la connectivité entre les serveurs DTS et les instances source et de destination.
-
Sélectionnez les types de migration et les objets.
Paramètre
Description
Types de migration
Étant donné que la migration du schéma a été effectuée à l'étape 1, il n'est pas nécessaire de sélectionner Schema Migration ici.
-
Pour effectuer uniquement une migration complète, sélectionnez seulement Full Data Migration.
AvertissementPour garantir la cohérence des données, n'écrivez pas de nouvelles données dans l'instance source pendant la migration complète des données.
-
Pour une migration sans temps d'arrêt, sélectionnez à la fois Full Data Migration et Incremental Data Migration.
RemarqueLes opérations SQL prises en charge lors de la phase de migration incrémentielle des données sont INSERT, UPDATE, DELETE, CREATE TABLE, ALTER TABLE, RENAME TABLE, TRUNCATE TABLE et DROP TABLE.
Objets de migration
Dans la zone Migration Object, sélectionnez les objets dont les schémas ont été migrés à l'étape 1. Cliquez ensuite sur l'icône
pour les déplacer vers la zone Selected Objects.AvertissementN'effectuez pas de mappage de noms d'objets, car le schéma est déjà migré. Cela entraînerait l'échec de la migration.
-
-
Démarrez la tâche de migration.
-
Dans le coin inférieur droit de la page, cliquez sur Precheck and Start.
RemarqueDTS effectue une vérification préalable avant de démarrer la tâche de migration. La tâche ne peut se poursuivre qu'après avoir réussi cette vérification.
Si la vérification préalable échoue, cliquez sur l'icône

à côté d'un élément de vérification spécifique pour afficher ses détails. Corrigez le problème selon les instructions, puis exécutez à nouveau la vérification préalable.
Une fois la vérification préalable réussie, cliquez sur Next.
Dans la boîte de dialogue Confirm Settings, sélectionnez la Instance Class et cochez la case Data Transmission Service (Pay-As-You-Go) Terms of Service.
Cliquez sur Buy and Start pour démarrer la tâche de migration.
-
-
Solution de retour arrière (aucune modification de l'application requise, mais le retour arrière peut échouer) :
Vérifiez les données migrées dans l'instance ApsaraDB RDS for MySQL de destination.
Suivez la procédure décrite dans le document Procédure de basculement de la charge de travail pour basculer votre charge de travail et établir un plan de retour arrière. Cette opération implique la migration des données incrémentielles de la nouvelle instance de destination vers l'instance source d'origine.
Maintenez la tâche de migration inverse des données active pendant un cycle métier complet. À l'issue de ce cycle, testez toutes les fonctionnalités. Si tout fonctionne correctement, arrêtez la tâche de migration inverse des données.
Facultatif : Si l'instance source n'est plus nécessaire, vous pouvez la libérer (s'il s'agit d'une instance en paiement à l'utilisation) ou vous désabonner (s'il s'agit d'une instance par abonnement).
-
Solution de double écriture (taux de réussite du retour arrière plus élevé, mais nécessite des modifications importantes de l'application) :
Modifiez votre application pour mettre en œuvre une logique de double écriture, où les modifications de données sont écrites simultanément dans les instances source et de destination.
-
Arrêtez la tâche de migration des données.
-
Migration complète des données
N'arrêtez pas manuellement une tâche pendant la migration complète des données. Dans le cas contraire, le système risque de ne pas migrer l'intégralité des données. Attendez que la tâche de migration se termine automatiquement.
-
Migration incrémentielle des données
Ce type de tâche ne s'arrête pas automatiquement ; vous devez l'arrêter manuellement.
Attendez que la tâche passe à l'étape Incremental Data Migration avec le statut Undelayed. Ensuite, suspendez les écritures dans la base de données source pendant quelques minutes. Durant cette période, le statut Incremental Data Migration peut indiquer une latence.
Attendez que le statut Incremental Data Migration revienne à Undelayed. Une fois cela confirmé dans la liste, cochez la case correspondant à la tâche et cliquez sur le bouton StopEnd dans la barre d'opérations par lot en bas de page.
RemarqueVous pouvez vous connecter à l'instance source et exécuter
show processlist;pour vérifier les informations de session et vous assurer qu'aucune nouvelle session n'effectue d'opérations d'écriture. -
Vérifiez les données migrées dans l'instance ApsaraDB RDS for MySQL de destination.
Configurez votre application pour la double écriture, afin que les modifications de données soient écrites dans les instances source et de destination.
Maintenez l'état de double écriture pendant un cycle métier complet. À l'issue de ce cycle, testez toutes les fonctionnalités. Si tout fonctionne correctement, ajustez l'application pour qu'elle écrive uniquement dans l'instance de destination.
Facultatif : Si l'instance source n'est plus nécessaire, vous pouvez la libérer (s'il s'agit d'une instance en paiement à l'utilisation) ou vous désabonner (s'il s'agit d'une instance par abonnement).
Étape 2 : Migrer les données vers la nouvelle instance
Étape 3 : Effectuer le basculement de la charge de travail
Choisissez l'une des solutions suivantes en fonction de vos besoins métier.