このトピックでは、ApsaraDB RDS for MySQLからAnalyticDB for MySQLにデータをインポートして、マルチソースデータ統合と複雑なクエリ分析を実装する方法について説明します。 要約されたメトリクスをApsaraDB RDS for MySQLに書き込むこともできます。
前提条件
AnalyticDB for MySQL
Data Lakehouse Editionクラスターが作成されます。ApsaraDB RDS for MySQLインスタンスは、AnalyticDB for MySQLクラスターと同じ仮想プライベートクラウド (VPC) に作成されています。
Elastic Network Interface (ENI) は、AnalyticDB for MySQLコンソールの [クラスター情報] ページの [ネットワーク情報] セクションでオンになっています。
AnalyticDB for MySQLクラスターのVPC CIDRブロックが、ApsaraDB RDS for MySQLインスタンスのIPアドレスホワイトリストに追加されます。 詳細については、「IPアドレスホワイトリストの設定」をご参照ください。
サンプルデータ
この例では、ApsaraDB RDS for MySQLインスタンスのtest_adb
データベースにperson
という名前のテーブルが作成されています。
CREATE TABLE IF NOT EXISTS test_adb.person(
id int,
name varchar(1023),
age int
);
データはperson
テーブルに挿入されます。
INSERT INTO test_adb.person values
(1, 'james', 10),
(2, 'bond', 20),
(3, 'jack', 30),
(4, 'lucy', 40);
手順
SQLエディターに移動します。
AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
[Data Lakehouse Edition] タブで、管理するクラスターを見つけ、クラスターIDをクリックします。左側のナビゲーションウィンドウで、 .
XIHEエンジンと対話型リソースグループを選択します。
次のステートメントを実行して、外部データベースを作成します。
CREATE EXTERNAL DATABASE adb_external_db;
次のステートメントを実行して、外部テーブルを作成します。
説明AnalyticDB for MySQL外部テーブルは、ApsaraDB RDS for MySQLテーブルと同じフィールドの名前、番号、順序、およびデータタイプを持つ必要があります。
AnalyticDB for MySQL外部テーブルの作成に使用されるパラメーターについては、「create external table」をご参照ください。
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.person ( id int, name varchar(1023), age int )ENGINE = 'MYSQL' TABLE_PROPERTIES = '{ "url":"jdbc:mysql://mysql-address:3306/test_adb", "tablename":"person", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';
データの照会
外部テーブルの作成後、AnalyticDB for MySQLクラスターでSELECTステートメントを実行して、ApsaraDB RDS for MySQLインスタンスの
person
テーブルのデータを照会できます。SELECT * FROM adb_external_db.person;
サンプル結果:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+ 4 rows in set (0.35 sec)
次のステートメントを実行して、ApsaraDB RDS for MySQLテーブルにデータを書き込みます。
INSERT INTO adb_external_db.person SELECT 5, 'lily', 20;
次のステートメントを実行して、adb_demoという名前のターゲットデータベースを作成します。
CREATE DATABASE adb_demo;
次のステートメントを実行して、
adb_demo
データベースにmysql_import_test
という名前のターゲットテーブルを作成します。 ターゲットテーブルは、ApsaraDB RDS for MySQLインスタンスからインポートされたデータを格納するために使用されます。CREATE TABLE IF NOT EXISTS mysql_import_test ( id int, name varchar(1023), age int, PRIMARY KEY (id) ) DISTRIBUTED BY HASH(id);
次のステートメントを実行して、ApsaraDB RDS for MySQLインスタンスからAnalyticDB for MySQLクラスターにデータをインポートします。
INSERT INTO mysql_import_test SELECT * FROM adb_external_db.person;
次のステートメントを実行して、AnalyticDB for MySQLクラスターの
mysql_import_test
テーブルのデータを照会します。SELECT * FROM mysql_import_test;
サンプル結果:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 4 | lucy | 40 | | 5 | lily | 20 | | 3 | jack | 30 | +------+-------+------+ 5 rows in set (0.37 sec)