セルフマネージド 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 アクセスリストを切り替えてアクセスを制限します。