Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:Importer des données depuis ApsaraDB RDS for MySQL

Dernière mise à jour :Aug 11, 2026

Pour analyser vos données opérationnelles en temps réel, la fonction de table mysql() vous permet d'extraire directement les données d'ApsaraDB RDS for MySQL vers ApsaraDB for ClickHouse via une seule instruction SQL. Ce guide décrit l'intégralité du processus : préparation des tables source et destination, exécution de la requête de migration et vérification des résultats.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster ApsaraDB for ClickHouse. Si vous n'en avez pas encore créé, consultez la rubrique Créer un cluster.

  • Un compte de base de données privilégié pour le cluster ClickHouse. Pour plus d'informations, reportez-vous à la section Créer un compte.

  • L'instance ApsaraDB RDS for MySQL et le cluster ApsaraDB for ClickHouse doivent se trouver dans la même région et le même réseau privé virtuel (VPC).

  • L'adresse IP du cluster ClickHouse doit figurer dans la liste blanche de l'instance RDS MySQL, et l'adresse IP de l'instance RDS MySQL doit figurer dans la liste blanche du cluster ClickHouse.

Remarque

Exécutez la commande SELECT * FROM system.clusters; dans ClickHouse pour obtenir l'adresse IP du cluster. Pour configurer les listes blanches, consultez les rubriques Configurer une liste blanche d'adresses IP (ClickHouse) et Configurer la liste blanche d'adresses IP (RDS MySQL). En cas d'échec de la connexion, reportez-vous à la FAQ.

Étape 1 : Configurer la table source dans ApsaraDB RDS for MySQL

Remarque

Ignorez cette étape si votre instance RDS MySQL contient déjà les données à migrer.

  1. Connectez-vous à l'instance ApsaraDB RDS for MySQL via Data Management (DMS). Pour plus d'informations, consultez la page Utiliser DMS pour se connecter à une instance ApsaraDB RDS for MySQL.

  2. Créez une base de données :

    CREATE DATABASE testdb;
  3. Créez la table source :

    CREATE TABLE testdb.mysql_test_table (
      v1 Int NOT NULL,
      v2 Int DEFAULT NULL,
      v3 Float DEFAULT NULL
    ) ENGINE=InnoDB;
  4. Insérez des exemples de données :

    INSERT INTO testdb.mysql_test_table VALUES (4,4,4.0),(1,1,2.0),(1,1,0.0),(4,1,2.0),(7,1,3.0);

Étape 2 : Créer une table dans ApsaraDB for ClickHouse

  1. Connectez-vous au cluster ApsaraDB for ClickHouse via DMS. Consultez la rubrique Se connecter à un cluster ClickHouse via DMS.

  2. Créez une table locale :

    Remarque

    Faites correspondre chaque type de colonne MySQL au type ClickHouse équivalent. Les colonnes définies sans la contrainte NOT NULL dans MySQL deviennent Nullable dans ClickHouse. Pour consulter la correspondance complète, reportez-vous à la section Correspondances des types de données.

    CREATE TABLE default.clickhouse_test_table ON CLUSTER default (
      v1 Int32,
      v2 Nullable(Int32),
      v3 Nullable(Float32)
    ) ENGINE = MergeTree ORDER BY v1;
  3. (Facultatif) Créez une table distribuée pour les clusters multi-nœuds :

    CREATE TABLE clickhouse_test_table_distributed ON CLUSTER default
      AS clickhouse_test_table
    ENGINE = Distributed(default, default, clickhouse_test_table, rand());

    Les tables distribuées répartissent les données sur tous les nœuds du cluster, ce qui permet des lectures et des écritures parallèles pour un débit et une disponibilité accrus. Nous recommandons de créer une table distribuée pour les clusters multi-nœuds.

Étape 3 : Importer les données depuis ApsaraDB RDS for MySQL

Connectez-vous au cluster ApsaraDB for ClickHouse via DMS, puis exécutez une instruction INSERT INTO ... SELECT utilisant la fonction de table mysql() :

INSERT INTO <clickhouse_table>
SELECT * FROM mysql('<rds_endpoint>:<port>', '<database>', '<table>', '<user>', '<password>');

Paramètres :

Paramètre Description Exemple
<clickhouse_table> Nom de la table ClickHouse de destination clickhouse_test_table_distributed
<rds_endpoint> Endpoint interne de l'instance RDS MySQL rm-bp16t9h3999xb****.mysql.rds.aliyuncs.com
<port> Port de l'instance RDS MySQL 3306
<database> Nom de la base de données source testdb
<table> Nom de la table source mysql_test_table
<user> Compte de base de données RDS MySQL test
<password> Mot de passe du compte de base de données 123456Aa

Pour obtenir l'endpoint et le port de l'instance RDS MySQL, consultez la rubrique Afficher et gérer les endpoints et ports des instances.

Exemple d'importation complète :

INSERT INTO clickhouse_test_table_distributed
SELECT * FROM mysql('rm-bp16t9h3999xb****.mysql.rds.aliyuncs.com:3306', 'testdb', 'mysql_test_table', 'test', '123456Aa');

Étape 4 : Vérifier les données importées

Interrogez la table de destination pour confirmer l'importation des données :

SELECT * FROM clickhouse_test_table_distributed;

Cliquez sur Execute(F8) dans DMS pour exécuter la requête. Le résultat doit correspondre aux données insérées à l'étape 1.

Remarque

Si vous avez importé les données dans une table locale, remplacez clickhouse_test_table_distributed par clickhouse_test_table dans la requête.

Correspondances des types de données

Lors de la création de la table ClickHouse, utilisez les correspondances de types suivantes. Si les types source et destination ne correspondent pas exactement, ClickHouse tente une conversion automatique des types.

Les colonnes autorisant les valeurs NULL dans MySQL sont mappées vers le type Nullable dans ClickHouse. Les colonnes définies sans la contrainte NOT NULL dans MySQL deviennent Nullable dans la table ClickHouse.

Type ApsaraDB RDS for MySQL / PolarDB for MySQL Type ApsaraDB for ClickHouse
Unsigned tinyint UInt8
Tinyint Int8
Unsigned smallint UInt16
Smallint Int16
Unsigned int, Unsigned mediumint UInt32
Int, Mediumint Int32
Unsigned bigint UInt64
Bigint Int64
Float Float32
Double Float64
Date Date
Datetime, Timestamp DateTime
Binary FixedString
Autres String