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

セルフマネージド ClickHouse と ClickHouse Cloud の間の移行

セルフマネージド ClickHouse からの移行

このガイドでは、セルフマネージド ClickHouse サーバーから ClickHouse Cloud へ移行する方法、および ClickHouse Cloud サービス間での移行方法を示します。remoteSecure 関数は、リモート ClickHouse サーバーへのアクセスを可能にするために SELECT および INSERT クエリで使用され、移行を INSERT INTO クエリと埋め込みの SELECTを書くことと同じくらい簡単にします。

セルフマネージド ClickHouse から ClickHouse Cloud への移行

セルフマネージド ClickHouse からの移行
注記

ソーステーブルがシャーディングされているかレプリケーションされているかにかかわらず、ClickHouse Cloud では単に宛先テーブルを作成するだけです(このテーブルの Engine パラメータを省略することができ、自動的に ReplicatedMergeTree テーブルになります)、そして ClickHouse Cloud が縦および横のスケーリングを自動で処理します。テーブルのレプリケーションやシャーディングを考える必要はありません。

この例では、セルフマネージド ClickHouse サーバーが ソース であり、ClickHouse Cloud サービスが 宛先 です。

概要

プロセスは以下の通りです:

  1. ソースサービスに読み取り専用ユーザーを追加する
  2. 宛先サービスにソーステーブル構造を複製する
  3. ソースから宛先にデータを取得するか、ソースからデータをプッシュする(ソースのネットワーク可用性による)
  4. 宛先の IP アクセスリストからソースサーバーを削除する(該当する場合)
  5. ソースサービスから読み取り専用ユーザーを削除する

一つのシステムから別のシステムへのテーブルの移行:

この例では、セルフマネージド ClickHouse サーバーから ClickHouse Cloud へ一つのテーブルを移行します。

ソース ClickHouse システムで(現在データをホストしているシステム)

  • ソーステーブル(この例では db.table)を読み取ることができる読み取り専用ユーザーを追加します。
CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;
  • テーブル定義をコピーします。
SELECT create_table_query
FROM system.tables
WHERE database = 'db' AND table = 'table'

宛先 ClickHouse Cloud システムで:

  • 宛先データベースを作成します:
CREATE DATABASE db
  • ソースからの CREATE TABLE ステートメントを使って宛先を作成します。
ヒント

CREATE ステートメントを実行する際に ENGINE を ReplicatedMergeTree に変更します。ClickHouse Cloud は常にテーブルをレプリケートし、正しいパラメータを提供します。ただし、ORDER BYPRIMARY KEYPARTITION BYSAMPLE BYTTL、および SETTINGS 節は保持してください。

CREATE TABLE db.table ...
  • remoteSecure 関数を使用してセルフマネージドソースからデータを取得します。
セルフマネージド ClickHouse からの移行
INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
注記

もしソースシステムが外部ネットワークから利用できない場合は、データをプルするのではなくプッシュすることができます。remoteSecure 関数は、SELECT と INSERT の両方で機能します。次のオプションを参照してください。

  • remoteSecure 関数を使用してデータを ClickHouse Cloud サービスにプッシュします。
セルフマネージド ClickHouse からの移行
リモートシステムを ClickHouse Cloud サービスの IP アクセスリストに追加します

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

IP アクセスリストの管理

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

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

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

現在の IP アドレスを ClickHouse Cloud の IP アクセスリストに追加します
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.table

ClickHouse Cloud サービス間の移行

セルフマネージド ClickHouse からの移行

ClickHouse Cloud サービス間でデータを移行するためのいくつかの例:

  • 復元されたバックアップからデータを移行する
  • 開発サービスからステージングサービスへデータをコピーする(またはステージングから本番環境へ)

この例では、2 つの ClickHouse Cloud サービスがあり、それぞれ ソース宛先 と呼ばれます。データはソースから宛先にプルされます。好きな場合はプッシュすることもできますが、読み取り専用ユーザーを使用するため、プル方式が示されています。

セルフマネージド ClickHouse からの移行

移行にはいくつかのステップがあります:

  1. 1 つの ClickHouse Cloud サービスを ソース として、もう 1 つを 宛先 として特定します
  2. ソースサービスに読み取り専用ユーザーを追加します
  3. 宛先サービスにソーステーブル構造を複製します
  4. 一時的にソースサービスへの IP アクセスを許可します
  5. ソースから宛先にデータをコピーします
  6. 宛先で IP アクセスリストを再設定します
  7. ソースサービスから読み取り専用ユーザーを削除します

ソースサービスに読み取り専用ユーザーを追加する

  • ソーステーブル(この例では db.table)を読み取ることができる読み取り専用ユーザーを追加します。
CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;
  • テーブル定義をコピーします。
select create_table_query
from system.tables
where database = 'db' and table = 'table'

宛先サービスにテーブル構造を複製します

宛先にデータベースがまだ存在しない場合は作成します:

  • 宛先データベースを作成します:
CREATE DATABASE db
  • ソースからの CREATE TABLE ステートメントを使用して宛先を作成します。

    宛先にあるテーブルは、ソースからの select create_table_query... の出力を使用して作成します:

CREATE TABLE db.table ...

ソースサービスへのリモートアクセスを許可する

ソースから宛先へデータをプルするためには、ソースサービスが接続を許可する必要があります。ソースサービスで「IP アクセスリスト」の機能を一時的に無効にします。

ヒント

ソースの ClickHouse Cloud サービスを引き続き使用する場合は、アクセスをどこからでも許可する前に既存の IP アクセスリストを JSON ファイルにエクスポートすると、データ移行後にアクセスリストをインポートできます。

許可リストを変更し、一時的に Anywhere からのアクセスを許可します。詳細については、IP アクセスリスト のドキュメントを参照してください。

ソースから宛先へデータをコピーする

  • remoteSecure 関数を使用してソース ClickHouse Cloud サービスからデータをプルします。 宛先に接続します。宛先 ClickHouse Cloud サービスでこのコマンドを実行します:
INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  • 宛先サービスにデータを確認します。

ソースで IP アクセスリストを再設定します

以前にアクセスリストをエクスポートした場合は、Shareを使用して再インポートできます。そうでない場合は、アクセスリストに再度エントリを追加します。

読み取り専用の exporter ユーザーを削除します

DROP USER exporter
  • サービスの IP アクセスリストを切り替えてアクセスを制限します。