すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターへのデータの移行

最終更新日:Oct 17, 2024

このトピックでは、セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターにデータを移行し、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する方法について説明します。 remote関数は、SELECTおよびINSERTクエリで使用して、自己管理ClickHouseサーバーへのアクセスを許可できます。 したがって、SELECTクエリが埋め込まれたINSERT INTOクエリを記述することで、テーブルを移行できます。

次の図は、セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターにデータを移行し、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する方法を示しています。

image

セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターへのデータの移行

image.png

説明

ApsaraDB For ClickHouse Enterprise Editionの場合、ソーステーブルがシャードまたはレプリケートされているかどうかに関係なく、宛先テーブルを作成するだけで済みます。 システムはSharedMergeTreeテーブルエンジンを自動的に使用するため、ターゲットテーブルのEngineパラメーターは省略できます。 ApsaraDB for ClickHouse Enterprise Editionは、垂直方向と水平方向の自動スケーリングを実行します。 テーブルを複製してシャードする方法について心配する必要はありません。

この例では、セルフマネージドClickHouseクラスターをソースクラスターと呼び、ApsaraDB for ClickHouse Enterprise Editionクラスターをターゲットクラスターと呼びます。

概要

次のセクションでは、セルフマネージドClickHouseクラスターからApsaraDB for ClickHouse Enterprise Editionクラスターにデータを移行する手順について説明します。

  1. 読み取り専用ユーザーをソースクラスターに追加します。

  2. ソーステーブルスキーマをターゲットクラスターにコピーします。

  3. 外部ネットワーク経由でソースクラスタにアクセスできる場合は、ソースクラスタからターゲットクラスタにデータをプルします。 外部ネットワーク経由で送信元クラスターにアクセスできない場合は、送信元クラスターから送信先クラスターにデータをプッシュします。

  4. (オプション) 送信元クラスターのIPアドレスを送信先クラスターのIPアドレスホワイトリストから削除します。

  5. ソースクラスターから読み取り専用ユーザーを削除します。

手順

  1. ソースクラスターで次の操作を実行します。 ソーステーブルにデータが含まれていることを確認します。

    1. ソーステーブルを読み取ることができる読み取り専用ユーザーを追加します。 この例では、db.tableが使用されます。

      CREATE USER exporter
      IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
      SETTINGS readonly = 1;
      GRANT SELECT ON db.table TO exporter;
    2. ソーステーブルスキーマをコピーします。

      SELECT create_table_query
      FROM system.tables
      WHERE database = 'db' and table = 'table'
  2. 移行先クラスターで次の操作を実行します。

    1. データベースを作成します。

      CREATE DATABASE db
    2. ソースデータテーブルの作成に使用されるCreate tableステートメントを使用して、ターゲットデータテーブルを作成します。

      説明

      CREATE TABLEステートメントを実行するときに、ENGINEパラメーターの値をSharedMergeTreeに変更します。 ただし、ApsaraDB for ClickHouse Enterprise Editionクラスターは常にテーブルを複製し、正しいパラメーターを提供するため、エンジンに他のパラメーターを指定することはできません。 ORDER BYPRIMARY KEYPARTITION BYSAMPLE BYTTL、およびSETTINGS句は、テーブルのスキーマとメタデータを定義します。 これらの句を保持して、ターゲットテーブルがターゲットApsaraDB for ClickHouse Enterprise Editionクラスターで期待どおりに作成されるようにします。

      CREATE TABLE db.table ...
    3. リモート機能を使用して、データをプルまたはプッシュします。

      説明

      ソースClickHouseサーバーが外部ネットワークから利用できない場合は、リモート機能が選択操作と挿入操作で機能するため、データをプルする代わりにデータをプッシュできます。

      • 移行先クラスターでリモート関数を使用して、移行元クラスターの移行元テーブルからデータを取得します。

      image.png

      INSERT INTO db.table SELECT * FROM
      remote('source-hostname:9000', db, table, 'exporter', 'password-here')
      • 送信元クラスターでリモート機能を使用して、送信先クラスターにデータをプッシュします。image.png

        説明

        リモート機能を有効にしてApsaraDB for ClickHouse Enterprise Editionクラスターに接続するには、移行元クラスターのIPアドレスを移行先クラスターのIPアドレスホワイトリストに追加する必要があります。 詳細は、ホワイトリストの構成をご参照ください。

        INSERT INTO FUNCTION
        remote('target-hostname:9000', 'db.table',
        'default', 'PASS') SELECT * FROM db.table

ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する

image.png

次のシナリオでは、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行できます。

  • 復元したバックアップからデータを移行します。

  • 開発サービスからステージングサービスに、またはステージングサービスから本番サービスにデータをコピーします。

この例では、ApsaraDB for ClickHouse Enterprise Editionの2つのクラスターが使用されています。 一方はソースクラスタと呼ばれ、他方は宛先クラスタと呼ばれる。image.png

概要

次のセクションでは、ApsaraDB for ClickHouse Enterprise Editionクラスター間でデータを移行する手順について説明します。

  1. 1つのApsaraDB for ClickHouse Enterprise Editionクラスターをソースクラスターとして、もう1つをターゲットクラスターとして特定します。

  2. 読み取り専用ユーザーをソースクラスターに追加します。

  3. ソーステーブルスキーマをターゲットクラスターにコピーします。

  4. 送信元クラスターのIPアドレスから送信先クラスターへのアクセスを一時的に許可します。

  5. ソースクラスターからターゲットクラスターにデータをコピーします。

  6. 宛先クラスターでIPアクセスリストを再確立します。

  7. ソースクラスターから読み取り専用ユーザーを削除します。

手順

  1. ソースクラスターで次の操作を実行します。

    1. ソーステーブルを読み取ることができる読み取り専用ユーザーを追加します。 この例では、db.tableが使用されます。

      CREATE USER exporter
      IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
      SETTINGS readonly = 1;
      GRANT SELECT ON db.table TO exporter;
    2. ソーステーブルスキーマをコピーします。

      SELECT create_table_query
      FROM system.tables
      WHERE database = 'db' and table = 'table'
  2. ソーステーブルスキーマをターゲットクラスターにコピーします。

    1. データベースを作成します。

      CREATE DATABASE db
    2. ソーステーブルの作成に使用するCreate tableステートメントを使用して、ターゲットデータベースにテーブルを作成します。

      CREATE TABLE db.table ...

    ソースクラスターのSELECT CREATE_TABLE_QUERY... の出力を使用して、宛先テーブルを作成します。

  3. ソースクラスターでのリモート操作を許可します。

    送信元クラスターから送信先クラスターにデータをプルするには、送信元クラスターと送信先クラスターが相互の接続を許可する必要があります。 次の操作を実行します。

    • 送信元クラスターのIPアドレスを送信先クラスターのIPアドレスホワイトリストに追加します。

    • 送信元クラスターのIPアドレスホワイトリストに送信先クラスターのIPアドレスを追加します。

    説明

    SELECT * FROM system.clusters; ステートメントを実行すると、ApsaraDB for ClickHouse Enterprise EditionクラスターのIPアドレスを表示できます。 ホワイトリストを変更する方法の詳細については、「ホワイトリストの設定」をご参照ください。

  4. ソースクラスターからターゲットクラスターにデータをコピーします。

    リモート機能を使用して、ソースクラスターからデータを取得します。 宛先クラスターに接続し、宛先クラスターで次のコマンドを実行してデータを確認します。

    INSERT INTO db.table SELECT * FROM
    remote('source-hostname:9000', db, table, 'exporter', 'password-here')
  5. ソースクラスターのIPアクセスリストを復元します。

    以前にアクセスリストをエクスポートした場合は、共有を使用してアクセスリストを再度インポートできます。 それ以外の場合は、IPアドレスを再度アクセスリストに追加します。

  6. 読み取り専用のエクスポータユーザーを削除します。

    DROP USER exporter
  7. 送信元および送信先クラスターへのアクセスに使用されるIPアドレスを削除します。 詳細は、ホワイトリストの構成をご参照ください。