すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:ApsaraDB RDS for MySQLからデータをインポートする

最終更新日:Oct 17, 2024

ApsaraDB RDS for MySQLまたはPolarDB for MySQLからApsaraDB for ClickHouseにデータを移行して、リアルタイム分析を実行できます。 このトピックでは、ApsaraDB RDS for MySQLからApsaraDB for ClickHouseにデータをインポートする方法について説明します。 この例は、データを簡単に移行する方法を学ぶのに役立ちます。

前提条件

  • ターゲットApsaraDB for ClickHouseクラスターが作成されました。

    説明
    • ApsaraDB for ClickHouseクラスターが作成されていない場合は、まずクラスターを作成します。 詳細については、「ApsaraDB For ClickHouseクラスターの作成」をご参照ください。

    • 宛先クラスター用に特権データベースアカウントが作成されます。 詳細については、「アカウントの作成」をご参照ください。

  • ApsaraDB RDS for MySQLインスタンスとターゲットApsaraDB for ClickHouseクラスターは同じリージョンにあり、同じ仮想プライベートクラウド (VPC) を使用しています。 ApsaraDB for ClickHouseクラスターのIPアドレスが、ApsaraDB RDS for MySQLインスタンスのホワイトリストに追加されます。 ApsaraDB RDS for MySQLインスタンスのIPアドレスも、ApsaraDB for ClickHouseクラスターのホワイトリストに追加されます。 それ以外の場合は、まずネットワークの問題を解決します。 詳細については、「」をご参照ください。宛先クラスターとデータソースの間に接続が確立されない場合はどうすればよいですか。 FAQトピックのセクション。

    • ApsaraDB For ClickHouseクラスターのホワイトリストを設定する方法の詳細については、「ホワイトリストの設定」をご参照ください。

    • ApsaraDB RDS For MySQLインスタンスのホワイトリストを設定する方法の詳細については、「IPアドレスホワイトリストの設定」をご参照ください。

      説明

      SELECT * FROM system.clusters; ステートメントを実行して、ApsaraDB for ClickHouseクラスターのIPアドレスを照会できます。

手順1: ApsaraDB RDS for MySQLインスタンスにテーブルを作成し、テーブルにデータを書き込む

説明

このステップは、データベースの作成、テーブルの作成、およびデータの書き込みの操作を含みます。 ApsaraDB RDS for MySQLインスタンスに関連データが既にある場合は、この手順をスキップしてください。

  1. DMS (Data Management) を使用してApsaraDB RDS for MySQLインスタンスに接続します。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」をご参照ください。

  2. CREATE DATABASEステートメントを実行して、testdbという名前のデータベースを作成します。

    CREATE DATABASE testdb;
  3. CREATE TABLEステートメントを実行して、testdbデータベースにmysql_test_tableテーブルを作成します。

    CREATE TABLE testdb.mysql_test_table (
      v1 Int NOT NULL,
      v2 Int DEFAULT NULL,
      v3 Float DEFAULT NULL
    ) ENGINE=InnoDB;
  4. mysql_test_tableテーブルにデータを書き込みます。

    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);

手順2: ApsaraDB for ClickHouseでのテーブルの作成

  1. DMSを使用してApsaraDB for ClickHouseクラスターに接続します。 詳細については、「DMSを使用したApsaraDB For ClickHouseクラスターへの接続」をご参照ください。

  2. CREATE TABLEステートメントを実行して、テーブルを作成します。 次の例では、clickhouse_test_tableテーブルがデフォルトデータベースに作成されています。

    CREATE TABLE default.clickhouse_test_table ON CLUSTER default (
    v1 Int32, 
    v2 Nullable(Int32),
    v3 Nullable(Float32)
    ) ENGINE = MergeTree ORDER BY v1;
    説明
    • ApsaraDB for ClickHouseのテーブルのデータ型は、ApsaraDB RDS for MySQLのテーブルのデータ型にマッピングする必要があります。 マッピングの詳細については、このトピックの「データ型マッピング」をご参照ください。

    • ApsaraDB RDS for MySQLインスタンスでテーブルを作成するために使用するステートメントの列にNOT NULLが指定されていない場合、列の値はNULLになります。 ApsaraDB for ClickHouseでテーブルを作成するために使用するステートメント内の対応する列は、Nullableとして識別されます。

  3. (オプション) clickhouse_test_table_distributedという名前の分散テーブルを作成します。

    説明

    ApsaraDB for ClickHouseクラスターがマルチノードクラスターの場合、分散テーブルを作成することを推奨します。 分散テーブルは、ApsaraDB for ClickHouseクラスター内の各サーバーのストレージおよびコンピューティングリソースを使用して、データの書き込みおよびクエリ操作の効率的な実行を実装します。 分散テーブルは、優れた水平スケーラビリティをサポートするだけでなく、高性能と高可用性を保証します。

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

手順3: ApsaraDB RDS for MySQLインスタンスからデータを読み取り、ApsaraDB for ClickHouseクラスターにデータを書き込む

DMSを使用してApsaraDB for ClickHouseクラスターに接続し、移行ステートメントを実行します。 詳細については、「DMSを使用したApsaraDB For ClickHouseクラスターへの接続」をご参照ください。

構文:

INSERT INTO <Name of the table in ApsaraDB for ClickHouse> select * from mysql('<Endpoint of the ApsaraDB RDS for MySQL instance>:<Port>', '<ApsaraDB RDS for MySQL database name>','<Name of the table in the ApsaraDB RDS for MySQL instance>', '<Database account of ApsaraDB RDS for MySQL>', '<Password of the database account of ApsaraDB RDS for MySQL>')
説明

ApsaraDB RDS For MySQLインスタンスのエンドポイントとポートを取得する方法の詳細については、「インスタンスエンドポイントとポートの表示と管理」をご参照ください。

例:

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

手順4: ApsaraDB for ClickHouseクラスターにインポートされたデータの照会

  1. ApsaraDB for ClickHouseクラスターにインポートされたデータを照会します。 次のクエリステートメントを入力し、[実行 (F8)] をクリックして、データがインポートされているかどうかを確認します。

    SELECT * FROM clickhouse_test_table_distributed;
    説明

    ローカルテーブルにデータをインポートする場合は、クエリステートメント内の分散テーブルclickhouse_test_table_distributedの名前をローカルテーブルclickhouse_test_tableの名前に置き換え、クエリステートメントを実行します。

  2. 次のクエリ結果が返されます。

    image.png

データ型マッピング

ApsaraDB RDS for MySQLまたはPolarDB for MySQLのデータ型

ApsaraDB for ClickHouseのデータ型

符号なしtinyint

UInt8

Tinyint

Int8

署名されていないsmallint

UInt16

Smallint

Int16

Unsigned intおよびUnsigned mediumint

UInt32

IntとMediumint

Int32

署名されていないbigint

UInt64

Bigint

Int64

浮く

Float32

Double

Float64

日付

日付

DatetimeとTimestamp

DateTime

バイナリ

FixedString

その他

String