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

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

Self-managed ClickHouseの移行

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

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

ClickHouseは、MySQLPostgreSQLMongoDB、およびSQLiteのための統合エンジンとテーブル関数(その場で統合エンジンを作成します)を提供しています。他の一般的なデータベースシステムについては、システムのベンダーからJDBCドライバーまたはODBCドライバーが提供されています。

clickhouse-localとは何か?

Self-managed ClickHouseの移行

通常、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
重要

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

ClickHouse CloudサービスのIPアクセスリストにリモートシステムを追加する

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

IP アクセスリストの管理

ClickHouse Cloud のサービスリストから作業するサービスを選択し、設定に切り替えます。IP アクセスリストに、接続する必要があるリモートシステムの IP アドレスまたはアドレス範囲が含まれていない場合は、IP を追加することで問題を解決できます:

サービスが IP アクセスリスト内のあなたの IP アドレスからのトラフィックを許可しているかどうかを確認します

接続する必要がある個々の IP アドレス、またはアドレス範囲を追加します。必要に応じてフォームを変更し、次に 保存します。

現在の IP アドレスを ClickHouse Cloud の IP アクセスリストに追加します

例1: MySQLからClickHouse Cloudへの移行 - 統合エンジンを使用

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

Self-managed ClickHouseの移行

ClickHouse Cloudサービス上の宛先:

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

CREATE DATABASE db

MySQLテーブルに相当するスキーマを持つ宛先テーブルを作成する:

CREATE TABLE db.table ...
注記

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');"
注記

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

例2: MySQLからClickHouse Cloudへの移行 - JDBCブリッジを使用

JDBC統合テーブルエンジンjdbcテーブル関数によってその場で作成されます)とClickHouse JDBCブリッジ、およびMySQL JDBCドライバーを使用して、ソースのMySQLデータベースからデータを読み取り、ClickHouse Cloudサービスの宛先テーブルへのデータ書き込みにはremoteSecureテーブル関数を使用します。

Self-managed ClickHouseの移行

ClickHouse Cloudサービス上の宛先:

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

CREATE DATABASE db