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インスタンスに関連データが既にある場合は、この手順をスキップしてください。
DMS (Data Management) を使用してApsaraDB RDS for MySQLインスタンスに接続します。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」をご参照ください。
CREATE DATABASEステートメントを実行して、testdbという名前のデータベースを作成します。
CREATE DATABASE testdb;
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;
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でのテーブルの作成
DMSを使用してApsaraDB for ClickHouseクラスターに接続します。 詳細については、「DMSを使用したApsaraDB For ClickHouseクラスターへの接続」をご参照ください。
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として識別されます。
(オプション)
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クラスターにインポートされたデータの照会
ApsaraDB for ClickHouseクラスターにインポートされたデータを照会します。 次のクエリステートメントを入力し、[実行 (F8)] をクリックして、データがインポートされているかどうかを確認します。
SELECT * FROM clickhouse_test_table_distributed;
説明ローカルテーブルにデータをインポートする場合は、クエリステートメント内の分散テーブル
clickhouse_test_table_distributed
の名前をローカルテーブルclickhouse_test_table
の名前に置き換え、クエリステートメントを実行します。次のクエリ結果が返されます。
データ型マッピング
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 |