Skip to main content
Edit this page

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

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

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

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

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

ソーステーブルがシャードされているかレプリケートされているかに関係なく、ClickHouse Cloudでは宛先テーブルを作成するだけです(このテーブルに対するエンジンパラメータは省略可能で、自動的にReplicatedMergeTreeテーブルになります)。ClickHouse Cloudは垂直および水平スケーリングを自動的に処理します。レプリケーションやシャードの管理について考える必要はありません。

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

概要

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

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

システム間でのテーブル移行:

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

ソース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文を使用して宛先を作成。
Tip

CREATE文を実行するとき、ENGINEをパラメータなしのReplicatedMergeTreeに変更します。ClickHouse Cloudは常にテーブルをレプリケートし、正しいパラメータを提供します。ただし、ORDER BYPRIMARY KEYPARTITION BYSAMPLE BYTTLSETTINGS句は保持してください。

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

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

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

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

IPアクセスリストを管理する

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

サービスがトラフィックを許可しているか確認

ClickHouse Cloudサービスに接続する必要がある個別のIPアドレス、またはアドレスの範囲を追加します。フォームを適宜修正し、エントリを追加し、エントリを送信します。

現在のIPアドレスを追加

INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.table

ClickHouse Cloudサービス間の移行

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

ClickHouse Cloudサービス間でデータを移行する際の例:

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

この例では、二つのClickHouse Cloudサービスがあり、それらはソース宛先と呼ばれます。データはソースから宛先にプルされます。プッシュすることもできますが、ここでは読み取り専用ユーザーを使用するプルを示します。

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

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

  1. 一つのClickHouse Cloudサービスをソースとして識別し、他方を宛先として識別
  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アクセスリスト」機能を無効にします。

Tip

ソース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アクセスリストをスイッチしてアクセスを制限