メインコンテンツまでスキップ
メインコンテンツまでスキップ

ClickHouseとMySQLの統合

このページでは、MySQLテーブルからデータを読み取るための MySQL テーブルエンジンの使用方法について説明します。

注記

ClickHouse Cloudでは、MySQL ClickPipe(現在プライベートプレビュー中)を使用して、MySQLテーブルからClickHouseにデータを簡単に移動できます。

MySQLテーブルエンジンを使用したClickHouseとMySQLの接続

MySQL テーブルエンジンを使用すると、ClickHouseをMySQLに接続できます。SELECTおよびINSERT文は、ClickHouseまたはMySQLテーブルのどちらでも実行できます。この記事では、MySQL テーブルエンジンの基本的な使用方法を示します。

1. MySQLの設定

  1. MySQLにデータベースを作成します:
CREATE DATABASE db1;
  1. テーブルを作成します:
CREATE TABLE db1.table1 (
  id INT,
  column1 VARCHAR(255)
);
  1. サンプル行を挿入します:
INSERT INTO db1.table1
  (id, column1)
VALUES
  (1, 'abc'),
  (2, 'def'),
  (3, 'ghi');
  1. ClickHouseから接続するユーザーを作成します:
CREATE USER 'mysql_clickhouse'@'%' IDENTIFIED BY 'Password123!';
  1. 必要に応じて権限を付与します。(デモ目的で、mysql_clickhouse ユーザーに管理者権限を付与しています。)
GRANT ALL PRIVILEGES ON *.* TO 'mysql_clickhouse'@'%';
注記

ClickHouse Cloudでこの機能を使用している場合は、ClickHouse CloudのIPアドレスがMySQLインスタンスにアクセスできるようにする必要があります。 Egressトラフィックの詳細については、ClickHouseのCloud Endpoints APIを確認してください。

2. ClickHouseでテーブルを定義する

  1. それでは、MySQL テーブルエンジンを使用したClickHouseテーブルを作成しましょう:
CREATE TABLE mysql_table1 (
  id UInt64,
  column1 String
)
ENGINE = MySQL('mysql-host.domain.com','db1','table1','mysql_clickhouse','Password123!')

最小限のパラメータは次の通りです:

parameter説明
hostホスト名またはIPmysql-host.domain.com
databaseMySQLデータベース名db1
tableMySQLテーブル名table1
userMySQLに接続するためのユーザー名mysql_clickhouse
passwordMySQLに接続するためのパスワードPassword123!
注記

パラメータの完全なリストについては、MySQL テーブルエンジンのドキュメントページを参照してください。

3. 統合をテストする

  1. MySQLでサンプル行を挿入します:
INSERT INTO db1.table1
  (id, column1)
VALUES
  (4, 'jkl');
  1. MySQLテーブルの既存の行がClickHouseテーブルに表示され、追加した新しい行も表示されていることに気付きます:
SELECT
    id,
    column1
FROM mysql_table1

4行が表示されるはずです:

Query id: 6d590083-841e-4e95-8715-ef37d3e95197

┌─id─┬─column1─┐
│  1 │ abc     │
│  2 │ def     │
│  3 │ ghi     │
│  4 │ jkl     │
└────┴─────────┘

4 rows in set. Elapsed: 0.044 sec.
  1. ClickHouseテーブルに行を追加してみましょう:
INSERT INTO mysql_table1
  (id, column1)
VALUES
  (5,'mno')
  1. 新しい行がMySQLに表示されることに気付きます:
mysql> select id,column1 from db1.table1;

新しい行が表示されるはずです:

+------+---------+
| id   | column1 |
+------+---------+
|    1 | abc     |
|    2 | def     |
|    3 | ghi     |
|    4 | jkl     |
|    5 | mno     |
+------+---------+
5 rows in set (0.01 sec)

まとめ

MySQL テーブルエンジンは、ClickHouseとMySQLを接続してデータを双方向で交換することを可能にします。詳細については、MySQL テーブルエンジンのドキュメントページを必ず確認してください。