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

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

ソーステーブルがシャーディングされているかレプリケーションされているかにかかわらず、ClickHouse Cloud では単に宛先テーブルを作成するだけです(このテーブルの Engine パラメータを省略することができ、自動的に 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 アクセスリストに、接続する必要があるリモートシステムの IP アドレスまたはアドレス範囲が含まれていない場合は、IP を追加することで問題を解決できます:

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

ClickHouse Cloud サービス間の移行

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

移行にはいくつかのステップがあります:
- 1 つの ClickHouse Cloud サービスを ソース として、もう 1 つを 宛先 として特定します
- ソースサービスに読み取り専用ユーザーを追加します
- 宛先サービスにソーステーブル構造を複製します
- 一時的にソースサービスへの 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 アクセスリストを切り替えてアクセスを制限します。