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

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

ソーステーブルがシャーディングされているかどうかに関わらず、ClickHouse Cloud では宛先テーブルを作成するだけです(このテーブルに対してエンジンパラメータを省略できます。自動的に ReplicatedMergeTree テーブルになります)。ClickHouse Cloud は垂直および水平スケーリングを自動的に処理します。テーブルのレプリケーションやシャーディングについて考える必要はありません。
この例では、セルフマネージドの ClickHouse サーバーが ソース であり、ClickHouse Cloud サービスが 宛先 です。
概要
プロセスは以下の通りです:
- ソースサービスに読み取り専用ユーザーを追加
- 宛先サービスにソーステーブル構造を複製
- ソースから宛先にデータをプルするか、ソースからデータをプッシュする(ソースのネットワーク可用性による)
- 宛先の IP アクセスリストからソースサーバーを削除(該当する場合)
- ソースサービスから読み取り専用ユーザーを削除
一つのシステムから別のシステムへのテーブルの移行
この例では、セルフマネージド ClickHouse サーバーから ClickHouse Cloud への一つのテーブルを移行します。
ソース ClickHouse システム上で
- ソーステーブル(この例では
db.table
)を読み取ることができる読み取り専用ユーザーを追加
- テーブル定義をコピー
宛先 ClickHouse Cloud システム上で
- 宛先データベースを作成:
- ソースからの CREATE TABLE ステートメントを使用して、宛先を作成する。
CREATE ステートメントを実行するときに ENGINE を ReplicatedMergeTree に変更してください。ClickHouse Cloud は常にテーブルをレプリケートし、適切なパラメータを提供します。ただし、ORDER BY
、PRIMARY KEY
、PARTITION BY
、SAMPLE BY
、TTL
および SETTINGS
句は保持してください。
remoteSecure
関数を使用してセルフマネージドソースからデータをプル

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

remoteSecure
関数があなたの ClickHouse Cloud サービスに接続するためには、リモートシステムの IP アドレスが IP アクセスリストによって許可されている必要があります。このヒントの下にある IP アクセスリストの管理 を展開して、詳細情報を確認してください。
IP アクセスリストの管理
ClickHouse Cloud サービスのリストから作業するサービスを選択し、設定に切り替えます。IP アクセスリストに、ClickHouse Cloud サービスに接続する必要のあるリモートシステムの IP アドレスまたは範囲が含まれていない場合、IP の追加で問題を解決できます:

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

ClickHouse Cloud サービス間の移行

ClickHouse Cloud サービス間でデータを移行する例としては以下があります:
- 復元されたバックアップからデータを移行する
- 開発サービスからステージングサービス(またはステージングから本番)にデータをコピーする
この例では、2つの ClickHouse Cloud サービスがあり、ソース と 宛先 と呼ばれます。データはソースから宛先にプルされます。プッシュすることもできますが、読み取り専用ユーザーを使用するためプルする方法が示されています。

移行にはいくつかのステップがあります:
- 一つの ClickHouse Cloud サービスを ソース とし、もう一つを 宛先 とします
- ソースサービスに読み取り専用ユーザーを追加
- 宛先サービスにソーステーブル構造を複製
- ソースサービスへの IP アクセスを一時的に許可
- ソースから宛先にデータをコピー
- 宛先の IP アクセスリストを再設定
- ソースサービスから読み取り専用ユーザーを削除
ソースサービスに読み取り専用ユーザーを追加
-
ソーステーブル(この例では
db.table
)を読み取ることができる読み取り専用ユーザーを追加 -
テーブル定義をコピー
宛先サービスでテーブル構造を複製
宛先にデータベースがない場合は、作成します:
-
宛先データベースを作成:
-
ソースからの CREATE TABLE ステートメントを使用して、宛先を作成。
ソースからの
select create_table_query...
の出力を使用して宛先でテーブルを作成します:
ソースサービスへのリモートアクセスを許可する
ソースから宛先にデータをプルするには、ソースサービスが接続を許可する必要があります。ソースサービスで "IP アクセスリスト" 機能を一時的に無効にします。
ソースの ClickHouse Cloud サービスを引き続き使用する場合は、どこからでもアクセスを許可する前に既存の IP アクセスリストを JSON ファイルにエクスポートしてください。これにより、データが移行された後にアクセスリストをインポートできます。
許可リストを変更し、一時的に Anywhere からのアクセスを許可します。詳細については、IP アクセスリスト ドキュメントを参照してください。
ソースから宛先にデータをコピーする
-
remoteSecure
関数を使用してソース ClickHouse Cloud サービスからデータをプルします 宛先に接続します。宛先 ClickHouse Cloud サービス上でこのコマンドを実行します: -
宛先サービス内のデータを確認する
ソースの IP アクセスリストを再設定する
以前にアクセスリストをエクスポートした場合は、Share を使用して再インポートできます。そうでない場合は、アクセスリストにエントリを再追加します。
読み取り専用 exporter
ユーザーを削除する
- サービスの IP アクセスリストを変更し、アクセスを制限します。