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

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

最終更新日:Jul 03, 2026

セルフマネージドの ClickHouse クラスターは、安定性の欠如、スケーラビリティの不足、アップグレードの困難さ、ディザスタリカバリの脆弱性といった課題を抱えることがよくあります。そのため、多くのユーザーがセルフマネージドの ClickHouse クラスターをクラウド上の PaaS サービスへ移行しています。本トピックでは、セルフマネージドの ClickHouse クラスターから ApsaraDB for ClickHouse のコミュニティ互換エディションクラスターへの移行方法について説明します。

前提条件

  • 宛先クラスター:

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

    • データベースアカウントとパスワードが必要です。

    • アカウントにはデータベースおよびテーブルに対する読み取り権限と、SYSTEM コマンドを実行する権限が必要です。

  • 宛先クラスターとセルフマネージドクラスターはネットワーク上で通信可能である必要があります。

    セルフマネージドクラスターと宛先クラスターが同一 VPC 内にある場合、さらに宛先クラスターの全ノードの IP アドレスおよびその vSwitch の IPv4 CIDR ブロックをセルフマネージドクラスターのホワイトリストに追加する必要があります。

    • ApsaraDB for ClickHouse クラスターのホワイトリストを設定する方法については、「ホワイトリストの設定」をご参照ください。

    • セルフマネージドクラスターのホワイトリストを設定する方法については、該当製品のドキュメントをご参照ください。

    • ApsaraDB for ClickHouse クラスターの全ノードの IP アドレスを確認するには、SELECT * FROM system.clusters; を実行します。

    • ApsaraDB for ClickHouse クラスターの vSwitch の IPv4 CIDR ブロックを取得するには、次の手順を実行します。

      1. ApsaraDB for ClickHouse コンソールで、対象クラスターの クラスター情報 ページに移動します。ネットワーク情報 セクションで、VSwitch ID を取得します。

      2. vSwitch リストで、インスタンス ID を使用して対象の vSwitch を検索し、その IPv4 CIDR ブロック を取得します。

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

移行の検証

データ移行を開始する前に、ビジネスの互換性、パフォーマンス、および移行計画を検証するためにテスト環境を構築することを強く推奨します。検証が完了した後、本番環境でデータ移行を実施できます。この重要なステップにより、潜在的な問題を早期に特定・解決し、スムーズな移行を実現するとともに、本番環境への影響を回避できます。

  1. データ移行タスクを作成します。詳細な手順については、本トピックをご参照ください。

  2. クラウド移行の互換性、パフォーマンスボトルネックの分析、および移行成功のための情報については、「セルフマネージド ClickHouse のクラウド移行における互換性とパフォーマンスボトルネックの分析および対策」をご参照ください。

ソリューションを選択する

移行ソリューション

メリット

デメリット

適用範囲

コンソールによる移行

視覚的なインターフェイスを提供します。メタデータを手動で移行する必要はありません。

クラスター全体のフル移行および増分移行のみをサポートします。特定のデータベース、テーブル、または既存データの移行はできません。

クラスター全体の移行。

手動移行

移行するデータベースおよびテーブルを制御できます。

手順が複雑で、メタデータを手動で移行する必要があります。

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

  • コールドデータが 1 TB を超える場合。

  • ホットデータが 10 TB を超える場合。

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

操作手順

コンソール移行

制限事項

宛先クラスターのバージョンは 21.8 以降である必要があります。

注意事項

移行中

  • 移行中、宛先クラスターではマージプロセスが一時停止されますが、セルフマネージドクラスターでは継続されます。

    説明

    移行タスクが長時間実行されると、宛先クラスターに過剰なメタデータが蓄積される可能性があります。移行タスクの実行期間は 5 日以内にすることを推奨します。5 日を超えるタスクは自動的にキャンセルされます。

  • 宛先クラスターは default クラスターである必要があります。セルフマネージドクラスターが別の名前を使用している場合、サービスは分散テーブル内の cluster 定義を自動的に default に変換します。

移行範囲

  • サポートされるオブジェクト

    • データベース、データディクショナリ、およびマテリアライズドビュー。

      • SQL で作成されたデータディクショナリは移行をサポートしますが、XML で作成されたものはサポートしません。

        これを確認するには、次のステートメントを実行します:SELECT * FROM system.dictionaries WHERE (database = '') OR isNull(database);。このステートメントが行を返す場合、XML を使用して作成されたデータディクショナリが存在することを示します。

      • データディクショナリが外部サービスにアクセスする場合、外部サービスが利用可能であり、かつクラスターがその許可リストに追加されていることを確認してください。データディクショナリのデータソースが現在の ClickHouse クラスター内の内部テーブルであり、定義内の HOST パラメーターが IP アドレスの場合、移行後に IP アドレスが変更されるため、ディクショナリへのアクセスが失敗する可能性があります。現在の ClickHouse クラスターの HOST を再確認し、データディクショナリを手動で再作成する必要があります。

    • テーブルスキーマ:Kafka および RabbitMQ エンジンテーブルを除くすべてのテーブルスキーマ。

    • データ:MergeTree ファミリーのテーブルからの増分データ移行。

  • サポートされないオブジェクトおよびデータ

    • Kafka および RabbitMQ エンジンテーブルとそのデータ。

    • 外部テーブルやログテーブルなど、非 MergeTree テーブルのデータ。

    重要

    上記のサポートされない項目は、手動で移行する必要があります。

  • データ量の制限

    • コールドデータ:コールドデータの移行は低速です。長時間の移行による失敗を防ぐため、セルフマネージドクラスターからコールドデータをクリアし、合計データ量が 1 TB を超えないようにすることを推奨します。

    • ホットデータ:ホットデータの量が 10 TB を超える場合、移行タスクが失敗する可能性が高くなります。

    データ量がこれらの制限を超える場合は、代わりに手動移行ソリューションをご検討ください。

クラスターへの影響

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

    • セルフマネージドクラスターからのデータ読み取りにより、CPU およびメモリ使用量が増加します。

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

  • 宛先クラスター:

    • 宛先クラスターへのデータ書き込みにより、CPU およびメモリ使用量が増加します。

    • 移行中のデータベースおよびテーブルに対して DDL 操作は許可されません。

    • この制限は、他のデータベースおよびテーブルには適用されません。

    • マージプロセスは、移行中のデータベースおよびテーブルに対してのみ停止されます。

    • 移行タスク開始前にクラスターが再起動されます。

    • 移行完了後、クラスターは頻繁にマージ操作を実行します。これにより I/O 使用量が増加し、ビジネスリクエストのレイテンシが高くなる可能性があります。このレイテンシ増加による影響を考慮してください。マージ操作の具体的な継続時間を計算する必要があります。手順については、「移行後のマージ時間の計算」をご参照ください。

操作手順

ステップ 1:クラスターを確認し、システムテーブルを有効化する

データ移行を開始する前に、セルフマネージドクラスターの config.xml ファイルを変更して増分移行を有効化します。必要な変更内容は、system.part_log および system.query_log テーブルが有効化されているかどうかによって異なります。

システムテーブルが有効化されていない場合

system.part_log および system.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>

システムテーブルが有効化されている場合

  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:宛先クラスターの互換性を設定する

宛先クラスターをセルフマネージドクラスターと互換性のある状態に設定します。このステップにより、移行後のアプリケーション変更を最小限に抑えることができます。

  1. 宛先クラスターとセルフマネージドクラスターのバージョン番号を取得し、比較します。

    宛先クラスターおよびセルフマネージドクラスターにログインし、それぞれで次のステートメントを実行してバージョン番号を取得します。ApsaraDB for ClickHouse へのログイン方法については、「データベースへの接続」をご参照ください。

    SELECT version();
  2. バージョンが異なる場合は、宛先クラスターにログインし、セルフマネージドクラスターのバージョンと一致するように互換性パラメーターを設定します。これにより、機能を可能な限り一致させることができます。例を以下に示します。

    SET GLOBAL compatibility = '22.8';

ステップ 3:(任意)MaterializedMySQL エンジンを有効化する

セルフマネージドクラスターに MaterializedMySQL エンジンを使用するテーブルが含まれている場合は、次のステートメントを実行してこのエンジンを有効化します。

SET GLOBAL allow_experimental_database_materialized_mysql = 1;
説明

ClickHouse コミュニティは MaterializedMySQL エンジンのメンテナンスを終了しています。クラウドへの移行後は、Data Transmission Service (DTS) を使用して MySQL データを同期することを推奨します。

MaterializedMySQL エンジンがメンテナンスされていないため、Data Transmission Service (DTS) は MySQL データを ApsaraDB for ClickHouse に同期する際に、MaterializedMySQL テーブルの代わりに ReplacingMergeTree テーブルを使用します。詳細については、「MaterializedMySQL 互換性」をご参照ください。

DTS を使用して MySQL データを ApsaraDB for ClickHouse に移行する方法については、次のトピックをご参照ください。

ステップ 4:Kafka/RabbitMQ エンジンテーブルの記録とクリーンアップ

移行を開始する前に、セルフマネージドクラスター内のすべての Kafka/RabbitMQ エンジンテーブルおよびそれらに依存する下流のマテリアライズドビューの定義を記録し、暗黙的テーブルを処理した後、これらのテーブルを削除して移行エラーを回避します。

  1. セルフマネージドクラスターにログインし、すべての Kafka および RabbitMQ エンジンテーブルとその下流の依存関係を照会します。

    /*
    create_table_query: テーブル定義
    dependencies_database: このテーブルに依存するテーブルのデータベース
    dependencies_table: このテーブルに依存するテーブル
    dependencies_database および dependencies_table から、Kafka/RabbitMQ テーブルに依存するマテリアライズドビューを特定できます
    */
    SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka');
  2. マテリアライズドビューの定義を確認し、そのターゲットテーブルが暗黙的テーブルかどうかをチェックします。

    /*
    マテリアライズドビューの定義を表示します。
    マテリアライズドビューのターゲットテーブルが暗黙的テーブルの場合、特に注意が必要です:
    マテリアライズドビューを削除すると、暗黙的テーブルも削除され、データ損失が発生します。
    例:CREATE MATERIALIZED VIEW [db.]table_name [TO[db.]name] で TO を指定しない場合、
    システムは自動的に暗黙的テーブルを作成します。形式は '.inner_id.<TABLE_UUID>' または '.inner.<TABLE>' の可能性があります
    */
    SELECT * FROM system.tables WHERE database='<DATABASE>' AND name = '<MATERIALIZED_VIEW_NAME>';
  3. マテリアライズドビューのターゲットテーブルが暗黙的テーブルの場合、後でマテリアライズドビューを削除してもデータ損失が発生しないように、ターゲットテーブルの名前を新しい名前に変更します。

    -- データ保護のために暗黙的ターゲットテーブルの名前を新しい名前に変更
    RENAME TABLE <DATABASE>.`.inner_id.<TABLE_UUID>` TO <DATABASE>.<new_target_table_name>;
  4. Kafka/RabbitMQ エンジンテーブルおよびそれらに依存する下流のマテリアライズドビューを削除します。

    -- まずマテリアライズドビューを削除
    DROP TABLE <DATABASE>.<MATERIALIZED_VIEW_NAME>;
    -- 次に Kafka/RabbitMQ エンジンテーブルを削除
    DROP TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;
重要

記録したすべての DDL ステートメントを保存してください。これらは、後でセルフマネージドクラスターおよび宛先クラスターの両方でこれらのテーブルを再構築するために必要になります。RENAME 操作を実行した場合は、マテリアライズドビューを再構築する際に TO 句でリネーム後のターゲットテーブルを指定します。詳細については、「CREATE MATERIALIZED VIEW」をご参照ください。

ステップ 5:データ移行タスクの作成

  1. ApsaraDB for ClickHouse コンソールにログインします。

  2. クラスターリストページで、Community Edition インスタンスのリストを選択し、宛先クラスターの ID をクリックします。

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

  4. 移行タスクページで、移行タスクの作成をクリックします。

    1. ソースインスタンスと宛先インスタンスを設定します。

      次の設定を構成し、次のステップの接続をテストしますをクリックします。

      説明

      接続テストが成功した場合は、次のステップに進んでください。接続テストが失敗した場合は、表示されるプロンプトに基づいてソースおよび宛先インスタンスを再設定してください。

      image

      ソースクラスターパラメーター

      パラメーター

      説明

      ソースアクセスモード

      専用回線 / VPN Gateway / Smart Gateway / ESC セルフマネージド ClickHouseを選択します。

      専用回線 / VPN Gateway / Smart Gateway / ESC セルフマネージド ClickHouse

      クラスター名

      ソースクラスターの名前。

      名前には数字と小文字のみを使用できます。

      source

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

      SELECT * FROM system.clusters; を実行して、配信元インスタンスクラスター名を取得します。

      default

      VPC IP アドレス

      クラスター内の各シャードの IP アドレスとポート (TCP アドレス) をカンマ区切りで指定します。

      重要

      ApsaraDB for ClickHouse クラスターの VPC ドメイン名または SLB アドレスは使用できません。

      形式:IP:PORT,IP:PORT,......

      クラスターの IP アドレスとポートを取得する方法は、データ移行のシナリオによって異なります。

      クロスアカウントまたはクロスリージョン移行

      次の SQL ステートメントを使用して、セルフマネージドクラスターの IP アドレスとポートを取得できます。

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

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

      Alibaba Cloud 以外の ClickHouse 移行

      IP アドレスを Alibaba Cloud に簡単にマッピングできない場合は、次の SQL ステートメントを使用してセルフマネージドクラスターの IP アドレスとポートを取得できます。

      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 つのレプリカを選択することもできます。

      IP アドレスとポートがネットワーク変換を通じて Alibaba Cloud にマッピングされている場合は、対応するマッピング済みの IP アドレスとポートを設定する必要があります。

      192.168.0.5:9000,192.168.0.6:9000

      データベースアカウント

      ソースクラスターのデータベースアカウント。

      test

      データベースパスワード

      ソースクラスターのデータベースアカウントのパスワード。

      test******

      宛先クラスターパラメーター

      パラメーター

      説明

      データベースアカウント

      宛先クラスターのデータベースアカウント。

      test

      データベースパスワード

      宛先クラスターのデータベースアカウントのパスワード。

      test******

    2. 移行内容を確認します。

      ページに表示される移行対象データの情報を慎重に確認し、次: 同期の事前検出と開始をクリックします。

    3. システムはバックグラウンドで移行リンクの事前チェックを実行し、タスクを開始します。

      システムはソースおよび宛先クラスターに対してインスタンスステータスの検出ストレージスペースの検出、およびローカルおよび分散テーブルの検出を実行します。

      • 事前チェックが成功した場合:

        事前チェック成功後のページを次に示します。

        image

        1. データ移行プロセスがインスタンスに与える影響を慎重に確認します。

        2. 終了をクリックします。

          重要
          • [完了] をクリックすると、システムがタスクを作成して開始し、ステータスが「実行中」に変化します。タスクリストでタスクを確認できます。

          • タスク作成後は、タスクを監視する必要があります。移行の最終段階では、セルフマネージドクラスターへの書き込み操作を停止し、残りのデータベースおよびテーブルスキーマを移行する必要があります。詳細については、「移行タスクの監視とセルフマネージドクラスターへの書き込み停止」をご参照ください。

      • 事前チェックが失敗した場合:エラーメッセージの指示に従って、データ移行タスクを再度実行します。事前チェック項目とその要件を次の表に示します。事前チェックのエラーメッセージとその解決策の詳細については、「移行事前チェックエラーと解決策」をご参照ください。

        チェック項目

        要件

        インスタンスステータスの検出

        ソースまたは宛先クラスターで管理タスク (スケールアウト、アップグレード、スペックダウンなど) が実行中の場合、データ移行タスクを開始できません。

        ストレージスペースの検出

        宛先クラスターの利用可能なストレージ容量は、セルフマネージドクラスターの使用済みストレージ容量の少なくとも 1.2 倍である必要があります。

        ローカルおよび分散テーブルの検出

        セルフマネージドクラスターのローカルテーブルに対応する分散テーブルが存在しない、または複数存在する場合、チェックは失敗します。これを解決するには、余分な分散テーブルを削除するか、ローカルテーブルに対して一意の分散テーブルを作成してください。

ステップ 6:移行の実現可能性を評価する

ソースクラスターの書き込み速度が 20 MB/s 未満 の場合、このステップはスキップできます。

ソースクラスターの書き込み速度が 20 MB/s を超える 場合、移行の実現可能性を評価するために宛先クラスターの実際の書き込み速度を確認する必要があります。移行を成功させるには、宛先クラスターの書き込み速度がソースクラスターの書き込み速度に追いつく必要があります。次の手順を実行してください。

  1. 宛先クラスターの TairPDBShardingIOBandwidth を確認して、実際の書き込み速度を判断します。TairPDBShardingIOBandwidth の確認方法については、「クラスターモニタリングデータの表示」をご参照ください。

  2. 宛先クラスターとソースクラスターの書き込み速度を比較します。

    1. 宛先クラスターの書き込み速度がソースクラスターよりも 大きい 場合:移行は 成功する 可能性が高いです。ステップ 7 に進んでください。

    2. 宛先クラスターの書き込み速度がソースクラスターよりも 小さい 場合:移行は 失敗する 可能性が高いです。移行タスクをキャンセルし、手動移行を使用することを推奨します。

ステップ 7:移行の監視と書き込み停止

  1. ApsaraDB for ClickHouse コンソールにログインします。

  2. コミュニティエディションインスタンスリストで、宛先クラスターの ID をクリックします。

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

  4. インスタンス移行リストページで、次の操作が可能です。

    • 移行タスクのステータスと実行段階を確認します。

      重要
      • 実行段階が データ移行 (つまり、テーブルスキーマの移行が完了) に到達したら、直ちにステップ 8に進んで、セルフマネージドクラスターで Kafka/RabbitMQ エンジンテーブルを再構築し、増分データの取り込みを再開してください。

      • 対象タスクの 実行段階の情報 を密接に監視してください。実行段階の情報 列の推定残り時間に基づいて、ステップ 9に従って、セルフマネージドクラスターへの書き込みを停止し、Kafka および RabbitMQ エンジンテーブルを処理してください。

    • [操作] 列で 詳細 をクリックして、タスク詳細ページを開きます。タスク詳細ページには次の情報が含まれます。

      説明

      移行タスクが完了 (ステータスが 完了 または キャンセル) している場合、詳細を表示 ページの内容はクリアされます。宛先クラスターに移行されたテーブルスキーマの一覧を表示するには、次の SQL ステートメントを実行します。

      SELECT `database`, `name`, `engine_full` FROM `system`.`tables` WHERE `database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema');
      • 移行されたすべてのテーブルスキーマとその移行ステータス。

      • 移行されたすべてのデータベーススキーマとその移行ステータス。

      • データベースおよびテーブルの移行に失敗した場合のすべてのエラーメッセージ。

    移行タスクのステータスを次の表に示します。

    タスクステータス

    説明

    実行中

    移行の環境およびリソースを準備しています。

    初期化中

    移行タスクを初期化しています。

    構成移行

    クラスター構成を移行しています。

    スキーマ移行

    すべてのデータベース、MergeTree ファミリーのテーブル、および分散テーブルを移行しています。

    データ移行

    MergeTree ファミリーのテーブルからデータを増分移行しています。

    その他のスキーマ移行

    マテリアライズドビューおよび非 MergeTree テーブルのスキーマを移行しています。

    データチェック

    宛先クラスターの完了テーブルのデータ量がセルフマネージドクラスターのデータ量と一致しているかをチェックしています。一致しない場合、タスクが失敗する可能性があります。移行を再開することを推奨します。

    移行後構成

    宛先クラスターのシステム設定を構成しています (例:移行リソースのクリーンアップ、ソースインスタンスへの書き込み再開など)。

    完了

    移行タスクが完了しました。

    キャンセル

    移行タスクがキャンセルされました。

ステップ 8:セルフマネージドクラスターでの Kafka/RabbitMQ エンジンテーブルの再構築

移行タスクが データ移行 フェーズ (つまり、テーブルスキーマの移行が完了) に入ったら、以前に保存した DDL ステートメントを使用して、セルフマネージドクラスターで Kafka/RabbitMQ エンジンテーブルおよびそれらに依存する下流のマテリアライズドビューを再構築します。再構築後、増分データの取り込みが再開され、自動的に宛先クラスターに同期されます。

重要

以前に暗黙的ターゲットテーブルに対して RENAME 操作を実行した場合は、マテリアライズドビューを再構築する際に TO 句でリネーム後のターゲットテーブルを指定してください。

-- セルフマネージドクラスターで Kafka/RabbitMQ エンジンテーブルを再構築
CREATE TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- マテリアライズドビューを再構築 (リネーム後のターゲットテーブルを指す)
CREATE MATERIALIZED VIEW <DATABASE>.<MATERIALIZED_VIEW_NAME> TO <DATABASE>.<new_target_table_name>
AS SELECT ... FROM <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;

ステップ 9:書き込み停止と切り替え

推定残り移行時間が 10 分未満、または移行進捗が 99% に達したら、次の切り替え手順を実行します。

  1. ビジネス書き込みを停止します。セルフマネージドクラスターで、以前に再構築した Kafka/RabbitMQ エンジンテーブルおよびそれらに依存する下流のマテリアライズドビューを削除します。

    -- まずマテリアライズドビューを削除
    DROP TABLE <DATABASE>.<MATERIALIZED_VIEW_NAME>;
    -- 次に Kafka/RabbitMQ エンジンテーブルを削除
    DROP TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;
  2. 移行進捗が 100% に達し、移行が完全に完了するまで待ちます。

  3. 宛先クラスターに接続し、以前に保存した DDL ステートメントを使用して Kafka/RabbitMQ エンジンテーブルおよびそれらに依存する下流のマテリアライズドビューを再構築します。

    重要

    以前に暗黙的ターゲットテーブルに対して RENAME 操作を実行した場合は、マテリアライズドビューを再構築する際に TO 句でリネーム後のターゲットテーブルを指定してください。

    -- 宛先クラスターで Kafka/RabbitMQ エンジンテーブルを再構築
    CREATE TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME> (...)
    ENGINE = Kafka/RabbitMQ
    SETTINGS ...;
    -- マテリアライズドビューを再構築 (リネーム後のターゲットテーブルを指す)
    CREATE MATERIALIZED VIEW <DATABASE>.<MATERIALIZED_VIEW_NAME> TO <DATABASE>.<new_target_table_name>
    AS SELECT ... FROM <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;
  4. 宛先クラスターのデータパイプラインが正常に動作しており、データが正常に流入していることを確認します。

ステップ 10:移行の完了

セルフマネージドクラスターへの書き込みを停止した後、Complete the taskできます。このステップにより、残りのデータが移行され、データ量チェックが実行され、残りのデータベースおよびテーブルスキーマが移行されます。タスク詳細で移行された内容を確認できます。

重要
  • データチェックが失敗した場合、移行タスクはデータ量チェックフェーズのままになります。移行をキャンセルして、新しい移行タスクを作成することを推奨します。移行タスクのキャンセル方法については、「その他の操作」をご参照ください。

  • 長時間のデータ移行により、宛先クラスターに過剰なメタデータが蓄積される可能性があります。移行タスクの実行期間は 5 日以内にすることを推奨します。5 日を超えるタスクは自動的にキャンセルされます。

  1. ApsaraDB for ClickHouse コンソールにログインします。

  2. クラスターリストページで、Community Edition インスタンスのリストを選択し、宛先クラスターの ID をクリックします。

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

  4. 対象の移行タスクの 操作 列で、移行完了 をクリックします。

  5. 移行完了 ダイアログボックスで、を決定 をクリックします。

ステップ 11:非 MergeTree テーブルのデータ移行

移行タスクでは、非 MergeTree テーブル (外部テーブルやログテーブルなど) のテーブルスキーマのみが移行され、宛先クラスターにビジネスデータなしで作成されます。ビジネスデータは手動で移行する必要があります。次の手順を実行してください。

  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. 宛先クラスターにログインし、remote 関数を使用してテーブルデータを移行します。詳細な手順については、「remote 関数を使用したデータ移行」をご参照ください。

その他の操作

移行タスクが完了すると、移行ステータス完了 に変化します。タスクリストは即座に更新されないため、最新のステータスを確認するには定期的にページをリフレッシュしてください。

操作

説明

影響

シナリオ

移行キャンセル

タスクを強制的にキャンセルし、データ量チェックをスキップして、残りのデータベースおよびテーブルスキーマを移行しません。

  • 移行が強制終了されます。宛先インスタンスのデータベースおよびテーブルスキーマが不完全になり、使用できなくなる可能性があります。

  • 移行を再開する前に、宛先クラスターから移行済みのデータをクリアして、データ重複を防止する必要があります。

移行がセルフマネージドクラスターに悪影響を及ぼし、すぐに書き込み操作を復元する必要がある場合に使用します。

移行の停止

データ移行を即座に停止しますが、残りのデータベースおよびテーブルスキーマの移行を完了します。データ量チェックはスキップされます。

データ移行は不完全になりますが、宛先インスタンスのデータベースおよびテーブルスキーマは完全になります。

セルフマネージドクラスターへの書き込みを中断せずに、部分的に移行されたデータセットをテストする場合に使用します。

移行停止

  1. ApsaraDB for ClickHouse コンソールにログインします。

  2. クラスターリストページで、Community Edition インスタンスのリストを選択し、対象クラスターの ID をクリックします。

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

  4. 対象の移行タスクの 操作 列で、移行を停止する をクリックします。

  5. 移行を停止する ダイアログボックスで、を決定 をクリックします。

移行キャンセル

  1. ApsaraDB for ClickHouse コンソールにログインします。

  2. クラスターリストページで、Community Edition インスタンスのリストを選択し、対象クラスターの ID をクリックします。

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

  4. 対象の移行タスクの 操作 列で、移行のキャンセル をクリックします。

  5. 移行のキャンセル ダイアログボックスで、を決定 をクリックします。

手動移行

方法 1:BACKUP および RESTORE コマンドの使用

詳細については、「BACKUP および RESTORE コマンドを使用したデータのバックアップと復元」をご参照ください。

方法 2:INSERT FROM SELECT ステートメントの使用

ステップ 1:メタデータの移行

ClickHouse メタデータの移行は、主にテーブル作成 DDL の移行です。

clickhouse-client ツールをインストールする必要がある場合は、そのバージョンが宛先の ApsaraDB for ClickHouse インスタンスのバージョンと一致していることを確認してください。ダウンロードリンクはclickhouse-clientで確認できます。

  1. セルフマネージドクラスターのデータベース一覧を表示します。

    clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>" --query="SHOW databases"  > database.list

    パラメーター:

    パラメーター

    説明

    old host

    セルフマネージドクラスターのアドレス。

    old port

    セルフマネージドクラスターのポート。

    old user name

    セルフマネージドクラスターにログインするためのアカウント。アカウントには DML 読み取り/書き込み権限、設定権限、および DDL 権限が必要です。

    old password

    アカウントのパスワード。

    説明

    system データベースはシステムデータベースであり、移行する必要はありません。除外してください。

  2. セルフマネージドクラスターのテーブル一覧を表示します。

    clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>" --query="SHOW tables from <database_name>"  > table.list

    パラメーター:

    パラメーター

    説明

    database_name

    データベース名。

    または、システムテーブルから直接すべてのデータベースおよびテーブル名を照会することもできます。

    SELECT DISTINCT database, name FROM system.tables WHERE database != 'system';
    説明

    照会されたテーブル名が .inner. で始まる場合、それはマテリアライズドビューの内部表現であり、移行する必要はありません。除外してください。

  3. セルフマネージドクラスターから特定のデータベース内のすべてのテーブルのテーブル作成 DDL をエクスポートします。

    clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>" --query="SELECT concat(create_table_query, ';') FROM system.tables WHERE database='<database_name>' FORMAT TabSeparatedRaw" > tables.sql
  4. テーブル作成 DDL を宛先の ApsaraDB for ClickHouse インスタンスにインポートします。

    説明

    テーブル作成 DDL をインポートする前に、ApsaraDB for ClickHouse インスタンスに該当するデータベースを作成しておく必要があります。

    clickhouse-client --host="<new host>" --port="<new port>" --user="<new user name>" --password="<new password>"  -d '<database_name>'  --multiquery < tables.sql

    パラメーター:

    パラメーター

    説明

    new host

    宛先の ApsaraDB for ClickHouse インスタンスのアドレス。

    new port

    宛先の ApsaraDB for ClickHouse インスタンスのポート。

    new user name

    宛先の ApsaraDB for ClickHouse インスタンスにログインするためのアカウント。アカウントには DML 読み取り/書き込み権限、設定権限、および DDL 権限が必要です。

    new password

    アカウントのパスワード。

ステップ 2:データの移行

リモート関数

  1. (任意) ApsaraDB for ClickHouse インスタンスにデータを移行する際は、ネットワークトラフィックを削減するために network_compression_method パラメーターを調整することを検討してください。

    • 宛先の ApsaraDB for ClickHouse インスタンスで network_compression_method を一時的に変更するには、次のコマンドを実行します。

    • SET network_compression_method = 'ZSTD';
    • 宛先の ApsaraDB for ClickHouse インスタンスで network_compression_method パラメーターの値を確認するには、次のコマンドを実行します。

    • SELECT * FROM system.settings WHERE name = 'network_compression_method';
  2. 宛先の ApsaraDB for ClickHouse インスタンスで、次の SQL ステートメントを実行してデータを移行します。

    INSERT INTO <new_database>.<new_table> 
    SELECT * 
    FROM remote('<old_endpoint>', <old_database>.<old_table>, '<username>', '<password>') 
    [WHERE _partition_id = '<partition_id>']
    SETTINGS max_execution_time = 0, max_bytes_to_read = 0, log_query_threads = 0, max_result_rows = 0, min_insert_block_size_rows = 4294967296, min_insert_block_size_bytes = 1073741824;
    説明

    バージョン 20.8 の場合は、まず remoteRaw 関数を使用してデータ移行を実行してください。移行が失敗した場合は、マイナーバージョンのアップグレードをリクエストできます。

    INSERT INTO <new_database>.<new_table> 
    SELECT * 
    FROM remoteRaw('<old_endpoint>', <old_database>.<old_table>, '<username>', '<password>')
    [WHERE _partition_id = '<partition_id>']
    SETTINGS max_execution_time = 0, max_bytes_to_read = 0, log_query_threads = 0, max_result_rows = 0, min_insert_block_size_rows = 4294967296, min_insert_block_size_bytes = 1073741824;

    パラメーター:

    重要

    _partition_id パラメーターを使用してデータをフィルターできます。これにより、リソース使用量を削減できます。

    (任意) partition_id およびパーツ数を取得するには、次の SQL ステートメントを実行して system.parts テーブルから照会します。

    SELECT partition_id, count(*) AS part_count from clusterAllReplicas(default, system, parts) WHERE `database` = '<old_database>' AND `table` = '<old_table>' GROUP BY partition_id ;

    パラメーター

    説明

    new_database

    宛先の ApsaraDB for ClickHouse インスタンスのデータベース名。

    new_table

    宛先の ApsaraDB for ClickHouse インスタンスのテーブル名。

    old_endpoint

    ソースインスタンスのエンドポイント。

    セルフマネージド ClickHouse

    エンドポイント形式:ソースインスタンスノードの IP アドレス:ポート

    重要

    ポートは TCP ポートである必要があります。

    ApsaraDB for ClickHouse

    ソースインスタンスの VPC 内部エンドポイントを使用します。パブリックエンドポイントは使用できません。

    重要

    ポート 3306 および 9000 は固定値です。

    • コミュニティエディションインスタンス:

      • エンドポイント形式:VPC 内部アドレス:3306

      • 例:cc-2zeqhh5v7y6q*****.clickhouse.ads.aliyuncs.com:3306

    • エンタープライズインスタンス:

      • エンドポイント形式:VPC 内部アドレス:9000

      • 例:cc-bp1anv7jo84ta*****clickhouse.clickhouseserver.rds.aliyuncs.com:9000

    old_database

    セルフマネージドクラスターのデータベース名。

    old_table

    セルフマネージドクラスターのテーブル名。

    username

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

    password

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

    max_execution_time

    クエリの最大実行時間。制限なしにするには 0 を設定します。

    max_bytes_to_read

    クエリがソースデータから読み取ることのできる最大バイト数。制限なしにするには 0 を設定します。

    log_query_threads

    クエリ実行中にスレッド情報をログに記録するかどうかを指定します。ログ記録を無効にするには 0 を設定します。

    max_result_rows

    クエリ結果の最大行数。制限なしにするには 0 を設定します。

    min_insert_block_size_rows

    1 回の書き込みにおけるデータパーツごとの最小行数。行数制限を無効にするには 4294967296 (最大値) を設定します。この設定は min_insert_block_size_bytes と連携して、過剰な小規模パーツを防止します。

    min_insert_block_size_bytes

    1 回の書き込みにおけるデータパーツごとの最小サイズ (バイト単位)。過剰な小規模パーツを防止し、「Too many partitions for a single INSERT block」エラーを回避するために、1073741824 (1 GB) を設定します。

    _partition_id

    データパーティション ID。

ファイルのエクスポートおよびインポート

セルフマネージドクラスターデータベースからファイルにデータをエクスポートし、その後ファイルを宛先の ApsaraDB for ClickHouse インスタンスにインポートします。

  • CSV エクスポートおよびインポート
    1. セルフマネージドクラスターデータベースから CSV ファイルにデータをエクスポートします。

      clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>"  --query="select * from <database_name>.<table_name> FORMAT CSV"  > table.csv
    2. CSV ファイルを宛先の ApsaraDB for ClickHouse インスタンスにインポートします。

      clickhouse-client --host="<new host>" --port="<new port>" --user="<new user name>" --password="<new password>"  --query="insert into <database_name>.<table_name> FORMAT CSV"  < table.csv
  • Linux パイプを使用したストリーム
    clickhouse-client --host="<old host>" --port="<old port>" --user="<user name>" --password="<password>"  --query="select * from <database_name>.<table_name> FORMAT CSV" | 
    clickhouse-client --host="<new host>" --port="<new port>" --user="<user name>" --password="<password>"   --query="INSERT INTO <database_name>.<table_name> FORMAT CSV"

移行チェックエラーとソリューション

エラーメッセージ

説明

ソリューション

一意の分散テーブルが存在しない、または sharding_key が設定されていません。

ローカルテーブル に一意の 分散テーブル が関連付けられていません(セルフマネージドクラスター 内)。

ローカルテーブル に対応する 分散テーブルセルフマネージドクラスター 上に作成してください。

対応する分散テーブルが一意ではありません。

ローカルテーブル が複数の 分散テーブル に対応しています(セルフマネージドクラスター 内)。

セルフマネージドクラスター 上の不要な 分散テーブル を削除し、1 つだけを残してください。

マルチレプリカクラスター上の MergeTree テーブル。

セルフマネージドクラスターマルチレプリカクラスター ですが、非レプリケートテーブル が含まれています。レプリカ 間でデータが不整合となるため、移行はサポートされていません。

マルチレプリカインスタンスのスケーリングや移行時に非レプリケートテーブルが許可されない理由

送信先クラスター上にデータ保持済みのテーブルが存在します。

移行対象のテーブルがすでに 送信先クラスター 上に存在し、データが格納されています。

送信先クラスター から該当のテーブルを削除してください。

分散テーブルとローカルテーブルのカラムが競合しています。

セルフマネージドクラスター 内の 分散テーブルローカルテーブル のカラム定義が一致していません。

セルフマネージドクラスター 上で 分散テーブル を再構築し、そのスキーマが ローカルテーブル と一致するようにしてください。

ストレージ容量が不足しています。

送信先クラスターストレージ容量 が不足しています。

送信先クラスター のディスク ストレージ容量 を増やしてください。送信先クラスター の合計 ストレージ容量 が、セルフマネージドクラスター の使用済み容量の少なくとも 1.2 倍になるように確保してください。詳細については、「コミュニティ互換クラスターの垂直スケーリングおよび水平スケーリング」をご参照ください。

システムテーブルが存在しません。

セルフマネージドクラスター に必要な システムテーブル が存在しません。

セルフマネージドクラスターconfig.xml 設定ファイルを編集し、必要な システムテーブル を作成してください。詳細については、「手順 1:セルフマネージドクラスターを確認し、システムテーブルを有効化する」をご参照ください。

テーブルがノード間で不完全です。

一部の ノード 上にテーブルが存在しません。

異なる シャード 上に同じ名前のテーブルを作成してください。マテリアライズドビュー の内部テーブルの場合は、内部テーブルの名前を変更した後、マテリアライズドビュー を再構築して、名前変更後のテーブルを参照するようにしてください。詳細については、「マテリアライズドビューの内部テーブルがシャード間で不整合」をご参照ください。

移行後のマージ時間の算出

移行後、送信先クラスターでは一時的に頻繁なマージ操作が実行されます。これにより I/O 使用率が増加し、サービスリクエストのレイテンシが高くなる可能性があります。読み取りおよび書き込みのレイテンシに敏感なサービスを運用している場合は、インスタンスタイプおよび ESSD パフォーマンスレベルをアップグレードして、この高 I/O 使用率期間を短縮することを推奨します。詳細については、「コミュニティ互換クラスターの縦スケーリング、スケールアウト、スケールイン」をご参照ください。

移行後のマージ時間を算出するには、以下の数式を使用します。

説明

これらの数式は、シングルレプリカクラスターおよびマスターレプリカクラスターの両方に適用されます。

  • 頻繁なマージ操作にかかる推定総時間 = MAX(ホットデータマージ時間, コールドデータマージ時間)

    • ホットデータマージ時間 = シングルノード上のホットデータ量 * 2 / MIN(インスタンスタイプ帯域幅, ディスク帯域幅 * n)

    • コールドデータマージ時間 = (コールドデータ量 / ノード数) / MIN(インスタンスタイプ帯域幅, OSS 読み取り帯域幅) + (コールドデータ量 / ノード数) / MIN(インスタンスタイプ帯域幅, OSS 書き込み帯域幅)

以下のリストは、数式で使用されるパラメーターの説明です。

  • シングルノード上のホットデータ量: この値は、[ディスク使用量 - シングルノード統計] 行で確認できます。詳細については、「クラスターモニタリング情報の表示」をご参照ください。

  • インスタンスタイプ帯域幅

    説明

    これらの帯域幅値は絶対的なものではなく、ApsaraDB for ClickHouse バックエンドで使用されるマシンタイプによって異なります。記載されている値は最小値であり、参考値としてのみご利用ください。

    仕様

    帯域幅 (MB/s)

    標準 8 コア 32 GB

    250

    標準 16 コア 64 GB

    375

    標準 24 コア 96 GB

    500

    標準 32 コア 128 GB

    625

    標準 64 コア 256 GB

    1250

    標準 80 コア 384 GB

    2000

    標準 104 コア 384 GB

    2000

  • ディスク帯域幅:ESSD パフォーマンスレベル の表にある ディスクあたりの最大スループット (MB/s) 行からこの値を確認します

  • n:シングルノード上のディスク数。この値を取得するには、次のコマンドを実行します:SELECT count() FROM system.disks WHERE type = 'local';

  • コールドデータ量:この値は、clickhouse_cold_storage_data 行で確認できます。詳細については、「クラスターモニタリング情報の確認」をご参照ください。

  • ノード数:クラスター内のノード数。この値を取得するには、次のコマンドを実行します:SELECT count() FROM system.clusters WHERE cluster = 'default' and replica_num=1;

  • OSS 読み取り帯域幅:OSS 帯域幅 の表にある イントラネットおよびインターネット合計ダウンロード帯域幅 列からこの値を確認します

  • OSS 書き込み帯域幅:OSS 帯域幅 の表にある イントラネットおよびインターネット合計アップロード帯域幅 列からこの値を確認します

よくある質問

  • Q:「Too many partitions for single INSERT block (more than 100)」エラーを解決するにはどうすればよいですか?

    A:このエラーは、単一の INSERT 操作が max_partitions_per_insert_block 制限(デフォルト値は 100)を超えるために発生します。ClickHouse では、各書き込み操作によりデータパーツが作成され、1 つのパーティションに 1 つ以上のデータパーツが含まれる場合があります。単一の INSERT 操作で多数のパーティションにデータを書き込むと、過剰な数のデータパーツが生成され、マージおよびクエリのパフォーマンスが著しく低下する可能性があります。ClickHouse は、このようなパフォーマンス劣化を防ぐためにこの制限を設けています。

    この問題を解決するには、パーティション数を調整するか、max_partitions_per_insert_block パラメーターを変更してください。

    • テーブルスキーマやパーティショニング方法を調整するか、単一の操作で多数の異なるパーティションにデータを挿入しないようにしてください。

    • 一度に多数のパーティションにデータを挿入する必要がある場合は、max_partitions_per_insert_block パラメーターを変更して制限値を引き上げることができます。構文は次のとおりです。

      SET GLOBAL ON cluster DEFAULT max_partitions_per_insert_block = XXX;
      説明

      ClickHouse コミュニティでは、デフォルト値の 100 を使用することを推奨しています。この値を高すぎに設定するとパフォーマンスが劣化する可能性があるため、注意してください。バッチデータインポート後は、この値をデフォルトに戻すことを推奨します。

  • Q:宛先の ApsaraDB for ClickHouse インスタンスから自己管理データベースへの接続が失敗するのはなぜですか?

    A:自己管理データベースがファイアウォールの背後にあるか、ホワイトリストを使用している場合にこの問題が発生します。これを解決するには、ApsaraDB for ClickHouse クラスターの vSwitch の IPv4 CIDR ブロックを、自己管理データベースのホワイトリストに追加してください。ApsaraDB for ClickHouse クラスターの vSwitch の IPv4 CIDR ブロックを取得する方法については、「IPv4 CIDR ブロックの確認」をご参照ください。

  • Q:マルチレプリカインスタンスをスケーリングまたは移行する際に、非 Replicated テーブルが許可されないのはなぜですか?また、既存の非 Replicated テーブルがある場合、どのように対処すればよいですか?

    A:この制限の理由と対処方法は次のとおりです。

    • 理由:マルチレプリカインスタンスでは、レプリカ間でデータを同期するために Replicated テーブルが必要です。Replicated テーブルが存在しない場合、マルチレプリカ構成は効果を発揮しません。移行ツールは、ランダムに 1 つのレプリカをデータソースとして選択し、そのデータを宛先インスタンスに移行します。

      非 Replicated テーブルが存在する場合、レプリカ間でデータが同期されず、各レプリカが独立したデータを保持します。移行ツールは 1 つのレプリカからのみデータを移行するため、このプロセスによりデータ損失が発生します。たとえば、下図のように、レプリカ 0(r0)上の MergeTree テーブルにはデータ 1、2、3 が含まれ、レプリカ 1(r1)上の MergeTree テーブルにはデータ 4、5 が含まれているとします。移行ツールが r0 をソースとして選択した場合、データ 1、2、3 のみが宛先インスタンスに移行されます。

    • ソリューション:ソースインスタンス内の非 Replicated テーブルを削除できる場合は、削除することを推奨します。削除できない場合は、非 Replicated テーブルを Replicated テーブルに置き換えてください。手順は次のとおりです。

      1. ソースインスタンスにログインします。

      2. Replicated テーブルを作成します。エンジンを除き、テーブルスキーマは置き換え対象の非 Replicated テーブルと同一である必要があります。

      3. 非 Replicated テーブルから新しい Replicated テーブルへ手動でデータを移行します。移行文は次のとおりです。

        重要

        この移行操作は各レプリカに対して個別に実行する必要があります。たとえば、r0 および r1 の両方で文を実行する必要があります。

        文内で使用するノード IP アドレスは、SELECT * FROM system.clusters; を実行することで取得できます。

        INSERT INTO <destination_database>.<new_replicated_table> 
        SELECT * 
        FROM remote('<node_IP_address>:3003', '<source_database>', '<non_replicated_table_to_replace>', '<username>', '<password>')
        [WHERE _partition_id = '<partition_id>']
        SETTINGS max_execution_time = 0, max_bytes_to_read = 0, log_query_threads = 0, min_insert_block_size_rows = 4294967296, min_insert_block_size_bytes = 1073741824;
      4. 非 Replicated テーブルと Replicated テーブルの名前を交換します。

      EXCHANGE TABLES <source_database>.<non_replicated_table_to_replace> AND <destination_database>.<new_replicated_table> ON CLUSTER default;