Utilisez DTS, Flink CDC, un catalogue ou DataWorks pour migrer des données depuis des sources MySQL (telles que MySQL géré en interne, ApsaraDB RDS for MySQL et PolarDB for MySQL) vers ApsaraDB for SelectDB. Choisissez la méthode adaptée au volume de données et à votre cas d'utilisation.
Comparaison des méthodes de migration
DTS, DataWorks, Flink CDC et les catalogues permettent tous de migrer des données MySQL vers ApsaraDB for SelectDB, mais leurs fonctionnalités diffèrent. Sélectionnez la méthode la mieux adaptée à votre scénario.
|
Méthode |
Migration des données historiques |
Synchronisation incrémentielle des données |
Migration du schéma |
Migration de base de données |
Synchronisation DDL |
Vérification des données |
|
DTS |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
|
DataWorks |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
❌ |
|
Flink CDC |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
❌ |
|
catalogue |
✔️ |
❌ |
❌ |
❌ |
❌ |
❌ |
Les sections suivantes décrivent les étapes de base pour chaque méthode. Pour plus de détails, reportez-vous à la documentation correspondante.
Prérequis
-
Assurez-vous que l'instance MySQL et l'instance SelectDB peuvent communiquer via le réseau.
L'instance MySQL et l'instance SelectDB se trouvent dans le même VPC. Si ce n'est pas le cas, résolvez d'abord le problème de connectivité réseau. Pour obtenir des instructions, consultez Comment résoudre les problèmes de connectivité réseau entre une instance ApsaraDB for SelectDB et une source de données ?
Ajoutez l'adresse IP de l'instance MySQL à la liste d'autorisation d'adresses IP de SelectDB. Pour plus d'informations, consultez Configurer une liste d'autorisation d'adresses IP.
-
Si votre instance MySQL dispose d'une liste d'autorisation d'adresses IP, ajoutez le bloc CIDR IP du VPC de l'instance SelectDB à la liste d'autorisation d'adresses IP de MySQL.
Pour obtenir la plage d'adresses IP du VPC où réside votre instance SelectDB, consultez Comment trouver le bloc CIDR IP du VPC où se trouve mon instance ApsaraDB for SelectDB ?
Pour obtenir l'adresse IP publique de votre instance SelectDB, utilisez la commande
pingsur son endpoint public SelectDB.
Migrer des données avec DTS
DTS prend en charge la migration des données historiques et la synchronisation incrémentielle des données de MySQL vers ApsaraDB for SelectDB. Il offre des fonctionnalités telles que la migration de bases de données et de tables, la synchronisation DDL et la vérification des données. L'exemple suivant utilise une instance ApsaraDB RDS for MySQL. Pour plus d'informations, consultez Utiliser DTS pour importer des données.
Procédure
Connectez-vous à la console ApsaraDB for SelectDB.
Dans le coin supérieur gauche, sélectionnez la région où se trouve votre instance.
Sur la page Instances, cliquez sur l'ID d'instance cible Instance ID pour accéder à la page Instance Details.
-
Dans le volet de navigation de gauche, cliquez sur Data Pipeline, puis sélectionnez l'onglet Data Synchronization.
RemarqueLa synchronisation des données DTS combine la migration des données historiques pour les transferts ponctuels avec la synchronisation incrémentielle des données pour les mises à jour en temps réel.
Cliquez sur Create Synchronization Task et configurez les bases de données source et de destination.
Une fois la configuration terminée, cliquez sur Test Connection and Proceed en bas de la page.
Configurez les objets de la tâche et les paramètres avancés.
Si vous sélectionnez des objets au niveau de la base de données, DTS ne synchronise pas les données des tables créées après le démarrage de la tâche. Si vous prévoyez d'ajouter des tables pendant la synchronisation, sélectionnez les objets au niveau de la table. Vous pourrez modifier ultérieurement la sélection en utilisant Modify Synchronized Objects.
Si vous sélectionnez des objets au niveau de la table et que vous devez les modifier, par exemple en mappant les noms de tables ou de colonnes, une seule tâche de synchronisation prend en charge un maximum de 1 000 tables. Si cette limite est dépassée, une erreur est signalée lors de la soumission de la tâche. Dans ce cas, divisez les tables à synchroniser par lots et configurez plusieurs tâches, ou configurez une tâche de synchronisation au niveau de la base de données.
-
Pour renommer un seul objet de synchronisation dans l'instance de destination, faites un clic droit sur l'objet dans la zone Selected Objects. Pour plus d'informations sur le renommage des objets, consultez Mapper une seule base de données, table ou colonne.
-
Pour modifier les noms de plusieurs objets de synchronisation dans l'instance de destination par lot, cliquez sur Batch Edit dans le coin supérieur droit de la zone Selected Objects. Pour plus d'informations, consultez Mapper des bases de données, tables et colonnes par lot.
Pour sélectionner les opérations SQL à synchroniser au niveau de la base de données ou de la table, faites un clic droit sur l'objet à synchroniser dans la zone Selected Objects, puis sélectionnez les opérations SQL souhaitées dans la boîte de dialogue qui s'affiche. Pour la liste des opérations prises en charge, consultez Opérations SQL prenant en charge la synchronisation incrémentielle.
Pour filtrer les données à l'aide d'une clause WHERE, faites un clic droit sur la table à synchroniser dans la zone Selected Objects, puis définissez la condition de filtre dans la boîte de dialogue qui s'affiche. Pour plus d'informations, consultez Définir des conditions de filtre.
Si vous utilisez la fonctionnalité de mappage de noms d'objets, d'autres objets dépendant de l'objet remappé peuvent ne pas être synchronisés.
Facultatif : Une fois les configurations précédentes terminées, cliquez sur Next: Configure Database and Table Fields pour définir la Primary Key Column, la Distribution Key et le Engine pour les tables de destination.
Cette étape est disponible uniquement lorsque vous sélectionnez Synchronization Types pour Schema Synchronization lors de la configuration des objets de la tâche. Vous pouvez définir Definition Status sur All puis modifier les paramètres.
Vous pouvez sélectionner plusieurs colonnes pour former une Primary Key Column composite, et vous devez sélectionner une ou plusieurs colonnes de la Primary Key Column comme Distribution Key. Pour le Engine, seul Unique est pris en charge.
Enregistrez la tâche et exécutez une pré-vérification. Une fois que le Precheck Success Rate atteint 100 %, cliquez sur Next: Purchase.
Sur la page Purchase, sélectionnez la méthode de facturation et les spécifications de lien pour l'instance de synchronisation des données. Lisez et acceptez les Data Transmission Service (Pay-As-You-Go) Service Terms. Cliquez sur Purchase and Start pour démarrer la tâche de synchronisation. Vous pouvez afficher la progression de la tâche sur la page de synchronisation des données.
Catégorie | Configuration | Description |
Informations sur la tâche | Task Name | DTS génère automatiquement un nom de tâche. Nous vous recommandons de spécifier un nom descriptif pour faciliter l'identification. Le nom n'a pas besoin d'être unique. |
Base de données source | Database Type | Sélectionnez MySQL. |
Access Method | Sélectionnez Alibaba Cloud Instance. | |
Instance Region | Sélectionnez la région où se trouve l'instance ApsaraDB RDS for MySQL source. | |
RDS Instance ID | Sélectionnez l'ID de l'instance ApsaraDB RDS for MySQL source. Exemple : rm-2z3m****. | |
Database Account | Saisissez le compte de base de données de l'instance ApsaraDB RDS for MySQL source. Pour connaître les autorisations requises, consultez Autorisations requises pour les comptes de base de données. | |
Database Password | Saisissez le mot de passe correspondant au compte de base de données. | |
Encryption | Sélectionnez Non-encrypted ou SSL-encrypted selon vos besoins. Si vous sélectionnez SSL-encrypted, vous devez activer le chiffrement SSL pour l'instance RDS for MySQL au préalable. Pour plus d'informations, consultez Utiliser un certificat cloud pour activer rapidement le chiffrement SSL. | |
Base de données de destination | Database Type | Sélectionnez SelectDB. |
Access Method | Sélectionnez Alibaba Cloud Instance. | |
Instance Region | Sélectionnez la région où réside l'instance SelectDB de destination. | |
Instance ID | Sélectionnez l'ID de l'instance SelectDB de destination. | |
Database Account | Saisissez le compte de base de données de l'instance SelectDB de destination. Pour connaître les autorisations requises, consultez Autorisations requises pour les comptes de base de données. | |
Database Password | Saisissez le mot de passe correspondant au compte de base de données. |
Configuration | Description |
Synchronization Types | Incremental Data Synchronization est sélectionné. Par défaut, vous devez également sélectionner Schema Synchronization et Full Data Synchronization. Une fois la pré-vérification terminée, DTS effectue une synchronisation complète des données des objets sélectionnés depuis l'instance source vers le cluster de destination. Cela sert de données de référence pour la synchronisation incrémentielle ultérieure des données. Important Les types de données sont convertis lors de la synchronisation des données de MySQL vers SelectDB. Si vous ne sélectionnez pas Schema Synchronization, vous devez d'abord créer une table avec un schéma correspondant utilisant le modèle Unique Key dans l'instance SelectDB de destination. Pour plus d'informations, consultez Mappages de types de données et Modèle de données. |
Source Objects | Dans la zone Source Objects, cliquez sur les objets que vous souhaitez synchroniser, puis cliquez sur Important |
Selected Objects | Remarque |
Migrer des données avec DataWorks
Data Integration de DataWorks peut synchroniser des données de MySQL vers ApsaraDB for SelectDB. Pour plus d'informations, consultez Importer des données à l'aide de DataWorks.
L'écriture dans des champs de type de données BITMAP, HLL (HyperLogLog) ou QUANTILE_STATE n'est pas prise en charge.
Ajouter des sources de données
Lors du développement d'une tâche de synchronisation de données, créez une source de données MySQL et une source de données SelectDB dans DataWorks.
Créez une source de données MySQL. Pour plus d'informations, consultez Source de données MySQL.
-
Créez une source de données SelectDB. Pour plus d'informations, consultez Gestion des sources de données. Le tableau suivant décrit certains des paramètres de configuration pour la source de données SelectDB.
Paramètre
Description
Data Source Name
Le nom de la source de données.
MySQL Connection URL
Saisissez la chaîne de connexion JDBC
jdbc:mysql://<ip>:<port>/<dbname>.Vous pouvez obtenir le VPC Endpoint (ou Public Endpoint) et le MySQL Port depuis la page Instance Details > Network Information dans la console ApsaraDB for SelectDB.
Exemple :
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_dbHTTP Connection URL
Saisissez l'endpoint du protocole HTTP au format
<ip>:<port>.Vous pouvez obtenir le VPC Endpoint (ou Public Endpoint) et le HTTP Port depuis la page Instance Details > Network Information dans la console ApsaraDB for SelectDB.
Exemple :
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080Username
Saisissez le nom d'utilisateur pour l'instance ApsaraDB for SelectDB.
Password
Saisissez le mot de passe pour l'utilisateur spécifié de l'instance ApsaraDB for SelectDB.
Configurer la synchronisation des données
Pour configurer une tâche de migration de données, consultez les documents suivants :
Migrer des données avec Flink CDC
Flink propose trois méthodes pour migrer des données de MySQL vers SelectDB : Flink SQL, Flink CDC et DataStream. Flink CDC prend en charge la migration des données historiques, la synchronisation incrémentielle des données, la migration de bases de données et de tables, ainsi que la synchronisation DDL. L'exemple suivant utilise Flink CDC pour synchroniser des données de MySQL vers ApsaraDB for SelectDB. Pour plus d'informations, consultez Utiliser Flink pour importer des données.
Procédure
Préparer l'environnement
Configurez un environnement Flink. Cet exemple utilise un environnement autonome Flink 1.16.
-
Téléchargez et décompressez flink-1.16.3-bin-scala_2.12.tgz. Si cette version n'est pas disponible, téléchargez une autre version. Pour plus de versions, consultez Apache Flink.
wget https://archive.apache.org/dist/flink/flink-1.16.3/flink-1.16.3-bin-scala_2.12.tgz tar -zxvf flink-1.16.3-bin-scala_2.12.tgz -
Accédez au répertoire FLINK_HOME/lib et téléchargez flink-sql-connector-mysql-cdc-2.4.2 et flink-doris-connector-1.16-1.5.2.
cd flink-1.16.3 cd lib/ wget https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/2.4.2/flink-sql-connector-mysql-cdc-2.4.2.jar wget https://repo.maven.apache.org/maven2/org/apache/doris/flink-doris-connector-1.16/1.5.2/flink-doris-connector-1.16-1.5.2.jar -
Démarrez le cluster Flink Standalone.
bin/start-cluster.sh Créez une instance ApsaraDB for SelectDB. Pour plus d'informations, consultez Créer une instance.
Connectez-vous à l'instance ApsaraDB for SelectDB via le protocole MySQL. Pour plus d'informations, consultez Se connecter à une instance.
-
Créez une base de données de test et une table de test.
-
Créez une base de données de test.
CREATE DATABASE test_db; -
Créez une table de test.
USE test_db; CREATE TABLE employees ( emp_no int NOT NULL, birth_date date, first_name varchar(20), last_name varchar(20), gender char(2), hire_date date ) UNIQUE KEY(`emp_no`) DISTRIBUTED BY HASH(`emp_no`) BUCKETS 1;
-
Soumettre une tâche Flink CDC
Utilisez la syntaxe suivante pour soumettre une tâche Flink CDC :
<FLINK_HOME>/bin/flink run \
-Dexecution.checkpointing.interval=10s \
-Dparallelism.default=1 \
-c org.apache.doris.flink.tools.cdc.CdcTools \
lib/flink-doris-connector-1.16-1.5.2.jar \
mysql-sync-database \
--database test_db \
--including-tables "tbl1|test.*" \
--mysql-conf hostname=127.0.0.1 \
--mysql-conf username=root \
--mysql-conf password=123456 \
--mysql-conf database-name=mysql_db \
--sink-conf fenodes=selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080 \
--sink-conf username=admin \
--sink-conf password=****
|
Paramètre |
Description |
||
|
execution.checkpointing.interval |
L'intervalle de point de contrôle Flink, qui affecte la fréquence de synchronisation des données. Une valeur de 10 s est recommandée. |
||
|
parallelism.default |
Le parallélisme de la tâche Flink. Vous pouvez augmenter le parallélisme pour améliorer le débit de synchronisation des données. |
||
|
database |
Le nom de la base de données de destination dans SelectDB. |
||
|
including-tables |
Les tables MySQL à synchroniser. Vous pouvez utiliser une barre verticale ( |
) pour séparer plusieurs tables. Les expressions régulières sont prises en charge. Par exemple, |
tbl.*` spécifie que table1 et toutes les tables dont les noms commencent par tbl sont synchronisées. |
|
excluding-tables |
Les tables que vous ne souhaitez pas synchroniser. La méthode de configuration est la même que celle du paramètre including-tables. |
||
|
mysql-conf |
La configuration de la source MySQL CDC. Pour plus d'informations, consultez Connecteur MySQL CDC. Les paramètres |
||
|
sink-conf |
Toutes les configurations pour le puits Doris. Pour plus d'informations, consultez Utiliser Flink pour importer des données. |
||
|
table-conf |
Les éléments de configuration pour une table SelectDB. Ils correspondent au contenu de la clause PROPERTIES d'une instruction CREATE TABLE. |
Pour synchroniser les données, ajoutez les dépendances Flink CDC requises, telles que flink-sql-connector-mysql-cdc-${version}.jar et flink-sql-connector-oracle-cdc-${version}.jar, au répertoire $FLINK_HOME/lib.
La synchronisation au niveau de la base de données nécessite Flink 1.15 ou une version ultérieure. Pour les téléchargements de Flink Doris Connector, consultez Flink Doris Connector.
Migrer des données avec un catalogue
La fonctionnalité de catalogue dans SelectDB utilise des requêtes fédérées pour accéder à MySQL, simplifiant ainsi la migration des données historiques. L'exemple suivant synchronise des données d'une base de données MySQL vers ApsaraDB for SelectDB. Pour plus d'informations, consultez Source de données JDBC.
Procédure
-
Connectez-vous à l'instance SelectDB. Pour plus d'informations, consultez Se connecter à une instance.
RemarqueL'instruction
SWITCHne fonctionne pas lorsque vous vous connectez via DMS. Nous vous recommandons de vous connecter avec un client MySQL. -
Créez un catalogue MySQL JDBC.
CREATE CATALOG jdbc_mysql PROPERTIES ( "type"="jdbc", "user"="root", "password"="123456", "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", "driver_url" = "mysql-connector-java-8.0.25.jar", "driver_class" = "com.mysql.cj.jdbc.Driver", "checksum" = "fdf55dcef04b09f2eaf42b75e61ccc9a" )Description des paramètres
Paramètre
Requis
Par défaut
Description
user
Oui
Aucun
Le compte de base de données.
password
Oui
Aucun
Le mot de passe du compte de base de données.
jdbc_url
Oui
Aucun
La chaîne de connexion JDBC.
driver_url
Oui
Aucun
Le nom de fichier du package JAR du pilote JDBC.
driver_class
Oui
Aucun
Le nom de classe du pilote JDBC.
lower_case_table_names
Non
"false"
Spécifie s'il faut synchroniser les noms de bases de données et de tables de la source de données JDBC externe en minuscules.
only_specified_database
Non
"false"
Spécifie s'il faut synchroniser uniquement les bases de données spécifiées.
include_database_list
Non
""
Lorsque
only_specified_database=true, spécifie une liste de bases de données séparées par des virgules à synchroniser. Les noms de bases de données sont sensibles à la casse.exclude_database_list
Non
""
Lorsque
only_specified_database=true, spécifie une liste de bases de données séparées par des virgules à exclure de la synchronisation. Les noms de bases de données sont sensibles à la casse.Créez la table de destination dans SelectDB, puis utilisez l'instruction
INSERT INTO ... SELECTpour synchroniser les données. Pour plus d'informations surINSERT INTO, consultez INSERT INTO.
# Create the destination table. CREATE TABLE selectdb_table ... # Migrate data. INSERT INTO selectdb_table SELECT * FROM mysql_catalog.mysql_database.mysql_table;
pour déplacer les objets vers la zone Selected Objects. Vous pouvez sélectionner des objets au niveau de la base de données, de la table ou de la colonne.