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

clickhouse-local
(clickhouse-local
)をETLツールとして使用して、現在のデータベースシステムからClickHouse Cloudにデータを移行できます。これは、現在のデータベースシステムに、ClickHouse提供の統合エンジンまたはテーブル関数が存在する場合、またはベンダー提供のJDBCドライバーやODBCドライバーが利用可能な場合に限ります。
この移行方法は「ピボット」メソッドと呼ばれることがあります。これは、データをソースデータベースから宛先データベースに移動するための中間のピボットポイントまたはホップを使用するためです。例えば、この方法は、セキュリティ要件により、プライベートまたは内部ネットワーク内からのアウトバウンド接続のみが許可されている場合に必要とされることがあります。したがって、clickhouse-localを使用してソースデータベースからデータを取得し、clickhouse-localがピボットポイントとなって宛先ClickHouseデータベースにデータをプッシュする必要があります。
ClickHouseは、MySQL、PostgreSQL、MongoDB、およびSQLiteのために、統合エンジンおよびテーブル関数(その場で統合エンジンを作成)を提供しています。その他の一般的なデータベースシステムには、ベンダーからのJDBCドライバーまたはODBCドライバーが提供されています。
clickhouse-localとは?

通常、ClickHouseはクラスターの形で実行され、複数のインスタンスのClickHouseデータベースエンジンが異なるサーバー上で分散的に実行されます。
単一のサーバー上では、ClickHouseデータベースエンジンはclickhouse-server
プログラムの一部として実行されます。データベースアクセス(パス、ユーザー、セキュリティなど)は、サーバー設定ファイルで構成されます。
clickhouse-local
ツールは、ClickHouseデータベースエンジンをコマンドラインユーティリティの形で使用し、迅速なSQLデータ処理を多数の入力および出力のために提供します。ClickHouseサーバーを構成して起動する必要はありません。
clickhouse-localのインストール
clickhouse-local
用のホストマシンが必要で、現在のソースデータベースシステムとClickHouse Cloudのターゲットサービスの両方にネットワークアクセスが必要です。
そのホストマシンに、コンピュータのオペレーティングシステムに基づいて適切なclickhouse-local
のビルドをダウンロードしてください:
- Linux
- macOS
clickhouse-local
をローカルにダウンロードする最も簡単な方法は、次のコマンドを実行することです:
clickhouse-local
を実行します(バージョンが表示されるだけです):
clickhouse-local
をローカルにダウンロードする最も簡単な方法は、次のコマンドを実行することです:
clickhouse-local
を実行します(バージョンが表示されるだけです):
このガイドの例は、clickhouse-local
を実行するためのLinuxコマンド(./clickhouse-local
)を使用しています。
Macでclickhouse-local
を実行するには、./clickhouse local
を使用してください。
remoteSecure
関数がClickHouse Cloudサービスに接続するためには、リモートシステムのIPアドレスがIPアクセスリストによって許可される必要があります。詳細についてはこのヒントの下にあるIPアクセスリストの管理を展開してください。
IP アクセスリストの管理
ClickHouse Cloud サービスのリストから作業するサービスを選択し、設定に切り替えます。IP アクセスリストに、ClickHouse Cloud サービスに接続する必要のあるリモートシステムの IP アドレスまたは範囲が含まれていない場合、IP の追加で問題を解決できます:

接続する必要がある個々の IP アドレス、またはアドレスの範囲を追加します。フォームを適宜修正して、保存します。

例1: MySQLからClickHouse Cloudへの統合エンジンを使用した移行
ソースのMySQLデータベースからデータを読み取るために、統合テーブルエンジン(mysqlテーブル関数によってその場で作成される)を使用し、データをClickHouse Cloudサービスの宛先テーブルに書き込むためにremoteSecureテーブル関数を使用します。

ClickHouse Cloudサービスの宛先で:
宛先データベースを作成:
MySQLテーブルに相当するスキーマを持つ宛先テーブルを作成:
ClickHouse Cloudの宛先テーブルのスキーマとソースMySQLテーブルのスキーマは一致している必要があります(カラム名と順序が同じで、カラムデータ型が互換性がある必要があります)。
clickhouse-localホストマシンで:
移行クエリでclickhouse-localを実行:
データはclickhouse-local
ホストマシンにローカルに保存されません。代わりに、データはソースMySQLテーブルから読み取られ、直接ClickHouse Cloudサービスの宛先テーブルに書き込まれます。
例2: MySQLからClickHouse CloudへのJDBCブリッジを使用した移行
ソースMySQLデータベースからデータを読み取るために、JDBC統合テーブルエンジン(jdbcテーブル関数によってその場で作成される)とClickHouse JDBCブリッジ、およびMySQL JDBCドライバーを使用し、データをClickHouse Cloudサービスの宛先テーブルに書き込むためにremoteSecureテーブル関数を使用します。

ClickHouse Cloudサービスの宛先で:
宛先データベースを作成:
MySQLテーブルに相当するスキーマを持つ宛先テーブルを作成:
ClickHouse Cloudの宛先テーブルのスキーマとソースMySQLテーブルのスキーマは一致している必要があります。例えば、カラム名と順序が同じで、カラムデータ型が互換性がある必要があります。
clickhouse-localホストマシンで:
ローカルでClickHouse JDBCブリッジをインストール、構成、および起動:
ガイドの手順に従ってください。このガイドにはMySQLからのデータソースの構成手順も含まれています。
移行クエリでclickhouse-localを実行:
データはclickhouse-local
ホストマシンにローカルに保存されません。代わりに、データはMySQLソーステーブルから読み取られ、直接ClickHouse Cloudサービスの宛先テーブルに書き込まれます。