Utilisez Data Transmission Service (DTS) pour migrer les données d'une instance PolarDB-X 2.0 vers une instance ApsaraDB for SelectDB.
Cette fonctionnalité est en phase de déploiement progressif et n'est disponible que pour certains utilisateurs.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance PolarDB-X 2.0 (source) avec une bande passante sortante d'au moins 100 Mbit/s
Une instance ApsaraDB for SelectDB (destination)
Le paramètre
binlog_row_imagedéfini surfullsur l'instance source (requis pour la migration incrémentielle des données). Pour plus de détails, consultez la page Paramètres de configurationDes comptes de base de données disposant des autorisations requises sur les deux instances (voir la section Autorisations requises)
Les blocs CIDR des serveurs DTS ajoutés aux paramètres de sécurité des deux instances. Pour plus de détails, consultez la page Ajouter les blocs CIDR des serveurs DTS
Objets non pris en charge
Les types d'objets suivants ne peuvent pas être migrés :
Les tables dont les noms contiennent des lettres majuscules
INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER et clés étrangères (FK)
Les objets TABLEGROUP
Les bases de données ou tables contenant l'attribut Locality
Les instances en lecture seule de l'édition Enterprise de PolarDB-X 2.0
Les tables à migrer doivent comporter des contraintes PRIMARY KEY ou UNIQUE, avec tous les champs uniques. Sans ces contraintes, la base de données de destination peut contenir des enregistrements en double.
Si vous sélectionnez des tables comme objets de migration et que vous devez les renommer ou modifier leurs colonnes dans la destination, une seule tâche prend en charge jusqu'à 1 000 tables. Pour plus de 1 000 tables, configurez plusieurs tâches ou migrez la base de données entière en une seule fois.
Restrictions pendant la migration
N'effectuez pas les opérations suivantes pendant l'exécution de la tâche de migration :
Sur l'instance source : N'exécutez pas d'instructions DDL modifiant les schémas de base de données ou de table lors de la migration du schéma ou de la migration complète des données. Cela entraînerait l'échec de la tâche.
-
Sur l'instance de destination :
Ne créez pas de clusters dans l'instance ApsaraDB for SelectDB. Si cela provoque un échec de la tâche, redémarrez l'instance de migration pour reprendre.
N'ajoutez pas de nœuds backend à la base de données ApsaraDB for SelectDB. Si cela provoque un échec de la tâche, redémarrez l'instance de migration pour reprendre.
N'autorisez pas d'autres sources de données à écrire dans la destination pendant l'exécution de DTS. Cela pourrait provoquer une incohérence des données ou l'échec de la tâche.
Restrictions DDL : N'exécutez pas d'instructions DDL modifiant plusieurs colonnes à la fois ou modifiant successivement la même table.
Exigences spécifiques à SelectDB
Noms de bases de données et de tables : Ils doivent commencer par une lettre. Utilisez la fonctionnalité de mappage des noms d'objets pour renommer les objets qui ne respectent pas cette exigence.
Noms en caractères chinois : Les objets dont les noms contiennent des caractères chinois doivent être renommés via le mappage des noms d'objets (par exemple, en anglais). Sinon, la tâche risque d'échouer.
Longueur VARCHAR : Dans PolarDB-X 2.0,
VARCHAR(M)spécifie une longueur en caractères. Dans SelectDB,VARCHAR(N)spécifie une longueur en octets. Si vous ignorez la migration du schéma, définissez les longueurs des champs VARCHAR de SelectDB sur quatre fois celles des champs correspondants dans PolarDB-X 2.0.Moteur de table de destination : Les données ne peuvent être migrées que vers des tables utilisant le moteur Unique ou le moteur Duplicate. Consultez les sections Tables avec moteur Unique et Tables avec moteur Duplicate ci-dessous.
Tables avec moteur Unique
Toutes les clés uniques de la table de destination utilisant le moteur Unique doivent exister dans la table source et être incluses dans les objets à migrer. Sinon, des incohérences de données peuvent survenir.
Tables avec moteur Duplicate
Lorsque la table de destination utilise le moteur Duplicate, DTS convertit les instructions UPDATE et DELETE en instructions INSERT. Des enregistrements en double peuvent apparaître dans les scénarios suivants :
L'instance de migration fait l'objet d'une nouvelle tentative ou d'un redémarrage.
Les mêmes données sont modifiées par des opérations DML deux fois ou plus après le démarrage de l'instance de migration.
Pour dédupliquer les enregistrements, utilisez les colonnes supplémentaires créées automatiquement par DTS : _is_deleted, _version et _record_id. Consultez la section Colonnes supplémentaires.
Autres remarques
Performances de la migration complète des données : La migration complète des données utilise les ressources de lecture et d'écriture des deux instances, ce qui augmente la charge de la base de données. Exécutez la migration pendant les heures creuses, lorsque la charge CPU des deux instances est inférieure à 30 %.
Fragmentation du stockage : Étant donné que la migration complète des données utilise des opérations INSERT concurrentes, les tables de destination deviennent fragmentées. Après la migration complète, les tables de destination occupent plus d'espace de stockage que les tables sources.
Écritures de heartbeat : DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTS \sur l'instance source pour écrire des données de heartbeat et faire avancer la position du journal binaire. Si vous définissez l'option Whether to delete SQL operations on heartbeat tables of forward and reverse tasks sur Yes, ou si le compte source ne dispose pas de l'autorisation de créer des bases de données, et qu'aucune opération DML n'est effectuée sur la source pendant une période prolongée, les informations de latence peuvent être inexactes. Pour actualiser les données de latence, effectuez une opération DML sur l'instance source.Récupération de tâche : Si une tâche DTS échoue, l'assistance DTS tente de la restaurer dans un délai de 8 heures. Pendant la restauration, la tâche peut être redémarrée et certains paramètres de tâche peuvent être ajustés. Les paramètres de la base de données ne sont pas modifiés.
Facturation
| Type de migration | Frais de configuration de tâche | Frais de transfert de données |
|---|---|---|
| Migration du schéma et migration complète des données | Gratuit | Gratuit lorsque la Méthode d'accès est Alibaba Cloud Instance. Des frais s'appliquent lorsque la Méthode d'accès est Public IP Address. Consultez la page Présentation de la facturation. |
| Migration incrémentielle des données | Payant. Consultez la page Présentation de la facturation. | — |
Opérations SQL prises en charge lors de la migration incrémentielle
| Type d'opération | Instructions SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ADD COLUMN ; DROP COLUMN ; DROP TABLE ; TRUNCATE TABLE ; RENAME TABLE |
Les opérations RENAME TABLE peuvent provoquer une incohérence des données. Par exemple, si vous sélectionnez une table comme objet de migration et que vous la renommez pendant la migration, les données de cette table ne seront pas migrées. Pour éviter cela, sélectionnez la base de données contenant la table comme objet de migration, et assurez-vous que les noms de base de données avant et après le renommage sont inclus dans les objets à migrer.
Autorisations requises
| Base de données | Migration du schéma | Migration complète | Migration incrémentielle |
|---|---|---|---|
| Source PolarDB-X 2.0 | SELECT | SELECT | REPLICATION SLAVE, REPLICATION CLIENT et SELECT sur les objets à migrer |
| Destination ApsaraDB for SelectDB | Usage_priv (accès au cluster), Select_priv, Load_priv, Alter_priv, Create_priv, Drop_priv | ||
Pour obtenir des instructions sur la création de comptes et l'attribution d'autorisations :
PolarDB-X 2.0 : Gérer les comptes de base de données et Autorisations de compte lors de la synchronisation des données
ApsaraDB for SelectDB : Gestion des autorisations de cluster et Gestion des autorisations de base
Créer une tâche de migration
Étape 1 : Accéder à la page Data Migration
Utilisez l'une des méthodes suivantes :
Console DTS
Connectez-vous à la console DTS.
Dans le volet de navigation de gauche, cliquez sur Data Migration.
Dans le coin supérieur gauche, sélectionnez la région où réside l'instance de migration.
Console DMS
Les étapes réelles peuvent varier en fonction du mode et de la disposition de la console DMS. Consultez les pages Mode simple et Personnaliser la disposition et le style de la console DMS .
Connectez-vous à la console DMS.
Dans la barre de navigation supérieure, placez le pointeur sur Data + AI > DTS (DTS) > Data Migration.
Dans la liste déroulante située à droite de Data Migration Tasks, sélectionnez la région où réside l'instance de migration.
Étape 2 : Configurer les bases de données source et de destination
Cliquez sur Create Task.
-
Configurez les paramètres décrits dans le tableau suivant.
Catégorie Paramètre Description S.O. Nom de la tâche Nom de la tâche DTS. DTS génère un nom par défaut. Spécifiez un nom explicite facilitant l'identification de la tâche. Le nom n'a pas besoin d'être unique. Base de données source Sélectionner une connexion existante Si l'instance source est enregistrée auprès de DTS, sélectionnez-la dans la liste déroulante. DTS remplit automatiquement les autres paramètres. Sinon, configurez les paramètres manuellement. Dans la console DMS, sélectionnez l'instance depuis Select a DMS database instance. Type de base de données Sélectionnez PolarDB-X 2.0. Méthode d'accès Sélectionnez Alibaba Cloud Instance. Région de l'instance Sélectionnez la région où réside l'instance source PolarDB-X 2.0. Répliquer les données entre les comptes Alibaba Cloud Sélectionnez No si les instances source et de destination appartiennent au même compte Alibaba Cloud. ID d'instance Sélectionnez l'ID de l'instance source PolarDB-X 2.0. Compte de base de données Saisissez le compte de base de données. Consultez la section Autorisations requises pour connaître les autorisations minimales nécessaires. Mot de passe de la base de données Saisissez le mot de passe du compte de base de données. Base de données de destination Sélectionner une connexion existante Si l'instance de destination est enregistrée auprès de DTS, sélectionnez-la dans la liste déroulante. DTS remplit automatiquement les autres paramètres. Sinon, configurez les paramètres manuellement. Dans la console DMS, sélectionnez l'instance depuis Select a DMS database instance. Type de base de données Sélectionnez SelectDB. Méthode d'accès Sélectionnez Alibaba Cloud Instance. Région de l'instance Sélectionnez la région où réside l'instance de destination SelectDB. Répliquer les données entre les comptes Alibaba Cloud Sélectionnez No si les instances source et de destination appartiennent au même compte Alibaba Cloud. ID d'instance Sélectionnez l'ID de l'instance de destination SelectDB. Compte de base de données Saisissez le compte de base de données. Consultez la section Autorisations requises pour connaître les autorisations minimales nécessaires. Mot de passe de la base de données Saisissez le mot de passe du compte de base de données. Cliquez sur Test Connectivity and Proceed.
Étape 3 : Configurer les objets de migration
-
Sur la page Configure Objects , définissez les paramètres suivants.
Paramètre Description Migration Types Sélectionnez les types de migration selon vos besoins : <br>- Migration du schéma + Migration complète des données : Migre uniquement les données existantes. N'écrivez pas de nouvelles données dans la source pendant la migration. <br>- Migration du schéma + Migration complète des données + Migration incrémentielle des données : Migre les données existantes et maintient la synchronisation de la destination avec les modifications en cours. Utilisez cette combinaison pour minimiser les interruptions de service. <br><br>Si vous ignorez la Migration du schéma, créez des tables avec le moteur Unique ou Duplicate ayant la structure correcte dans SelectDB avant de démarrer la tâche. Pour plus de détails, consultez les sections Mappage des types de données, Colonnes supplémentaires et Modèle de données. Processing Mode of Conflicting Tables - Vérification préalable et signalement des erreurs : La vérification préalable échoue si la destination contient des tables portant les mêmes noms que celles de la source. Pour résoudre les conflits, utilisez le mappage des noms d'objets pour renommer les tables migrées. Consultez la page Mapper les noms d'objets. <br>- Ignorer les erreurs et continuer : Ignore la vérification préalable pour les noms de tables identiques. AvertissementCela peut provoquer une incohérence des données. Lors de la migration complète, DTS ignore les enregistrements en conflit et conserve les données de destination existantes. Lors de la migration incrémentielle, DTS écrase les enregistrements en conflit. Si les schémas source et de destination diffèrent, seules certaines colonnes sont migrées ou la tâche peut échouer.
Capitalization of Object Names in Destination Instance Politique de casse pour les noms de bases de données, de tables et de colonnes dans la destination. La valeur par défaut est DTS default policy. Consultez la page Spécifier la casse des noms d'objets dans l'instance de destination. Source Objects Sélectionnez les bases de données ou tables à migrer, puis cliquez sur
pour les déplacer vers Objets sélectionnés.Selected Objects - Pour renommer une table dans la destination, faites un clic droit dessus et sélectionnez une option de mappage de nom d'objet. Consultez la page Mapper les noms d'objets. <br>- Pour filtrer les lignes, faites un clic droit sur une table et spécifiez des conditions WHERE. Consultez la page Spécifier les conditions de filtrage. <br>- Pour sélectionner des opérations SQL spécifiques pour une base de données ou une table, faites un clic droit sur l'objet et choisissez les opérations à inclure. <br>- Si la Migration du schéma est sélectionnée, vous ne pouvez sélectionner que des tables (et non des bases de données) comme objets de migration, et vous devez définir le paramètre bucket_count: faites un clic droit sur une table, activez Enable Parameter Settings, définissez Value sur un entier positif (par défaut : auto) et cliquez sur OK. <br><br>RemarqueLe renommage d'un objet via le mappage des noms d'objets peut empêcher la migration des objets dépendants.
-
Cliquez sur Next: Advanced Settings et configurez les paramètres suivants.
Paramètre Description Dedicated Cluster for Task Scheduling Par défaut, DTS planifie la tâche sur un cluster partagé. Pour améliorer la stabilité de la tâche, achetez un cluster dédié. Consultez la page Qu'est-ce qu'un cluster dédié DTS ?. Retry Time for Failed Connections Durée pendant laquelle DTS tente de reconnecter les connexions ayant échoué après le démarrage de la tâche. Plage valide : 10–1 440 minutes. Par défaut : 720 minutes. Définissez une valeur supérieure à 30 minutes. Si DTS se reconnecte dans ce délai, la tâche reprend. Sinon, la tâche échoue. RemarqueLorsque plusieurs tâches partagent la même source ou destination, la durée de nouvelle tentative définie le plus récemment est prioritaire. DTS facture l'instance pendant la nouvelle tentative.
Retry Time for Other Issues Durée pendant laquelle DTS retente les opérations DDL ou DML ayant échoué. Plage valide : 1–1 440 minutes. Par défaut : 10 minutes. Définissez une valeur supérieure à 10 minutes. Elle doit être inférieure à la Durée de nouvelle tentative pour les échecs de connexion. Enable Throttling for Full Data Migration Limite le débit de lecture et d'écriture lors de la migration complète pour réduire la charge sur les deux instances. Configurez les paramètres Queries per second (QPS) to the source database, RPS de la migration complète des données et Vitesse de migration des données pour la migration complète (Mo/s). Disponible uniquement lorsque l'option Migration complète des données est sélectionnée. Enable Throttling for Incremental Data Migration Limite le débit lors de la migration incrémentielle. Configurez les paramètres RPS of Incremental Data Migration et Vitesse de migration des données pour la migration incrémentielle (Mo/s). Disponible uniquement lorsque l'option Migration incrémentielle des données est sélectionnée. Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Contrôle si DTS écrit des opérations SQL de heartbeat sur l'instance source. <br>- Yes : DTS n'écrit pas d'opérations de heartbeat. Les informations de latence peuvent être inexactes. <br>- No : DTS écrit des opérations de heartbeat. La sauvegarde physique et le clonage de la source peuvent être affectés. Environment Tag Tag facultatif permettant d'identifier l'instance. Configure ETL Indique s'il faut activer la fonctionnalité extract, transform, load (ETL). Consultez les pages Qu'est-ce que l'ETL ? et Configurer l'ETL dans une tâche de migration ou de synchronisation des données. Monitoring and Alerting Indique s'il faut recevoir des alertes en cas d'échec de la tâche ou si la latence de migration dépasse un seuil. Si vous sélectionnez Yes, configurez le seuil d'alerte et les paramètres de notification. Consultez la page Configurer la surveillance et les alertes lors de la création d'une tâche DTS. -
(Facultatif) Cliquez sur Next: Configure Database and Table Fields. Pour chaque table à migrer, spécifiez les paramètres Primary Key Column, Distribution Key et Engine.
- Cette étape est disponible uniquement lorsque l'option Migration du schéma est sélectionnée. Définissez Definition Status sur All pour afficher toutes les tables. - Le paramètre Primary Key Column prend en charge plusieurs colonnes. Une ou plusieurs colonnes de clé primaire peuvent également être sélectionnées comme Distribution Key . - Si une table ne possède ni clé primaire ni contrainte UNIQUE, sélectionnez duplicate pour le paramètre Engine . Sinon, la tâche risque d'échouer ou des pertes de données peuvent survenir.
Étape 4 : Exécuter la vérification préalable
Cliquez sur Next: Save Task Settings and Precheck.
Pour prévisualiser les paramètres API pour cette configuration avant de continuer, placez le pointeur sur Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters.
La tâche doit réussir la vérification préalable avant de pouvoir démarrer.
Si un élément de vérification préalable échoue, cliquez sur View Details à côté de l'élément ayant échoué, résolvez le problème, puis cliquez sur Precheck Again .
Si une alerte est déclenchée : si elle ne peut pas être ignorée, résolvez-la et relancez la vérification. Si elle peut être ignorée en toute sécurité, cliquez sur Confirm Alert Details , cliquez sur Ignore dans la boîte de dialogue, confirmez, puis cliquez sur Precheck Again . Ignorer les alertes peut provoquer une incohérence des données.
Étape 5 : Acheter et démarrer l'instance
Attendez que le Taux de réussite atteigne 100 %, puis cliquez sur Next: Purchase Instance.
-
Sur la page Purchase Instance , configurez l'instance.
Section Paramètre Description Nouvelle classe d'instance Groupe de ressources Groupe de ressources pour l'instance de migration. Par défaut : default resource group. Consultez la page Qu'est-ce que Resource Management ? Classe d'instance La classe d'instance détermine la vitesse de migration. Sélectionnez une classe en fonction de vos besoins. Consultez la page Classes d'instances de migration de données. Cochez la case Data Transmission Service (Pay-as-you-go) Service Terms.
Cliquez sur Buy and Start, puis sur OK dans la boîte de dialogue de confirmation.
La tâche apparaît sur la page Data Migration . Suivez sa progression à cet endroit.
Si la tâche n'inclut pas la migration incrémentielle des données, elle s'arrête automatiquement une fois terminée. Le Status affiche Completed .
Si la tâche inclut la migration incrémentielle des données, elle s'exécute en continu. Le Status affiche Running . La tâche de migration incrémentielle des données ne s'arrête ni ne se termine jamais automatiquement.
Mappage des types de données
| Catégorie | Type PolarDB-X 2.0 | Type SelectDB |
|---|---|---|
| Numérique | TINYINT | TINYINT |
| TINYINT UNSIGNED | SMALLINT | |
| SMALLINT | SMALLINT | |
| SMALLINT UNSIGNED | INT | |
| MEDIUMINT | INT | |
| MEDIUMINT UNSIGNED | BIGINT | |
| INT | INT | |
| INT UNSIGNED | BIGINT | |
| BIGINT | BIGINT | |
| BIGINT UNSIGNED | LARGEINT | |
| BIT(M) | INT | |
| Decimal | Decimal ( Remarque zerofill n'est pas pris en charge) | |
| Numeric | Decimal | |
| Float | Float | |
| Double | DOUBLE | |
| BOOL / BOOLEAN | BOOLEAN | |
| Date et heure | DATE | DATEV2 |
| DATETIME[(fsp)] | DATETIMEV2 | |
| Timestamp[(fsp)] | DATETIMEV2 | |
| Time[(fsp)] | VARCHAR | |
| YEAR[(4)] | INT | |
| Chaîne | CHAR / VARCHAR | VARCHAR |
| BINARY / VARBINARY | STRING | |
| TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT | STRING | |
| TINYBLOB / BLOB / MEDIUMBOLB / LONGBLOB | STRING | |
| ENUM | STRING | |
| SET | STRING | |
| JSON | STRING |
Pour éviter toute perte de données, CHAR et VARCHAR(n) sont convertis en VARCHAR(4*n) dans SelectDB.
Si aucune longueur n'est spécifiée, la valeur par défaut de SelectDB VARCHAR(65533) est utilisée.
Si la longueur dépasse 65 533, les données sont converties en STRING.
Colonnes supplémentaires
DTS crée automatiquement les colonnes suivantes dans les tables utilisant le moteur Duplicate (ou vous pouvez les ajouter manuellement) :
| Colonne | Type | Valeur par défaut | Description |
|---|---|---|---|
_is_deleted |
Int | 0 | Indique si l'enregistrement est supprimé. Défini sur 0 pour les opérations INSERT et UPDATE, et sur 1 pour les opérations DELETE. |
_version |
Bigint | 0 | Défini sur 0 lors de la migration complète des données. Lors de la migration incrémentielle, contient l'horodatage (en secondes) issu du fichier journal binaire source. |
_record_id |
Bigint | 0 | Défini sur 0 lors de la migration complète des données. Lors de la migration incrémentielle, contient l'ID unique de l'entrée de journal incrémentielle. L'ID s'incrémente automatiquement pour chaque nouvelle entrée de journal. |