セルフマネージド 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 へ 1 つのテーブルを移行します。
ソース 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 サービスがあり、それぞれを ソース および 宛先 と呼びます。データはソースから宛先にプルされます。プッシュも可能ですが、読み取り専用ユーザーを使用しているためプルの方法が示されています。

移行にはいくつかのステップがあります:
- 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 アクセスリストを切り替え、アクセスを制限します。