ClickHouse/docs/ja/integrations/migration/clickhouse-local-etl.md
2024-11-18 11:58:58 +09:00

9.6 KiB
Raw Blame History

sidebar_label sidebar_position keywords slug
clickhouse-localの使用 20
clickhouse
移行
マイグレーション
データ
etl
elt
clickhouse-local
clickhouse-client
/ja/cloud/migration/clickhouse-local

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock';

import AddARemoteSystem from '@site/docs/ja/_snippets/_add_remote_ip_access_list_detail.md';

clickhouse-localを使用したClickHouseへの移行

<img src={require('./images/ch-local-01.png').default} class="image" alt="セルフマネージド ClickHouse の移行" style={{width: '40%', padding: '30px'}}/>

ClickHouse、より具体的にはclickhouse-localをETLツールとして使用し、現在のデータベースシステムからClickHouse Cloudにデータを移行することができます。これは、現在のデータベースシステムにClickHouseが提供するインテグレーションエンジンまたはテーブル関数があるか、またはベンダーが提供するJDBCドライバまたはODBCドライバが利用可能である限りです。

この移行方法を「ピボット」方式と呼ぶこともあります。中間のピボットポイントまたはハブを使用して、ソースデータベースから宛先データベースにデータを移動するためです。たとえば、この方法は、セキュリティ要件のためにプライベートまたは内部ネットワークからの外向き接続のみが許可されている場合に必要になるかもしれません。そのため、clickhouse-localを使用してソースデータベースからデータを取得し、clickhouse-localがピボットポイントとして機能することで、データを宛先のClickHouseデータベースへプッシュする必要があります。

ClickHouseは、MySQLPostgreSQLMongoDB、そしてSQLiteのインテグレーションエンジンとテーブル関数即座にインテグレーションエンジンを作成するを提供しています。他のすべての一般的なデータベースシステムには、ベンダーから利用可能なJDBCドライバまたはODBCドライバがあります。

clickhouse-localとは

<img src={require('./images/ch-local-02.png').default} class="image" alt="セルフマネージド ClickHouse の移行" style={{width: '100%', padding: '30px'}}/>

通常、ClickHouseはクラスタ形式で実行され、いくつかのClickHouseデータベースエンジンのインスタンスが異なるサーバで分散的に実行されます。

シングルサーバでは、ClickHouseデータベースエンジンはclickhouse-serverプログラムの一部として実行されます。データベースアクセス(パス、ユーザー、セキュリティなど)はサーバー構成ファイルで設定されます。

clickhouse-localツールは、ClickHouseサーバーを設定したり起動したりすることなく、多くの入力と出力に対して超高速SQLデータ処理が可能な、コマンドラインユーティリティの形式でClickHouseデータベースエンジンを使用できるようにします。

clickhouse-localのインストール

clickhouse-localを使用するには、現在のソースデータベースシステムとClickHouse Cloudターゲットサービスの両方にネットワークアクセスできるホストマシンが必要です。

そのホストマシンで、コンピュータのオペレーティングシステムに基づいてclickhouse-localの適切なビルドをダウンロードします:

  1. clickhouse-localをローカルにダウンロードする最も簡単な方法は、次のコマンドを実行することです:
curl https://clickhouse.com/ | sh
  1. clickhouse-localを実行します(バージョンが表示されるだけです):
./clickhouse-local
  1. clickhouse-localをローカルにダウンロードする最も簡単な方法は、次のコマンドを実行することです:
curl https://clickhouse.com/ | sh
  1. clickhouse-localを実行します(バージョンが表示されるだけです):
./clickhouse local

:::info 重要 このガイド全体での例は、clickhouse-localを実行するためにLinuxコマンド./clickhouse-localを使用しています。Macでclickhouse-localを実行する場合は、./clickhouse localを使用してください。 :::

:::tip リモートシステムをClickHouse CloudサービスのIPアクセスリストに追加する remoteSecure関数がClickHouse Cloudサービスに接続するためには、リモートシステムのIPアドレスがIPアクセスリストで許可されている必要があります。このヒントの下にあるManage your IP Access Listを展開して詳細を確認してください。 :::

例1: MySQLからClickHouse Cloudへのインテグレーションエンジンによる移行

ソースのMySQLデータベースからデータを読み取るためにインテグレーションテーブルエンジンmysqlテーブル関数によって即座に作成を使用し、ClickHouseクラウドサービス上の宛先テーブルにデータを書き込むためにremoteSecureテーブル関数を使用します。

<img src={require('./images/ch-local-03.png').default} class="image" alt="セルフマネージド ClickHouse の移行" style={{width: '40%', padding: '30px'}}/>

宛先ClickHouse Cloudサービス上で:

宛先データベースを作成する:

CREATE DATABASE db

MySQLテーブルと等価なスキーマを持つ宛先テーブルを作成する:

CREATE TABLE db.table ...

:::note ClickHouse Cloud宛先テーブルのスキーマとソースMySQLテーブルのスキーマは一致している必要がありますカラム名と順序が同じであり、カラムのデータ型が互換性がある必要があります。 :::

clickhouse-localホストマシンで:

マイグレーションクエリでclickhouse-localを実行する:

./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"

:::note データはclickhouse-localホストマシンにローカルで保存されません。代わりに、データはソースMySQLテーブルから読み取られ、即座にClickHouse Cloudサービス上の宛先テーブルに書き込まれます。 :::

例2: MySQLからClickHouse CloudへのJDBCブリッジによる移行

ソースMySQLデータベースからデータを読み取るためにClickHouse JDBC BridgeおよびMySQL JDBCドライバとともにJDBCインテグレーションテーブルエンジンjdbcテーブル関数によって即座に作成を使用し、ClickHouseクラウドサービス上の宛先テーブルにデータを書き込むためにremoteSecureテーブル関数を使用します。

<img src={require('./images/ch-local-04.png').default} class="image" alt="セルフマネージド ClickHouse の移行" style={{width: '40%', padding: '30px'}}/>

宛先ClickHouse Cloudサービスで:

宛先データベースを作成する:

CREATE DATABASE db

MySQLテーブルと等価なスキーマを持つ宛先テーブルを作成する:

CREATE TABLE db.table ...

:::note ClickHouse Cloud宛先テーブルのスキーマとソースMySQLテーブルのスキーマは一致している必要があります。例えば、カラム名と順序が同じである必要があり、カラムのデータ型は互換性がある必要があります。 :::

clickhouse-localホストマシンで:

ClickHouse JDBC Bridgeをローカルにインストール、設定、開始する:

ガイドでの手順に従ってください。このガイドにはMySQLからのデータソースを設定するための手順も含まれています。

マイグレーションクエリでclickhouse-localを実行する:

./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM jdbc('datasource', 'database', 'table');"

:::note データはclickhouse-localホストマシンにローカルで保存されません。代わりに、データはMySQLソーステーブルから読み取られ、即座にClickHouse Cloudサービス上の宛先テーブルに書き込まれます。 :::