AnalyticDB for MySQL prend en charge l'importation et l'exportation de données via des tables externes. Cette rubrique explique comment utiliser une table externe dans AnalyticDB for MySQL pour importer les données d'une base de données MySQL auto-gérée hébergée sur une instance ECS vers un cluster AnalyticDB for MySQL Data Warehouse Edition.
Prérequis
Vous disposez d'une instance ECS située dans la même région et le même VPC que votre cluster AnalyticDB for MySQL.
Vous avez installé une base de données MySQL auto-gérée sur l'instance ECS.
Vous avez ajouté une règle entrante au groupe de sécurité de l'instance ECS afin d'autoriser l'accès à la base de données MySQL auto-gérée sur le port 3306. Pour plus d'informations, consultez la section Ajouter une règle de groupe de sécurité.
-
Vous avez créé une base de données et préparé des données de test dans la base de données MySQL auto-gérée.
Dans cet exemple, nous créons une base de données source nommée
test_adbainsi qu'une table source nomméegoodsau sein de cette base. L'instruction suivante permet de créer la table source :CREATE TABLE goods ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (goods_id) ); -
Si le cluster AnalyticDB for MySQL fonctionne en mode élastique, vous devez activer l'option ENI dans la section Network Information de la page Cluster Information.
ImportantL'activation ou la désactivation de l'ENI peut entraîner une interruption des connexions à la base de données pendant environ 2 minutes. Durant cette période, les opérations de lecture et d'écriture sont impossibles. Procédez avec prudence lors de la modification de ce paramètre.
Procédure
Connectez-vous au cluster AnalyticDB for MySQL. Pour plus d'informations, consultez la section Connexion à un cluster.
-
Créez une base de données. Pour plus d'informations, consultez la section Créer une base de données.
Dans cet exemple, nous créons une base de données nommée
adb_demodans le cluster AnalyticDB for MySQL. -
Créez une table externe.
Exécutez la commande suivante pour créer une table externe nommée
goods_external_tabledans la base de données cibleadb_demo.CREATE TABLE IF NOT EXISTS goods_external_table ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) ) ENGINE='mysql' TABLE_PROPERTIES='{ "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb", "tablename":"goods", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';Paramètre
Description
ENGINE='mysql'Spécifie le moteur de stockage de la table externe. Dans cet exemple, il s'agit de MySQL.
TABLE_PROPERTIESLes informations de connexion utilisées par AnalyticDB for MySQL pour accéder à la base de données MySQL auto-gérée.
urlL'Primary Private IP (adresse VPC) de l'instance ECS et le nom de la base de données source. Dans cet exemple, la base de données source est
test_adb. Pour afficher l'adresse IP :-
Connectez-vous à la console ECS et localisez l'instance cible.
-
Sur la page Instance Details, dans la section Network Information, consultez l'Primary Private IP.
Format :
"jdbc:mysql://mysql-vpc-address:3306/ecs-database-name".Exemple :
jdbc:mysql://192.168.128.***:3306/test_adb.tablenameLe nom de la table source dans la base de données MySQL auto-gérée. Dans cet exemple, la table se nomme
goods.usernameLe nom d'utilisateur permettant d'accéder à la base de données source sur l'instance MySQL auto-gérée.
passwordLe mot de passe associé au compte.
charsetLe jeu de caractères de la base de données MySQL. Valeurs possibles :
-
gbk
-
UTF8 (par défaut)
-
utf8mb4
-
-
Créez une table cible.
Exécutez la commande suivante pour créer une table cible nommée
mysql_import_testdans la base de donnéesadb_demo. Cette table servira à stocker les données importées depuis la base de données MySQL auto-gérée.CREATE TABLE IF NOT EXISTS mysql_import_test ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) ) DISTRIBUTED BY HASH(goods_id); -
Importez les données de la base de données MySQL auto-gérée sur l'instance ECS vers le cluster AnalyticDB for MySQL cible.
REPLACE INTO mysql_import_test SELECT * FROM goods_external_table;
Étapes suivantes
Une fois l'importation terminée, connectez-vous à la base de données adb_demo du cluster AnalyticDB for MySQL. Exécutez ensuite l'instruction suivante pour vérifier que les données ont bien été importées de la table source vers la table mysql_import_test :
SELECT * FROM mysql_import_test LIMIT 100;