ClickHouseへの移行方法:clickhouse-localを使用する

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

通常、ClickHouseはクラスターの形式で実行され、複数のインスタンスが異なるサーバーで分散して実行されます。
単一サーバーでは、ClickHouseデータベースエンジンはclickhouse-server
プログラムの一部として実行されます。データベースへのアクセス(パス、ユーザー、セキュリティなど)は、サーバー設定ファイルで設定されます。
clickhouse-local
ツールを使用すると、ClickHouseデータベースエンジンをコマンドラインユーティリティとして孤立させ、設定やクリックハウスサーバーを起動せずに迅速なSQLデータ処理を実行できます。
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 BridgeおよびMySQL JDBCドライバを用いて、データをClickHouse Cloudサービスのデスティネーションテーブルに書き込むためにremoteSecureテーブル関数を使用します。
