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

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

最終更新日:Mar 24, 2026

コンソールまたは手動で、セルフマネージド ClickHouse クラスターから ApsaraDB for ClickHouse Enterprise Edition クラスターへデータを移行する方法について説明します。

前提条件

  • セルフマネージドクラスター:データベースアカウントおよびパスワードが作成済みであること。また、当該アカウントにはデータベースおよびテーブルの読み取り権限とSYSTEM コマンド実行権限が必要です。(外部テーブルを移行する場合、そのアカウントはアカウントパスワードを含むため、displaySecretsInShowAndSelect 権限も必要です)。

  • ターゲットクラスター:「データベースアカウントおよびパスワード」が必要です。このアカウントには「最高権限」が必要です。

  • ネットワーク接続

    • セルフホストクラスターとターゲットクラスターが同一の仮想プライベートクラウド (VPC)内にある場合、ターゲットクラスターのすべてのノードの IP アドレスおよびそのスイッチの IPv4 CIDR ブロックを、セルフホストクラスターの許可リストに追加します。

      • ApsaraDB for ClickHouse の許可リストを設定するには、「許可リストの設定」をご参照ください。

      • セルフホストクラスターの許可リストを設定するには、該当製品のドキュメントをご参照ください。

      • ターゲット ApsaraDB for ClickHouse クラスター内のすべてのノードの IP アドレスを確認するには、以下のクエリを実行します。SELECT * FROM system.clusters WHERE internal_replication = 1;

    • セルフホストクラスターとターゲットクラスターが異なる VPC 内にある場合、またはセルフホストクラスターがオンプレミスまたは他のクラウドプラットフォーム上にある場合は、まずネットワーク接続を確立する必要があります。「ターゲットクラスターとデータソース間のネットワーク接続確立方法」をご参照ください。

      説明

      このシナリオでは、異なる VPC 間の CIDR ブロックの競合を回避するために、IP マッピングを設定することがあります。IP マッピングを設定した場合は、マップされた IP アドレスを両方のクラスターの許可リストにも追加する必要があります。

移行検証

データ移行を開始する前に、ビジネス互換性およびパフォーマンスを検証し、移行が成功することを確認するためのテスト環境を作成してください。検証が完了したら、本番環境でデータ移行を開始します。この重要なステップにより、潜在的な問題を早期に特定・解決でき、スムーズな移行を実現し、本番環境への影響を最小限に抑えることができます。

  1. 移行タスクの作成」を行います。

  2. パフォーマンスボトルネック分析」を実施し、移行の成功を検証します。

  3. 以下のいずれかの方法でクラウド互換性を検証します:

    1. 手動による検証。詳細については、「互換性分析および対応策」をご参照ください。

    2. コンソールによる検証。詳細については、「(任意)SQL 互換性の確認」をご参照ください。

移行手法

移行手法

メリット

デメリット

適用範囲

コンソール移行

ビジュアルインターフェイスを提供し、メタデータの手動移行を不要にします。

クラスター全体に対する完全移行および増分移行のみをサポートします。特定のデータベースやテーブル、または部分的な履歴データの移行はサポートしていません。

クラスター全体の移行に最適です。

手動移行

移行対象のデータベースおよびテーブルを細かく制御できます。

操作が複雑であり、メタデータの手動移行が必要です。

  • 特定のデータベースおよびテーブルの移行。

  • コールドストレージデータが 1 TB を超える単一ノードの移行。

  • ホットデータが 10 TB を超える単一ノードの移行。

  • コンソール移行の要件を満たさない場合のクラスター全体の移行。

操作手順

コンソール移行

考慮事項

移行中の動作

  • 移行対象のデータベースおよびテーブルのマージ処理は、ターゲットクラスター上で一時停止されますが、セルフマネージドクラスターでは継続されます。

    説明

    移行タスクの実行時間が長すぎると、ターゲットクラスターに過剰な量のメタデータが蓄積される可能性があります。そのため、移行タスクの実行時間は5 日以内に収めるよう推奨します。5 日を超えて実行されたタスクは自動的にキャンセルされます。

  • ターゲットクラスターは default クラスターを使用する必要があります。セルフマネージドクラスターで異なるクラスター名を使用している場合、分散テーブルのクラスター定義はシステムによって自動的に default に変換されます。

移行範囲

説明

移行プロセスでは、一部のエンジンのデータベースおよびテーブルスキーマが変換されます。詳細については、以下の表をご参照ください。

  • データベーススキーマ:以下のデータベースエンジンがサポートされています。

    エンジン名

    エンジン変換

    Atomic

    Replicated データベースに置き換えられます

    Replicated

    変更なし

    Ordinary

    Replicated データベースに置き換えられます

  • テーブルスキーマ:以下のテーブルエンジンがサポートされています。

    エンジン名

    エンジン変換

    MaterializedView

    変更なし

    View

    GenerateRandom

    Buffer

    URL

    Null

    Merge

    SharedMergeTree

    SharedVersionedCollapsingMergeTree

    SharedSummingMergeTree

    SharedReplacingMergeTree

    SharedAggregatingMergeTree

    SharedCollapsingMergeTree

    SharedGraphiteMergeTree

    MergeTree

    SharedMergeTree に置き換えられます

    ReplicatedMergeTree

    VersionedCollapsingMergeTree

    SharedVersionedCollapsingMergeTree に置き換えられます

    ReplicatedVersionedCollapsingMergeTree

    SummingMergeTree

    SharedSummingMergeTree に置き換えられます

    ReplicatedSummingMergeTree

    ReplacingMergeTree

    SharedReplacingMergeTree に置き換えられます

    ReplicatedReplacingMergeTree

    AggregatingMergeTree

    SharedAggregatingMergeTree に置き換えられます

    ReplicatedAggregatingMergeTree

    ReplicatedCollapsingMergeTree

    SharedCollapsingMergeTree に置き換えられます

    CollapsingMergeTree

    GraphiteMergeTree

    SharedGraphiteMergeTree に置き換えられます

    ReplicatedGraphiteMergeTree

  • データ:MergeTree ファミリーのテーブルのデータは増分で移行されます。

重要
  • 上記のデータベースおよびテーブルスキーマは自動的に移行されます。それ以外のすべてのデータベースおよびテーブルスキーマは、発生した警告またはエラーに基づいて手動で対応する必要があります。

  • データがこれらの要件を満たさない場合は、手動移行をご利用ください。

クラスターへの影響

  • セルフマネージドクラスター

    • 移行タスクがセルフマネージドクラスターからデータを読み取る際、CPU 使用率およびメモリ使用率が上昇します。

    • DDL 操作は許可されていません。

  • ターゲットクラスター

    • 移行タスクがターゲットクラスターにデータを書き込む際、CPU 使用率およびメモリ使用率が上昇します。

    • 移行対象のデータベースおよびテーブルに対しては DDL 操作が許可されていません。ただし、移行対象外のデータベースおよびテーブルにはこの制限は適用されません。

    • 移行中のデータベースおよびテーブルのマージ処理は停止されますが、それ以外のデータベースおよびテーブルには影響しません。

    • 移行完了後、クラスターは一定期間、頻繁なマージ処理を実行し、I/O 使用率が上昇し、ビジネスリクエストのレイテンシーが増加する可能性があります。リクエストレイテンシーへの潜在的影響を計画するため、移行後のマージ時間の算出を推奨します。

ステップ 1:セルフマネージドクラスターの確認およびシステムテーブルの有効化

増分移行を行う場合、セルフマネージドクラスターの config.xml ファイルを更新し、system.part_log および system.query_log を設定する必要があります。

system.part_log および system.query_log が有効になっていない場合

system.part_logsystem.query_log を有効にしていない場合は、config.xml ファイルに以下の構成を追加してください。

system.part_log
<part_log>
    <database>system</database>
    <table>part_log</table>
    <partition_by>event_date</partition_by>
    <order_by>event_time</order_by>
    <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
</part_log>
system.query_log
<query_log>
    <database>system</database>
    <table>query_log</table>
    <partition_by>event_date</partition_by>
    <order_by>event_time</order_by>
    <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>

system.part_log および system.query_log が有効になっている場合

  1. config.xml ファイル内の system.part_log および system.query_log の構成を、以下の内容と比較します。不整合がある場合は、構成を一致するように変更してください。そうしないと、移行が失敗するか、または遅く進行する可能性があります。

    system.part_log
    <part_log>
        <database>system</database>
        <table>part_log</table>
        <partition_by>event_date</partition_by>
        <order_by>event_time</order_by>
        <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </part_log>
    system.query_log
    <query_log>
        <database>system</database>
        <table>query_log</table>
        <partition_by>event_date</partition_by>
        <order_by>event_time</order_by>
        <ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </query_log>
  2. 設定を修正した後、drop table system.part_log および drop table system.query_log ステートメントを実行します。system.part_log および system.query_log テーブルは、ビジネステーブルにデータを挿入すると自動的に再作成されます。

ステップ 2:ターゲットクラスターの互換性設定

ターゲットクラスターの動作をセルフマネージドクラスターとできる限り互換性のある状態にするために、「ターゲットクラスターへの接続」を行い、compatibility パラメーターを変更して、ターゲットクラスターとセルフマネージドクラスターのバージョン番号を一致させます。

重要

compatibility を以前のバージョンに設定すると、ParallelRepica などの新機能が利用できなくなります。

例:

SELECT currentProfiles(); // ユーザーが使用するプロファイルを取得します。
SELECT
    profile_name,
    setting_name,
    value
FROM system.settings_profile_elements
WHERE (setting_name = 'compatibility') AND (profile_name = 'xxxx'); // compatibility 設定値を照会します。
ALTER PROFILE XXXX SETTINGS compatibility = '23.8'; // プロファイルを変更します。

ステップ 3:移行タスクの作成

  1. ApsaraDB for ClickHouse コンソール にログインします。クラスターリスト ページで、Enterprise Edition インスタンスのリスト を選択し、ターゲットクラスターの ID をクリックします。

  2. 左側のナビゲーションウィンドウで、データの移行と同期 > インスタンスの移行 をクリックします。

  3. 移行タスクの作成 をクリックします。

  4. ソースおよびターゲットインスタンスの選択

    パラメーター

    説明

    タスク名

    移行タスクの名前です。名前には大文字、小文字、数字のみ使用できます。名前は一意である必要があり、大文字と小文字は区別されません。

    MigrationTask1229

    配信元インスタンスクラスター名

    セルフマネージドインスタンスのクラスター名は、SELECT * FROM system.clusters; を実行することで取得できます。

    default

    VPC IP アドレス

    クラスター内の各シャードの IP および PORT アドレスはカンマで区切ります。形式: IP:PORT,IP:PORT,....

    セルフマネージドクラスターの IP アドレスおよびポートを取得するには、以下の SQL ステートメントを使用します:

    SELECT shard_num, replica_num, host_address as ip, port FROM system.clusters WHERE cluster = '<cluster_name>' and replica_num = 1;

    パラメーター:

    • cluster_name:セルフマネージドクラスターの名前。

    • replica_num=1 は最初のレプリカを選択します。他のレプリカセットを選択したり、各シャードから 1 つのレプリカを選択したりすることもできます。

    重要
    • ClickHouse の VPC ドメイン名または SLB アドレスは使用できません。

    • ネットワークアドレス変換 (NAT) を使用する場合は、シャードのパブリック側の IP アドレスおよびポートを指定します。

    192.168.0.5:9000,192.168.0.6:9000

    データベースアカウント

    セルフマネージドクラスターのデータベースアカウントです。

    test

    データベースパスワード

    セルフマネージドクラスターのデータベースアカウントのパスワードです。

    test******

    ソースインスタンスのカーネルバージョン

    バージョン取得 をクリックします。

    22.8.5.29

  5. 取得したソースインスタンスのバージョンに基づき、以下のいずれかの操作を行います:

    • ソースインスタンスのバージョンが 22.10 以降の場合、次のステップ をクリックします。

    • ソースインスタンスのバージョンが 22.10 より前の場合、プロンプトに従って ターゲットインスタンス情報 を入力し、その後 次のステップ をクリックします。

    • バージョンの取得に失敗した場合:取得失敗の原因として、ソースインスタンス情報の誤りやネットワーク接続の問題が考えられます。プロンプトに従って問題を解決し、再度 バージョン取得 をクリックします。

    説明

    コミュニティ版の以前のバージョンと Enterprise Edition の間でパラメーターの互換性がないため、ソースインスタンスのバージョンが 22.10 より前の場合、ソースからターゲットへのデータのプッシュによる同期を行う必要があります。これには、ターゲットクラスターの IP アドレスをセルフマネージドネットワークからルーティング可能にする必要があります。セルフマネージドネットワークと Enterprise Edition インスタンスが同一の VPC 内にある場合、または VPC ピアリング接続で接続されている場合、元の IP アドレスを直接使用できます。

  6. 接続性および構成の確認

    1. 確認の開始 をクリックします。

      確認項目を表示するには、こちらをクリックしてください。

      • 接続性の検証:セルフマネージドインスタンスとターゲットインスタンスの間で完全なネットワーク接続が確保されており、すべてのノード間で相互アクセスが可能であることを確認します。

      • アカウント権限の検証ソースアカウントおよびパスワードが正しく、ソースインスタンスへの接続に使用できることを検証します。

      • ソースインスタンスのシステムテーブルの確認:セルフマネージドインスタンスには、system.query_logsystem.parts、およびsystem.part_log のシステムテーブルが必要です。

      • 構成の確認:セルフマネージドインスタンスとターゲットインスタンスのタイムゾーンが同一であること、およびターゲットインスタンスの compatibility パラメーターがソースバージョンと同一であることを確認します。

    2. 確認中に、右上隅の image アイコンをクリックしてリアルタイムの進行状況を確認できます。

    3. 確認が完了したら、結果に応じて後続の操作を実行します。

      結果レベル および確認項目を選択し、image ボタンをクリックして対応する確認結果を表示できます。結果の説明は以下のとおりです。

      • 成功:すべての確認が通過した場合、次のステップ をクリックして続行します。

      • 警告ブロッキングではない問題を示します。警告がビジネスまたは移行に影響を与えるかどうかを判断する必要があります。警告メッセージに基づいて問題を無視するか、解決してから再度 確認の開始 をクリックできます。

      • エラーブロッキングとなる問題を示します。エラーメッセージに基づいてエラーを解決し、再度 確認の開始 をクリックする必要があります。

        エラーメッセージおよび解決策については、「よくある質問」をご参照ください。

  7. データベースおよびテーブルスキーマの確認

    1. 確認の開始 をクリックします。

    2. 確認中に、右上隅の image アイコンをクリックしてリアルタイムの進行状況を確認できます。

    3. 確認が完了したら、結果に応じて後続の操作を実行します。

      確認結果の説明については、ステップ 6 をご参照ください。

  8. データベースおよびテーブルスキーマの移行

    1. 移行の開始 をクリックします。

    2. 移行中は、右上隅の image アイコンをクリックしてリアルタイムの進行状況を確認できます。

    3. 確認が完了したら、結果に応じて後続の操作を実行します。

      確認結果の説明については、ステップ 6 をご参照ください。

  9. (任意)SQL 互換性の確認

    SQL 互換性チェックでは、セルフマネージドインスタンスから取得した SQL ステートメントをターゲットインスタンスで再生し、異なるカーネルバージョン間の構文互換性を検証します。このステップを実行するかどうかは、お客様のニーズに応じて決定できます。

    • このステップをスキップする場合は、スキップ をクリックします。

    • このステップを実行する場合は、リクエスト再生時間 を選択し、その後 確認の開始 をクリックします。チェックが通過した場合は、次のステップ をクリックします。チェックが失敗した場合は、ステップ 6 を参照して対応してください。

      重要
      • このチェックは構文互換性のみを検証し、インスタンスのデータベースおよびテーブル内のデータを必要としません。データが必要な場合は、まず次のステップに進んで一部のデータを移行できます。

      • SQL を再生するクライアントのバージョンがターゲットインスタンスと一致していない場合、誤検知が発生する可能性があります。例外が発生した場合は、SQL ステートメントを手動で実行してエラーを確認してください。

  10. 同期の開始

    1. 同期の開始 をクリックします。

    2. 同期中は、右上隅の image アイコンをクリックしてリアルタイムの進行状況を確認できます。

      同期プロセス中は、停止再開移行のキャンセル の各操作を使用して移行フローを制御できます。各操作の説明および影響を表示するには、こちらをクリックしてください。

      操作

      機能

      影響

      利用シーン

      停止

      データ移行を直ちに停止し、残りのデータベースおよびテーブルスキーマを移行します。

      • データが完全に移行されない可能性があります。

      • 移行を再開する前に、重複データを回避するために、ターゲットクラスターから既に移行されたデータをクリアする必要があります。

      • すべてのデータが移行された後に、移行タスクを能動的に停止する場合。

      • 一部のデータが移行された後に、セルフマネージドクラスターへの書き込みを停止せずに移行をテストする場合。

      再開

      他のデータベース/テーブルのチェックおよびクリーンアップ、データの移行、残りのスキーマの移行中に例外が発生した場合、エラーメッセージに基づいて問題を解決できます。この操作により、現在のステップが再試行され、その後のステップが続行されます。

      なし

      プロセス中に発生した例外を解決した後、ブレークポイントから移行を再開する場合。

      移行のキャンセル

      タスクを強制的にキャンセルし、すべての後続ステップをスキップします。

      重要

      移行をキャンセルした後、移行タスクはロックされ、移行フローの変更ができなくなります。移行ステップの実行結果を表示するには、前のステップ次のステップ、または リフレッシュ ボタンを使用できます。

      • 移行タスクが強制終了されます。ターゲットインスタンスのデータベースおよびテーブルスキーマ、および構成が不完全になる可能性があり、ビジネス運用には使用できません。

      • 移行を再開する前に、重複データを回避するために、ターゲットクラスターから既に移行されたデータをクリアする必要があります。

      移行タスクがセルフマネージドクラスターに影響を与えている場合に、迅速に移行を終了し、書き込みを再開する場合。

    3. データの移行 ステップが実行中の場合、データの移行 タブに切り替え、image ボタンをクリックして 移行の進行状況 および 残り推定時間 を表示します。

      移行が完了可能かどうかを評価する方法を表示するには、こちらをクリックしてください。

      移行が成功するかどうかは、移行速度とセルフマネージドクラスターの書き込み速度の関係によって決まります。

      • 以下の表は、当社のテストから得られた移行速度のデータです

        平均パートサイズ

        ソースインスタンスタイプ

        ソースディスクタイプ

        ターゲットインスタンスタイプ

        ターゲットストレージメディア

        クラスターノード数

        単一ノード移行速度

        全体移行速度

        402.54 MB

        8C32G

        PL1

        16CCU

        OSS

        16

        47 MB/s

        752.34 MB/s

        402.54 MB

        80C384G

        PL3

        48CCU

        ESSD_L2

        8

        197.74 MB/s

        1581.95 MB/s

      • ターゲットクラスターとセルフマネージドクラスターの書き込み速度の関係を判定します:

        データ移行速度は、パートサイズ(当社のテストでは、平均パートサイズが 100 MB ~ 10 GB の場合、移行速度が高くなりました)、インスタンスタイプ、ディスクタイプ、およびビジネスデータの特性 などの要因に依存します。したがって、テストデータは参考用です。ターゲットクラスターの実際の書き込み速度を判定するには、ディスクスループット を確認する必要があります。「ディスクスループット の確認方法」については、「クラスター監視情報の表示」をご参照ください。

        • ターゲットクラスターの書き込み速度がセルフマネージドクラスターの書き込み速度より遅い場合、移行は失敗する可能性があります。移行タスクをキャンセルし、代わりに手動移行をご利用ください。

        • ターゲットクラスターの書き込み速度がセルフマネージドクラスターの書き込み速度より速い場合、後続のステップを続行できます。移行の成功確率を高めるため、移行に必要な時間(データ量 / (移行速度 - セルフマネージドインスタンスの書き込み速度))を5 日以内に収めるよう推奨します。

      重要
      • 移行の進行状況 をターゲットタスクで厳密に監視する必要があります。残り推定時間 を基に、セルフマネージドクラスターへの書き込みを停止し、Kafka および RabbitMQ エンジンのテーブルを処理します。

      • 現在の最大移行時間しきい値5 日に設定されています。移行が5 日間継続した場合、システムが移行タスクを自動的にキャンセルします。移行タスクにさらに長い時間がかかる場合は、技術サポートに連絡するためチケットを送信してください。

      セルフマネージドクラスターへの書き込みをいつ停止するかを推定する方法を表示するには、こちらをクリックしてください。

      ビジネストラフィックを切り替える前に、移行後のデータ整合性を保証するために、セルフマネージドインスタンスへの新しいデータの書き込みを停止する必要があります。このため、ビジネス書き込みを停止し、Kafka および RabbitMQ テーブルを削除します。手順は以下のとおりです:

      1. セルフマネージドクラスター にログインし、処理が必要なテーブルを照会するための以下のステートメントを実行します:

        SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka');
      2. ターゲットテーブルの CREATE TABLE ステートメントを表示します。

        SHOW CREATE TABLE <aim_table_name>;
      3. ターゲットクラスターへの接続」を行い、前のステップで取得した CREATE TABLE ステートメントを実行します。

      4. セルフマネージドクラスター にログインし、移行済みの Kafka および RabbitMQ エンジンのテーブルを削除します。

        重要

        Kafka テーブルを削除する場合、それを参照するマテリアライズドビューも削除する必要があります。そうしないと、マテリアライズドビューが移行できず、移行全体が失敗します。

    4. 移行の進行状況 が 100 % に達し、ソースインスタンスへの書き込みが停止したことを確認した後、停止 ボタンをクリックして移行プロセスを終了し、次のステップに進みます。

      image

    5. 同期が完了したら、終了 をクリックします。

      重要

      "同期の開始" ステップが完了した後、移行タスクはロックされ、移行フローを変更することはできません。移行ステップの実行結果を表示するには、前のステップ次のステップ、または リフレッシュ ボタンを使用できます。

ステップ 4:MergeTree 以外のテーブルからのデータ移行

MergeTree 以外のテーブルの場合、移行タスクはテーブルスキーマのみを移行する(例:MySQL テーブル)か、まったくサポートしない(例:Log テーブル)かのいずれかです。したがって、移行タスクが完了した後、ターゲットクラスターにはスキーマはあるがビジネスデータがないテーブルが存在する可能性があります。このようなビジネスデータは、以下の手順に従って手動で移行する必要があります:

  1. セルフマネージドクラスター にログインし、データの移行が必要な MergeTree 以外のテーブルを表示します。

    SELECT
        `database` AS database_name,
        `name` AS table_name,
        `engine`
    FROM `system`.`tables`
    WHERE (`engine` NOT LIKE '%MergeTree%') AND (`engine` != 'Distributed') AND (`engine` != 'MaterializedView') AND (`engine` NOT IN ('Kafka', 'RabbitMQ')) AND (`database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema')) AND (`database` NOT IN (
        SELECT `name`
        FROM `system`.`databases`
        WHERE `engine` IN ('MySQL', 'MaterializedMySQL', 'MaterializeMySQL', 'Lazy', 'PostgreSQL', 'MaterializedPostgreSQL', 'SQLite')
    ))
  2. [ターゲットクラスター] にログオンし、データ移行[リモート関数] を使用して実行します。

手動移行

image.png

説明

ApsaraDB for ClickHouse Enterprise Edition では、ソーステーブルにシャードやレプリカがあるかどうかに関わらず、対応するターゲットテーブルを 1 つ作成するだけで済みます。このテーブルでは、Engine パラメーターを省略できます。これは、システムが自動的に SharedMergeTree テーブルエンジンを使用するためです。ApsaraDB for ClickHouse Enterprise Edition クラスターは、垂直および水平スケーリングを自動的に処理するため、レプリケーションおよびシャーディングの具体的な実装を心配する必要はありません。

概要

セルフマネージド ClickHouse クラスターから ApsaraDB for ClickHouse Enterprise Edition クラスターへの移行の手順は以下のとおりです。

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

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

  3. ソースクラスターがパブリックにアクセス可能であれば、そのデータをターゲットクラスターにプルできます。そうでない場合は、ソースクラスターからデータをプッシュする必要があります。

  4. (任意)ソースクラスターの 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. Remote 関数を使用してデータを読み取るか、プッシュします。

      説明

      ソース ClickHouse サーバーが外部ネットワークからアクセスできない場合、Remote 関数は select および insert 操作をサポートしているため、読み取りではなくプッシュを行うことができます。

      • ターゲットクラスターで、Remote 関数を使用して、ソースクラスターのソーステーブルからデータを読み取ります。

        image.png

        INSERT INTO db.table SELECT * FROM
        remote('source-hostname:9000', db, table, 'exporter', 'password-here')
      • Remote 関数を使用して、ソースクラスターからターゲットクラスターへデータをプッシュします。

        image.png

        説明

        Remote 関数が ApsaraDB for ClickHouse Enterprise Edition クラスターに接続できるようにするには、ソースクラスターの IP アドレスをターゲットクラスターの許可リストに追加する必要があります。「許可リストの設定」をご参照ください。

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

よくある質問

接続性および構成の確認エラー

エラーメッセージ

説明

解決策

Tcp connectivity check failed for '{host}:{port}':{error}.

セルフマネージドクラスターへのネットワーク接続がタイムアウトしました。

エラーメッセージに基づいてネットワークの問題をトラブルシューティングします。

No such cluster: {cluster}, please run 'SELECT DISTINCT(cluster) FROM system.clusters;' to check

移行タスクで指定されたクラスターが、セルフマネージドクラスターに存在しません。

SQL ステートメントを実行してセルフマネージドクラスター内のクラスターを照会し、移行タスクの構成を更新します。

not exists

以下のいずれかのシステムテーブルがセルフマネージドクラスターに存在しません:system.query_logsystem.parts、または system.part_log

セルフマネージドクラスターに必要なシステムテーブルを作成します。

Timezone mismatch with source, which may cause time data anomalies.

セルフマネージドクラスターのタイムゾーンがターゲットクラスターと一致していません。

タイムゾーン設定を調整し、両方のクラスターが同一のタイムゾーンを使用するようにします。

Compatibility mismatch with source version, which may cause incompatibility.

ターゲットクラスターの compatibility 設定が、セルフマネージドクラスターのバージョンと一致していません。

ターゲットクラスターの compatibility 設定を、セルフマネージドクラスターのバージョンと一致するように調整します。

重要

compatibility パラメーターを以前のバージョンに設定すると、ParallelReplica などの新機能が利用できなくなります。

データベースおよびテーブルスキーマの確認エラー

エラーメッセージ

説明

解決策

ERROR: Not consistent across nodes.

セルフマネージドクラスター内のノード間で、データベースまたはテーブルの定義が一貫していません。

セルフマネージドクラスターの各ノード上のデータベースおよびテーブルを確認し、不整合を解消します。

ERROR: Cannot get secrets (shown as [HIDDEN]), please set display_secrets_in_show_and_select=1 (restart required).

データベースまたはテーブルスキーマで定義されたパスワードが非表示になっています。

display_secrets_in_show_and_select=1 を設定し、クラスターを再起動します。

注:この操作には display_secrets_in_show_and_select 権限が必要です。

ERROR: Unsupported engine.

セルフマネージドクラスターのデータベースエンジンは、移行に対応していません。

ターゲットクラスターでサポートされているデータベースエンジンに変更することを検討してください。

WARN:Unsupported engine, it will be automatically replaced with a Replicated database to bypass migration exceptions.

セルフマネージドクラスターのデータベースエンジンは、移行に対応していません。

システムが、移行例外を回避するために、サポートされていないデータベースエンジンを自動的に Replicated データベースに置き換えます。

WARN:Unsupported engine, please replace the data synchronization capability with DTS, or create a same-name database to bypass migration exceptions.

セルフマネージドクラスターのデータベースエンジンは、移行に対応していません。

Data Transmission Service (DTS) を使用してデータ同期を行い、またはターゲットクラスターに同名のデータベースを作成してこのチェックをバイパスします。

WARN:Unsupported engine, it will be automatically ignored during migration.

セルフマネージドクラスターのデータベースエンジンは、移行に対応していません。

このサポートされていないエンジンを使用するデータベースは、移行中に自動的に無視されます。

WARN:It's not recommended to use the Distributed engine as it will cause scaling issues in enterprise instances. Please drop this table and query the underlying MergeTree table directly.

Distributed テーブルエンジンは、ApsaraDB for ClickHouse Enterprise Edition インスタンスでは推奨されていません

セルフマネージドクラスターで分散テーブルを削除します。移行後は、基盤となる MergeTree テーブルを直接照会します。

WARN:Please confirm referenced IP addresses are accessible.

この警告は、外部データベースエンジンへのアクセス可能性に関する潜在的な問題を示しています。

参照された IP アドレスがターゲットクラスターからアクセス可能であることを確認する必要があります。アクセスできない場合は、ネットワーク接続を確立し、IP アドレスをクラスターの許可リストに追加します。

WARN:Only structure, does not support data migration.

特定のデータベースエンジンは、スキーマ移行のみをサポートし、データ移行はサポートしていません。

remote() 関数などのツールを使用して、データを手動で移行します。

WARN:Unsupported engine, please create a same-name MergeTree table manually to bypass migration exceptions.

特定のデータベースエンジンを使用するテーブルは、移行に対応していません。

ターゲットクラスターに同名の MergeTree テーブルを手動で作成し、その後データを移行します。

WARN:Ignored engine, please create table manually.

特定のデータベースエンジンを使用するテーブルは、移行に対応していません。

「操作手順」セクションのステップ 4 をご参照ください。

ERROR: Table has data in destination cluster.

データベースおよびテーブルスキーマの確認中に、ターゲットクラスターの対応するテーブルは空である必要があります。

ターゲットクラスターの対応するテーブルからすべてのデータを削除します。

ERROR: Unsupported function origin.

ユーザー定義関数 Function(function.origin="SQLUserDefined") のみが移行をサポートしています。

ターゲットクラスターに必要な関数を手動で作成します。

その他の問題

その他の移行に関する問題の解決策については、「よくある質問」をご参照ください。