このトピックでは、ApsaraDB for ClickHouseに関するよくある質問 (FAQ) に対する回答を提供します。
選択と購入
スケールアウトとスケールイン
接続
移行と同期
ApsaraDB for ClickHouseクラスターにデータをインポートするときに「部品が多すぎます」というエラーメッセージが表示された場合はどうすればよいですか?
DataXを使用してApsaraDB for ClickHouseクラスターのテーブルにデータをインポートするのに長い時間がかかるのはなぜですか。
テーブル間でデータが同期された後、HiveインスタンスのテーブルとApsaraDB for ClickHouseクラスターの外部テーブル間で行数が一致しないのはなぜですか。
テーブル間でデータが同期された後、KafkaインスタンスのテーブルとApsaraDB for ClickHouseクラスターの外部テーブル間で行数が一致しないのはなぜですか。
SparkまたはFlinkを使用してApsaraDB for ClickHouseクラスターにデータをインポートする方法を教えてください。
セルフマネージドClickHouseデータベースからApsaraDB for ClickHouseクラスターにデータを移行するにはどうすればよいですか。
「単一のINSERTブロックのパーティションが多すぎます (100以上) 」というエラーメッセージが表示された場合はどうすればよいですか?
データの書き込みとクエリ
INSERT INTO SELECTステートメントを実行してメモリ使用量がしきい値を超えたためにエラーが発生した場合はどうすればよいですか。
テーブルにデータが書き込まれていないときにテーブルからデータをクエリするために同じステートメントを実行するたびに異なるクエリ結果が返される場合はどうすればよいですか?
作成したテーブルが見つからないのはなぜですか。また、同じステートメントを実行するたびに異なる数のレコードが返される場合はどうすればよいですか。
テーブルからクエリされるタイムスタンプデータが、テーブルに書き込まれるタイムスタンプデータと異なる場合はどうすればよいですか。
外部テーブルからデータを書き込んだ後、Kafka外部テーブルのデータを格納するローカルテーブルのデータ量が変更されないのはなぜですか。
ApsaraDB for ClickHouseクライアントに表示される時間とタイムゾーンが、ApsaraDB for ClickHouseサーバーに表示される時間とタイムゾーンと異なるのはなぜですか。
ApsaraDB for ClickHouseでDDLステートメントを実行して列を作成、削除、または変更するにはどうすればよいですか。
DDLステートメントが分散方式で実行されたときに「distributed_ddl_task_timeout (=xxx) 秒より長い」エラーが返された場合はどうすればよいですか?
データストレージ
監視、アップグレード、およびシステムパラメータ
ApsaraDB for ClickHouseのオープンソースのClickHouseと比較したユニークな機能は何ですか?
安定性を確保するために、ApsaraDB for ClickHouseでオープンソースのClickHouseの複数のバグが修正されました。 ApsaraDB for ClickHouseは、ユーザーにバインドされているリソースキューに優先順位を割り当てるためのリソースキュー機能を提供します。
購入に推奨されるApsaraDB for ClickHouseクラスターのバージョン
ApsaraDB for ClickHouseは、オープンソースコミュニティによってリリースされた長期サポート (LTS) カーネルバージョンに基づいたサービスを提供します。 ほとんどの場合、カーネルバージョンがリリース後3か月以上安定している場合は、そのカーネルバージョンを使用するApsaraDB for ClickHouseクラスターを購入できます。 V21.8以降のApsaraDB for ClickHouseクラスターを購入することを推奨します。 異なるカーネルバージョン間の機能比較の詳細については、「異なるカーネルバージョン間の機能比較」をご参照ください。
シングルレプリカエディションとダブルレプリカエディションの違いは何ですか?
Single-replica EditionのApsaraDB For ClickHouseクラスターの場合、レプリカシャードはありません。 このエディションでは、高可用性を確保できません。 Single-replica EditionのApsaraDB for ClickHouseクラスターは、データの複数のコピーを作成し、データをディスクに保存します。 このエディションは費用対効果が高く、データのセキュリティを保証します。
Double-replica EditionのApsaraDB for ClickHouseクラスターでは、各シャードにレプリカシャードがあります。 これにより、ディザスタリカバリが可能になります。 クラスター内のシャードが使用できなくなると、そのレプリカシャードが引き継ぎます。
ApsaraDB for ClickHouseクラスターを作成するときに、選択したゾーンでリソースが不足している場合はどうすればよいですか。
同じリージョンで別のゾーンを選択できます。 同じ仮想プライベートクラウド (VPC) 内のApsaraDB for ClickHouseクラスターは、同じリージョンの異なるゾーンのリソースを使用できます。 同じリージョンのサービスは、ネットワーク遅延の影響を受けません。
クラスターのスケールアウトまたはスケールインに必要な時間に影響する要因は何ですか?
データは、クラスターのスケールアウトまたはスケールイン中に移行されます。 大量のクラスタデータは、スケーリングに長時間を要する。
スケールアウトまたはスケールイン中にクラスターはどのように影響しますか?
クラスターをスケールアウトまたはスケールインすると、クラスターは読み取り専用になります。 これにより、データの移行後のデータの整合性が確保されます。
水平スケーリングの提案は何ですか?
水平スケーリングは、完了するまでに長い時間がかかることがある。 クラスターのパフォーマンスがビジネス要件を満たさない場合は、クラスターをスケールアップすることを推奨します。 クラスターをスケールアップする方法の詳細については、「ApsaraDB For ClickHouse Community-compatible Editionクラスターの設定の変更」をご参照ください。
ポートはどのように機能しますか?
プロトコル | ポート | シナリオ |
TCP | 3306 | このポートは、clickhouse-clientツールを使用してApsaraDB for ClickHouseクラスターに接続するときに使用されます。 詳細については、「ApsaraDB For ClickHouseのCLIを使用したクラスターへの接続」をご参照ください。 |
HTTP | 8123 | このポートは、Java Database Connectivity (JDBC) を使用して、アプリケーション開発用のApsaraDB for ClickHouseクラスターに接続する場合に使用されます。 詳細については、「JDBCを使用したApsaraDB For ClickHouseクラスターへの接続」をご参照ください。 |
HTTPS | 8443 | このポートは、HTTPSを使用してApsaraDB for ClickHouseクラスターに接続する場合に使用されます。 詳細については、「HTTPS経由でApsaraDB For ClickHouseクラスターに接続する」をご参照ください。 |
ApsaraDB for ClickHouseクラスターに接続するために、各プログラミング言語でSDKが使用するポートは何ですか。
プログラミング言语 | HTTP | TCP |
Java | 8123 | 3306 |
Python | ||
Go |
GoまたはPythonに推奨されるSDKは何ですか?
詳細については、「サードパーティ開発者のクライアントライブラリ」をご参照ください。
クライアントツールを使用してApsaraDB for ClickHouseクラスターに接続するときに、「connect timed out」というエラーメッセージが表示された場合はどうすればよいですか。
この問題を解決するには、次の操作を実行します。
ネットワーク接続が確立されているかどうかを確認します。
ping
コマンドを実行して、ネットワーク接続のステータスを確認できます。telnet
コマンドを実行して、ApsaraDB for ClickHouseクラスターのポート3306とポート8123が有効になっているかどうかを確認することもできます。接続先のApsaraDB for ClickHouseクラスターにホワイトリストが設定されているかどうかを確認します。 ApsaraDB For ClickHouseクラスターのホワイトリストを設定する方法の詳細については、「ホワイトリストの設定」をご参照ください。
クライアントの実際のIPアドレスが使用されているかどうかを確認します。 企業の内部ネットワークを介して接続されているマシンのIPアドレスは頻繁に変更されます。 このように、取得するクライアントIPアドレスは、クライアントの実際のIPアドレスではない可能性があります。 WhatsMyIPなどのIPアドレスチェックツールを使用して、クライアントの実際のIPアドレスを取得できます。 詳細については、「WhatsMyIP」をご参照ください。
ApsaraDB for ClickHouseクラスターの外部テーブルを、MySQL、Hadoop分散ファイルシステム (HDFS) 、Kafkaなどのプラットフォーム上のテーブルに接続できないのはなぜですか。
V20.3またはV20.8のApsaraDB for ClickHouseクラスターに外部テーブルを作成すると、システムはApsaraDB for ClickHouseクラスターと外部プラットフォーム間のネットワーク接続を自動的に検証します。 外部テーブルが作成されると、ネットワーク接続が確立されます。 次のいずれかの原因により、外部テーブルの作成に失敗することがあります。
接続するテーブルは、ApsaraDB for ClickHouseクラスターと同じVPCにないクラスターにデプロイされています。 この場合、ネットワーク接続が確立されない。
接続先のMySQLインスタンスにホワイトリストが設定されています。 ApsaraDB for ClickHouseクラスターが接続されているVPCのCIDRブロックはホワイトリストに含まれていません。 この場合、CIDRブロックをホワイトリストに追加します。
たとえば、ApsaraDB For ClickHouseクラスターに外部テーブルを作成します。 外部テーブルは、Kafkaインスタンス内のテーブルに接続されています。 外部テーブルからデータをクエリすると、結果は返されません。 一般的な原因は、外部テーブルのスキーマで定義されているフィールドと形式に基づいて、Kafkaインスタンスのデータが解析されないことです。 エラーメッセージは、解析エラーに関する情報を返します。
アプリケーションがApsaraDB for ClickHouseクラスターへの接続に失敗するのはなぜですか。
この問題については、次のセクションで一般的な原因と解決策を説明します。
原因1: VPC設定またはインターネットアクセス設定が不適切です。 アプリケーションとクラスターが同じVPCにデプロイされている場合、内部ネットワークを介してアプリケーションをクラスターに接続できます。 アプリケーションとクラスターが異なるVPCにデプロイされている場合は、クラスターのパブリックエンドポイントを申請します。
解決策: アプリケーションとクラスターが異なるVPCにデプロイされている場合は、クラスターのパブリックエンドポイントを申請します。 詳細については、「パブリックエンドポイントの申請とリリース」をご参照ください。
原因2: アプリケーションのIPアドレスがクラスターのホワイトリストに追加されていません。
解決策: アプリケーションのIPアドレスをクラスターのホワイトリストに追加します。 詳細は、ホワイトリストの構成をご参照ください。
原因3: クラスターが実行されているElastic Compute Service (ECS) インスタンスのセキュリティグループがアクセストラフィックを拒否します。
解決策: クラスターが実行されるElastic Compute Service (ECS) インスタンスのセキュリティグループを有効にして、アクセストラフィックを許可します。 詳細については、「セキュリティグループの操作」をご参照ください。
原因4: 企業がネットワークファイアウォールを使用しています。
解決策: ファイアウォールのルールを変更します。
原因5: 接続文字列のアカウントパスワードには、
!@#$%^& *()_+=
のいずれかの特殊文字が含まれています。 これらの特殊文字は接続中に認識できません。 その結果、アプリケーションはApsaraDB for ClickHouseクラスターへの接続に失敗します。解決策: 次のエスケープルールを使用して、接続文字列内の特殊文字をエスケープします。
! : %21 @ : %40 # : %23 $ : %24 % : %25 ^ : %5e & : %26 * : %2a ( : %28 ) : %29 _ : %5f + : %2b = : %3d
たとえば、パスワードが
ab @#c
の場合、パスワードのエスケープ文字は接続文字列のab % 40% 23c
です。原因6: ApsaraDB for ClickHouseクラスターは、デフォルトでClassic Load Balancer (CLB) インスタンスにアタッチされています。 CLBインスタンスは、従量課金で課金されます。 Alibaba Cloudアカウントに料金滞納がある場合、ApsaraDB for ClickHouseクラスターにアクセスできない可能性があります。
解決策: Alibaba Cloudアカウントに料金滞納があるかどうかを確認します。 延滞支払いが存在する場合は、できるだけ早い機会に延滞支払いを返済してください。
ApsaraDB for ClickHouseクラスターのタイムアウトエラーを解決するにはどうすればよいですか?
ApsaraDB for ClickHouseのカーネルは、複数のタイムアウト関連パラメーターを提供し、対話用の複数のプロトコルをサポートします。 たとえば、HTTPおよびTCPに関連するパラメーターを設定して、ApsaraDB For ClickHouseクラスターのタイムアウトエラーを解決できます。
HTTP
HTTPは、本番環境でApsaraDB for ClickHouseクラスターによって使用される最も一般的な対話プロトコルです。 ClickHouseが提供するJava Database Connectivity (JDBC) ドライバー、Alibaba Cloud Data Management (DMS) 、DataGripなど、多くのツールとサービスがHTTPを採用しています。 共通HTTPポートは8123です。
distributed_ddl_task_timeoutパラメーターの設定によるタイムアウトの処理
distributed_ddl_task_timeoutパラメーターは、on cluster句を含む分散DDLクエリのタイムアウト期間を指定します。 デフォルト値は180 (秒単位) です。 DMSで次のステートメントを実行して、このパラメーターをグローバルに設定できます。 パラメーターを設定した後、クラスターを再起動します。
set global on cluster default distributed_ddl_task_timeout = 1800;
分散DDLクエリは、ZooKeeperノードで作成されたタスクキューに基づいて非同期に実行されます。 分散DDLクエリがタイムアウトしても、クエリは失敗していない可能性があります。 分散DDLクエリがタイムアウトすると、クエリはキューで実行されるのを待ちます。 クエリを再送信する必要はありません。
max_execution_timeパラメーターを設定してタイムアウトを処理する
max_execution_timeパラメーターは、クエリのタイムアウト期間を指定します。 クエリのデフォルトのタイムアウト時間は、DMSで7,200秒、JDBCドライバとDataGripで30秒です。 クエリの待機時間が指定されたタイムアウト期間を超えると、クエリは自動的にキャンセルされます。 このパラメーターは、クエリ文で設定できます。 たとえば、
select * from system.numbers settings max_execution_time = 3600
というクエリ文を実行できます。 DMSで次のステートメントを実行して、このパラメーターをグローバルに設定することもできます。set global on cluster default max_execution_time = 3600;
socket_timeoutパラメーターの設定によるタイムアウトの処理
socket_timeoutパラメーターは、クライアントがHTTP経由でソケットをリッスンして結果を待つタイムアウト期間を指定します。 デフォルトのタイムアウト時間は、DMSで7,200秒、JDBCドライバとDataGripで30秒です。 このパラメーターは、ApsaraDB for ClickHouseの組み込みパラメーターではなく、JDBCドライバーfor HTTPのパラメーターです。 このパラメータは、クライアントが結果を待つ時間制限を指定します。 socket_timeoutパラメーターの設定により、max_execution_timeパラメーターが無効になることがあります。 ほとんどの場合、max_execution_timeパラメーターを設定するときは、socket_timeoutパラメーターも設定する必要があります。 socket_timeoutパラメーターを、max_execution_timeパラメーターの値よりわずかに大きい値に設定します。 socket_timeoutパラメーターを設定するには、socket_timeoutプロパティをJDBC接続文字列に追加します。 値の単位はミリ秒です。 例: 'jdbc:clickhouse:// 127.0.0.1:8123/default?socket_timeout=3600000'
SLB切断の処理
指定された期間内にServer Load Balancer (SLB) 接続を介してデータパケットが送信されない場合、接続は自動的に閉じられ、クライアントは「読み取りタイムアウト」エラーメッセージを受信します。 この場合、接続を介して送信されたクエリを追跡することはできません。 DMSで次のステートメントを実行して、send_progress_in_http_headersおよびhttp_headers_progress_interval_msパラメーターをグローバルに設定できます。 パラメーターを設定したら、クラスターを再起動します。
set global on cluster default send_progress_in_http_headers = 1; set global on cluster default http_headers_progress_interval_ms = 60000;
クラスターのカーネルバージョンが20.8の場合は、次のステートメントを実行します。 次のステートメントを実行した後にパラメーターの設定が有効にならない場合は、マイナーバージョンの更新を申請できます。
set global on cluster default http_server_enable_tcp_keep_alive = 1; set global on cluster default tcp_keep_alive_timeout = 60;
send_progress_in_http_headersパラメーターを1に設定すると、ApsaraDB for ClickHouseサーバーは、クエリの実行の進行状況に関する情報をHTTPヘッダーで含むメッセージをクライアントに継続的に送信します。 このように、データパケットは、接続が閉じられることを防止するために、常に接続を介して送信される。
クライアントがネットワークから切断された場合でも、HTTP経由で送信されるクエリを実行できます。 システムテーブルをクエリして、クエリが実行されたかどうかを確認できます。
ApsaraDB for ClickHouseクラスター内のすべてのノードで実行されているクエリに関する情報を照会します。
SELECT * FROM remote(default, system, processes) WHERE query LIKE 'XXX'
当日に実行されたクエリの実行結果を照会します。 実行結果には、成功したクエリ結果と失敗したクエリに関するエラー情報が含まれます。
SELECT * FROM remote(default, system, query_log) WHERE event_date = toDate(now()) AND query LIKE 'XXX'
サーバーIPアドレスを使用してApsaraDB for ClickHouseサーバーに接続されているクライアントのハングを処理します
ECSインスタンスのJDBCクライアントが別のセキュリティグループのApsaraDB for ClickHouseサーバーにアクセスすると、ECSインスタンスでサイレント接続エラーが発生する可能性があります。 ECSインスタンスが属するセキュリティグループのホワイトリストにApsaraDB for ClickHouseサーバーのIPアドレスが追加されていないため、エラーが発生しました。 システムがクライアントの要求に対するクエリ結果を取得するのに長い時間がかかる場合、ルートテーブルに利用可能なルートがないため、返された結果をクライアントに送信できない可能性があります。 この場合、クライアントはハングします。
この問題を解決するには、send_progress_in_http_headersパラメーターを1に設定します。 この方法は、SLB切断を処理する方法と同じです。 この方法はほとんどの場合機能します。 まれに、send_progress_in_http_headersパラメーターを1に設定すると、この問題が発生します。 パラメーターを1に設定しても問題が解決しない場合は、ApsaraDB for ClickHouseサーバーのIPアドレスをECSインスタンスが属するセキュリティグループのホワイトリストに追加します。 次に、問題が解決したかどうかを確認します。
TCP
TCPは、ApsaraDB for ClickHouseの組み込みコマンドラインツールを使用して対話型分析を実行するシナリオで主に使用されます。 頻繁に使用されるTCPポートは3306です。 TCPキープアライブパケットは、スケジュールされた接続障害検出に使用される。 TCPを使用すると、ソケットのタイムアウトは発生しません。 TCPのタイムアウト関連パラメーターdistributed_ddl_task_timeoutとmax_execution_timeのみを設定する必要があります。 パラメーターは、HTTPのパラメーターと同じ方法で設定できます。
ORCやParquetなどの形式のデータをObject Storage Service (OSS) オブジェクトからApsaraDB for ClickHouseクラスターの外部テーブルにインポートすると、メモリ不足 (OOM) エラーまたはメモリ関連エラーが発生するのはなぜですか。
一般的な原因: メモリ使用量が多い。
この問題を解決するには、次の操作を実行します。
OSSオブジェクトを複数のオブジェクトに分割します。 次に、これらのオブジェクトからApsaraDB for ClickHouseクラスターの外部テーブルにデータをインポートします。
ApsaraDB for ClickHouseクラスターのメモリ容量をスケールアップします。 詳細については、「ApsaraDB For ClickHouse Community互換Editionクラスターの設定の変更」をご参照ください。
ApsaraDB for ClickHouseクラスターにデータをインポートするときに「部品が多すぎます」というエラーメッセージが表示された場合はどうすればよいですか?
データパーツは、ApsaraDB for ClickHouseクラスターのテーブルにデータを書き込むたびに生成されます。 毎回1つのデータレコードのみまたは少量のデータを書き込む場合、ApsaraDB for ClickHouseクラスターに多数のデータ部分が生成されます。 これにより、CPUの使用率が増加し、マージ操作とクエリの実行に必要な時間が増加します。 ApsaraDB for ClickHouseクラスターで大量のデータパーツが生成されないようにするには、生成できるデータパーツの数に制限があります。 ApsaraDB for ClickHouseクラスターで大量のデータパーツが生成された場合、「パーツが多すぎます」というエラーメッセージが返されます。 このエラーが発生した場合は、バッチサイズを大きくして、ApsaraDB for ClickHouseクラスターのテーブルにより多くのデータを毎回書き込みます。 バッチサイズを増やすことができない場合は、ApsaraDB for ClickHouseコンソールでmerge_tree.parts_to_throw_insert
パラメーターをより大きな値に設定できます。
DataXを使用してApsaraDB for ClickHouseクラスターのテーブルにデータをインポートするのに長い時間がかかるのはなぜですか。
この問題については、次のセクションで一般的な原因と解決策を説明します。
原因1: 指定されたパラメーター値がシナリオに適していません。 ApsaraDB for ClickHouseでは、複数のバッチでデータを書き込むことを推奨します。 各バッチに大量のデータが含まれていること、および少数の同時データ書き込みタスクが同時に実行されることを確認します。 ほとんどの場合、データのバッチには数万行、さらには数十万行が含まれる可能性があります。 これは、単一の行のサイズに依存します。 ほとんどの場合、行の推定サイズは100バイトです。 行サイズを見積もり、行サイズに基づいて行数を計算する必要があります。
解決策: 同時書き込み要求の最大数を10に設定します。 パラメータの設定を変更して、もう一度試すことができます。
原因2: DataWorksで作成された排他的リソースグループでは、ECSインスタンスの仕様が低くなっています。 排他的リソースグループでは、CPUコアまたはメモリの仕様が低いため、要求の同時実行性またはアウトバウンド帯域幅に制限が課される可能性があります。 バッチサイズを大きく指定してもメモリ容量が不足している場合、DataWorks Javaプロセスでガベージコレクションが発生する可能性があります。
解決策: DataWorksの出力ログに基づいて、ECSインスタンスの仕様を確認します。
原因3: データソースで読み取り操作を実行するのに長い時間が必要です。
解決策: DataWorksの出力ログでtotalWaitReaderTimeとtotalWaitWriterTimeを検索します。 totalWaitReaderTimeの値がtotalWaitWriterTimeの値よりもはるかに大きい場合、読み出し動作を実行するためには、書き込み動作を実行するために必要な時間よりも長い時間が必要とされる。
原因4: パブリックエンドポイントが使用されています。 パブリックエンドポイントの帯域幅は限られており、高パフォーマンスのデータのインポートまたはエクスポートを保証できません。
解決策: パブリックエンドポイントをVPCエンドポイントに置き換えます。
原因5: データソースにダーティデータが含まれています。 通常、データはバッチで書き込まれます。 ダーティデータがデータソースから読み取られた場合、書き込まれているデータのバッチは失敗し、データの行が毎回書き込まれます。 また、多数のデータ部が生成される。 これにより、書き込み動作が遅くなる。
ダーティデータが書き込まれているかどうかは、次の方法で確認できます。
データを照会し、返されたエラーメッセージを確認します。 メッセージに
「解析できません」
が含まれている場合、ダーティデータが書き込まれます。次のサンプルコードを実行できます。
SELECT written_rows, written_bytes, query_duration_ms, event_time, exception FROM system.query_log WHERE event_time BETWEEN '2021-11-22 22:00:00' AND '2021-11-22 23:00:00' AND lowerUTF8(query) LIKE '%insert into <table_name>%' and type != 'QueryStart' and exception_code != 0 ORDER BY event_time DESC LIMIT 30;
データのバッチが書き込まれた後、行数を確認します。 行数が1の場合、ダーティデータが書き込まれます。
次のサンプルコードを実行できます。
SELECT written_rows, written_bytes, query_duration_ms, event_time FROM system.query_log WHERE event_time BETWEEN '2021-11-22 22:00:00' AND '2021-11-22 23:00:00' AND lowerUTF8(query) LIKE '%insert into <table_name>%' and type != 'QueryStart' ORDER BY event_time DESC LIMIT 30;
解決策: データソース内のダーティデータを削除または変更します。
テーブル間でデータが同期された後、HiveインスタンスのテーブルとApsaraDB for ClickHouseクラスターの外部テーブル間で行数が一致しないのはなぜですか。
表間の行数の不整合の原因を特定するには、次の手順を実行します。
query_logという名前のシステムテーブルに基づいて、データ同期中にエラーが報告されているかどうかを確認します。 エラーが報告されると、データ損失が発生する可能性があります。
使用するテーブルエンジンで重複を削除できるかどうかを確認します。 ReplacingMergeTreeを使用している場合、ApsaraDB for ClickHouseクラスターの外部テーブルは、Hiveインスタンスのテーブルと比較して行数が少ない場合があります。
Hiveインスタンスに格納されているテーブルの行数が正しいかどうかを確認します。
テーブル間でデータが同期された後、KafkaインスタンスのテーブルとApsaraDB for ClickHouseクラスターの外部テーブル間で行数が一致しないのはなぜですか。
表間の行数の不整合の原因を特定するには、次の手順を実行します。
query_logという名前のシステムテーブルに基づいて、データ同期中にエラーが報告されているかどうかを確認します。 エラーが報告されると、データ損失が発生する可能性があります。
使用するテーブルエンジンで重複を削除できるかどうかを確認します。 ReplacingMergeTreeを使用する場合、ApsaraDB for ClickHouseクラスターの外部テーブルは、Kafkaインスタンスのテーブルと比較して行数が少ない場合があります。
外部テーブルにkafka_skip_broken_messagesパラメーターが設定されているかどうかを確認します。 このパラメーターが設定されている場合、ApsaraDB for ClickHouseは、解析に失敗したKafkaメッセージをスキップする可能性があります。 その結果、ApsaraDB for ClickHouseクラスターの外部テーブルは、Kafkaインスタンスのテーブルよりも行数が少ない場合があります。
SparkまたはFlinkを使用してApsaraDB for ClickHouseクラスターにデータをインポートする方法を教えてください。
Sparkを使用してApsaraDB For ClickHouseクラスターにデータをインポートする方法の詳細については、「Sparkプログラムを使用してデータをインポートする」をご参照ください。
Flinkを使用してApsaraDB For ClickHouseクラスターにデータをインポートする方法の詳細については、「SQLステートメントを使用してFlinkデータをApsaraDB for ClickHouseクラスターに書き込む」をご参照ください。
セルフマネージドClickHouseデータベースからApsaraDB for ClickHouseクラスターにデータを移行するにはどうすればよいですか。
この問題を解決するには、次の操作を実行します。
clickhouse-clientを使用して、ファイルをエクスポートしてデータを移行します。 詳細については、「セルフマネージドClickHouseクラスターからApsaraDB For ClickHouseクラスターへのデータの移行」をご参照ください。
次の文を実行して, リモート関数でデータを移行します。
INSERT INTO <Destination table> SELECT * FROM remote('<Connection string>', '<Database>', '<Table>', '<Username>', '<Password>');
なぜ "スレーブはCHANGE MASTER TO MASTe_AUTO_POSITION=1を使用して接続していますが、マスターはスレーブが必要とするGTIDを含むバイナリログをパージしています"
MaterializeMySQLエンジンを使用してMySQLデータを同期するとエラーが報告されます
一般的な原因: MaterializeMySQLエンジンが長期間データの同期を停止しました。 その結果、MySQLバイナリログの有効期限が切れ、システムはログをクリアしました。
解決策: エラーを報告したデータベースを削除し、ApsaraDB for ClickHouseでMaterializeMySQLエンジンを使用するデータベースを作成します。
MaterializeMySQLエンジンを使用してMySQLデータを同期すると、テーブルのデータ同期が停止するのはなぜですか。 system.materialize_mysqlシステムテーブルのsync_failed_tables
フィールドがnullでないのはなぜですか。
一般的な原因: 同期中に実行されるMySQL DDLステートメントは、ApsaraDB for ClickHouseでサポートされていません。
解決策: MySQLデータの別の同期を実行するには、次の手順を実行します。
データ同期が停止したテーブルを削除します。
DROP TABLE <table_name> ON cluster default;
説明table_name
パラメーターは、データ同期が停止したテーブルの名前を指定します。 データ同期を停止したテーブルが分散テーブルの場合は, ローカルテーブルと分散テーブルを削除する必要があります。データ同期を再起動します。
ALTER database <database_name> ON cluster default MODIFY SETTING skip_unsupported_tables = 1;
説明<database_name>
パラメーターは、ApsaraDB for ClickHouseでMaterializeMySQLエンジンを使用するデータベースの名前を指定します。
「単一のINSERTブロックのパーティションが多すぎます (100以上) 」というエラーメッセージが表示された場合はどうすればよいですか?
一般的な原因: 単一のINSERT操作で指定された単一の挿入ブロック内のパーティションの数が、max_partitions_per_insert_blockの値を超えています。 max_partitions_per_insert_blockのデフォルト値は100です。 ApsaraDB for ClickHouseは、書き込み操作ごとにデータ部分を生成します。 パーティションは、1つ以上のデータ部分を含み得る。 1つのINSERT操作で過度に多数のパーティションが挿入されると、ApsaraDB for ClickHouseで大量のデータパーツが生成され、マージ操作やクエリ操作に大きな負担がかかる可能性があります。 大量のデータパーツが生成されないようにするために、ApsaraDB for ClickHouseは一定の制限を課しています。
解決策: 次の操作を実行して、パーティションの数またはmax_partitions_per_insert_blockの値を調整します。
テーブルスキーマとパーティション分割モードを調整するか、一度に挿入されるパーティションの数が上限を超えないようにします。
一度に挿入するパーティションの数が上限を超えないようにするには、次のいずれかのステートメントを実行して、データ量に応じてmax_partitions_per_insert_blockの値を変更し、一度に挿入できるパーティションの数の上限を増やします。
単一ノードクラスター
SET GLOBAL max_partitions_per_insert_block = XXX;
マルチノードクラスター
SET GLOBAL ON cluster DEFAULT max_partitions_per_insert_block = XXX;
説明ClickHouseでは、max_partitions_per_insert_blockの推奨デフォルト値は100です。 max_partitions_per_insert_blockを大きすぎる値に設定しないでください。 そうしないと、パフォーマンスに影響を与える可能性があります。 バッチでデータをインポートした後、max_partitions_per_insert_blockの値をデフォルト値に変更できます。
INSERT INTO SELECTステートメントを実行してメモリ使用量がしきい値を超えたためにエラーが発生した場合はどうすればよいですか。
この問題については、次のセクションで一般的な原因と解決策を説明します。
原因1: メモリ使用量が多い。
解決策: max_insert_threadsパラメーターの設定を変更して、メモリ使用量を減らします。
原因2:
INSERT INTO SELECT
ステートメントを実行して、あるApsaraDB for ClickHouseクラスターから別のクラスターにデータをインポートしました。解決策: ファイルをターゲットクラスターにインポートしてデータを移行します。 詳細については、「セルフマネージドClickHouseクラスターからApsaraDB For ClickHouseクラスターへのデータの移行」をご参照ください。
CPU使用率とメモリ使用量を照会するにはどうすればよいですか?
system.query_logテーブルでCPU使用率とメモリ使用率のログを表示できます。 このテーブルには、各クエリのCPU使用率とメモリ使用率に関する統計が含まれています。 詳細については、「system.query_log」をご参照ください。
クエリ実行時にシステムのメモリ使用量がしきい値を超えた場合はどうすればよいですか?
ApsaraDB for ClickHouseサーバーは、各クエリスレッドにメモリトラッカーを提供します。 各クエリのすべてのスレッドのメモリトラッカーは、クエリ用のメモリトラッカーと呼ばれるメモリトラッカーにメモリ使用量を報告します。 次に、クエリ用のメモリトラッカは、取得した情報を、合計でメモリトラッカと名付けられた上位層のメモリトラッカに報告する。 この問題を解決するには、シナリオに基づいて次の操作を実行します。
「Memory limit (for query) 」
メッセージが返された場合、クラスタメモリの70% 以上がクエリによって消費されます。 メモリ仕様をスケールアップすることを推奨します。「メモリ制限 (合計) 」
メッセージが返された場合、クラスタメモリの90% 以上が消費されます。 同時クエリの数を減らすことを推奨します。 この操作を実行しても問題が解決しない場合は、バックグラウンドで非同期タスクによって大量のメモリが消費される可能性があります。 ほとんどの場合、データが書き込まれた後に同じプライマリキー値を含むレコードの重複排除は、大量のメモリを消費します。 メモリ仕様をスケールアップすることを推奨します。
同時クエリの数が上限を超えた場合はどうすればよいですか?
デフォルトでは、ApsaraDB for ClickHouseサーバーでの同時クエリの最大数は100です。 ApsaraDB for ClickHouseコンソールで値を変更できます。 同時クエリの最大数を変更するには、次の手順を実行します。
ApsaraDB for ClickHouseコンソールにログインします。
[クラスター] ページで、[デフォルトインスタンス] タブをクリックし、管理するクラスターのIDをクリックします。
クラスターの詳細ページの左側のナビゲーションウィンドウで、[パラメーター設定] をクリックします。
max_concurrent_queriesパラメーターの値を変更します。 有効な値を入力し、[OK] をクリックします。
[パラメーターの送信] をクリックします。
[OK] をクリックします。
テーブルにデータが書き込まれていないときにテーブルからデータをクエリするために同じステートメントを実行するたびに異なるクエリ結果が返される場合はどうすればよいですか?
SELECT COUNT(*)
ステートメントに対して返される数は、データレコードの総数の約半分であるか、または同じステートメントに対して異なるクエリ結果が返される場合があります。
この問題を解決するには、次の操作を実行します。
ApsaraDB for ClickHouseクラスターがマルチノードクラスターであるかどうかを確認します。 ApsaraDB for ClickHouseクラスターに複数のノードがある場合、ノードに分散テーブルを作成する必要があります。 次に、分散テーブルにデータを書き込み、分散テーブルからデータをクエリできます。 これにより、文を実行して分散テーブルからデータをクエリするたびに、同じクエリ結果が返されます。 分散テーブルを使用しない場合、ステートメントを実行するたびに異なるシャードのデータが照会される可能性があります。 その結果、同じステートメントに対して異なるクエリ結果が返されます。 分散テーブルの作成方法の詳細については、「テーブルの作成」をご参照ください。
ApsaraDB for ClickHouseクラスターがDouble-replica Editionであるかどうかを確認します。 Double-replica EditionのApsaraDB for ClickHouseクラスターを使用する場合は、ノードにレプリケートされたテーブルを作成します。 これにより、ノードのレプリカ間でデータの一貫性が確保されます。 レプリケートされたテーブルを作成しない場合、クエリ結果は、クエリされるレプリカによって異なる場合があります。 レプリケートされたテーブルを作成する方法の詳細については、「テーブルエンジン」をご参照ください。
作成したテーブルが見つからないのはなぜですか。また、同じステートメントを実行するたびに異なる数のレコードが返される場合はどうすればよいですか。
この問題については、次のセクションで一般的な原因と解決策を説明します。
原因1: 無効なDDLステートメントを使用して、ApsaraDB for ClickHouseクラスターにテーブルが作成されます。 分散ApsaraDB for ClickHouseクラスターにテーブルを作成するには、create tableステートメントにON clusterデフォルト句を含める必要があります。
CREATE TABLE
文のみを実行すると、クライアントが接続されているサーバー上にのみテーブルが作成されます。 この場合、このテーブルからのみデータをクエリできます。 クライアントを別のサーバーに接続すると、テーブルが見つかりません。解決策:
テーブルを作成するときは、
create table <table_name> ON CLUSTER default
ステートメントを実行します。ON CLUSTER default
句により、このステートメントはデフォルトクラスター内のすべてのノードで実行されます。 次のサンプル文は例を示します。CREATE TABLE test ON cluster default (a UInt64) Engine = MergeTree() ORDER BY tuple();
testという名前のテーブルに分散テーブルエンジンを作成します。 次のステートメントを実行して、test_disという名前の分散テーブルを作成できます。
CREATE TABLE test_dis ON cluster default AS test Engine = Distributed(default, default, test, cityHash64(a));
原因2: ReplicatedMergeTreeテーブルの設定が正しくありません。 ReplicatedMergeTreeテーブルエンジンは、MergeTreeテーブルエンジンに基づいて開発され、レプリケートされたテーブル間でデータを同期するために使用できます。 シングルレプリカエディションのApsaraDB for ClickHouseクラスターで作成できるのは、MergeTreeテーブルエンジンのみです。 Double-replica EditionのApsaraDB for ClickHouseクラスターで作成できるのは、ReplicatedMergeTreeテーブルエンジンのみです。
解決策: Double-replica EditionのApsaraDB for ClickHouseクラスターでテーブルを作成する場合、
ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}')
またはReplicatedMergeTree()
を使用して、ReplicatedMergeTreeテーブルエンジンを設定します。ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}')
は固定構成であり、変更する必要はありません。
テーブルからクエリされるタイムスタンプデータが、テーブルに書き込まれるタイムスタンプデータと異なる場合はどうすればよいですか。
SELECT timezone()
文を実行して、クラスターのタイムゾーンを照会します。 クラスターがローカルタイムゾーンを使用していない場合は、timezoneパラメーターをローカルタイムゾーンに設定します。 パラメーターの値を変更する方法の詳細については、同時クエリの数が上限を超えた場合はどうすればよいですか?
テーブルからデータをクエリするときに作成されたテーブルが見つからない場合はどうすればよいですか?
一般的な原因: DDL文は1つのノードでのみ実行されます。
解決策: テーブルを作成するために実行したDDLステートメントにon cluster
キーワードが含まれているかどうかを確認します。 詳細については、「CREATE TABLE」をご参照ください。
外部テーブルからデータを書き込んだ後、Kafka外部テーブルのデータを格納するローカルテーブルのデータ量が変更されないのはなぜですか。
原因を特定するには、SELECT * FROM
文を実行して、外部テーブルのデータを照会します。 エラーメッセージが報告された場合は、エラーメッセージに基づいて原因を特定できます。 ほとんどの場合、エラーメッセージはデータの解析に失敗したことを示します。 クエリ結果が返され、エラーが報告されない場合は、ローカルテーブルのフィールドと外部テーブルのフィールドが一致しているかどうかを確認します。 ローカルテーブルにデータを書き込むことができない場合、ローカルテーブル内のフィールドと外部テーブル内のフィールドに矛盾が生じます。 次のサンプル文を実行できます。
select * from <Kafkaインスタンスのテーブルに接続されている外部テーブル> として <ローカルテーブル> に挿入します。
ApsaraDB for ClickHouseクライアントに表示される時間とタイムゾーンが、ApsaraDB for ClickHouseサーバーに表示される時間とタイムゾーンと異なるのはなぜですか。
use_client_time_zone
パラメーターはクライアントに設定され、パラメーター値はローカルタイムゾーンに設定されません。
ApsaraDB for ClickHouseクラスターのテーブルに書き込まれたデータを表示できないのはなぜですか。
ほとんどの場合、これはローカルテーブルとそれに関連付けられた分散テーブルが異なるスキーマを使用するためです。 system.distribution_queue
という名前のシステムテーブルを照会して、分散テーブルにデータを書き込むときにエラーが発生したかどうかを確認できます。
OPTIMIZEステートメントの実行に長い時間がかかるのはなぜですか?
OPTIMIZE文を実行すると, CPUリソースが大量に消費され, ディスクのスループットが増加します。 CPU使用率が高く、ディスクスループットが高いと、クエリのパフォーマンスが低下し、OPTIMIZEステートメントの実行に必要な時間が長くなります。 負荷の大きいノードでOPTIMIZE文を実行すると、この文の実行に時間がかかります。 このバージョンでは、ソリューションは利用できません。
OPTIMIZEステートメントの実行後に、同じ主キー値を含むレコードが重複排除されないのはなぜですか。
OPTIMIZEステートメントを実行する前に、次の条件が満たされていることを確認してください。 これにより、同じ主キー値を含むレコードの重複排除に使用されるロジックが有効になります。
データを格納するテーブルを定義する場合、PARTITION BY句で指定されたフィールドは、
order by
句で指定されたフィールドに含まれている必要があります。 異なるパーティション内の2つのレコードが同じ主キー値を含む場合、レコードは重複排除されません。分散テーブルを定義する場合、ハッシュするフィールドは、
order by
句で指定されたフィールドに含まれている必要があります。 異なるノード上の2つのレコードが同じ主キー値を含む場合、レコードは重複排除されません。
次の表に、一般的なOPTIMIZEステートメントを示します。
ステートメント | 説明 |
| MergeTreeテーブルの特定のデータ部分で、同じ主キー値を含むレコードの重複排除を試みます。 システムは、同じ主キー値を含むレコードを重複排除することなく結果を返すことができる。 このステートメントを実行しても、テーブル内の同じ主キー値を含むすべてのレコードが重複排除されるわけではありません。 ほとんどの場合、このステートメントは使用されません。 |
| 指定したパーティションのすべてのデータ部分で同じ主キー値を含むレコードの重複を解消します。 システムは、同じ主キー値を含むレコードを重複排除することなく結果を返すことができる。 このステートメントが実行されると、指定されたパーティションのすべてのデータ部分で同じ主キー値を含むレコードが重複排除されます。 重複排除プロセスが完了した後、パーティション内のすべてのレコードは同じデータ部分に格納されます。 既定の単一パーティションを含むテーブルでこのステートメントを実行すると、単一パーティション内の同じ主キー値を含むレコードの重複が排除されます。 このステートメントの実行中にデータが書き込まれた場合、書き込まれたデータは重複排除されません。 指定したパーティションにデータパーツが1つしか含まれていない場合、このステートメントは実行されません。 説明 テーブルにパーティションキーが含まれていない場合、テーブルの既定のパーティションはpartition tuple() です。 |
| テーブルの各パーティションの同じ主キー値を含むレコードの重複を解消します。 このステートメントは、1つ以上のデータ部分を含むテーブルパーティションで実行できます。 このステートメントを実行すると、指定した有効期限 (TTL) 値に基づいて期限切れのデータレコードを削除できます。 3つのステートメントの中で、OPTIMIZE TABLEテストFINAL; ステートメントの実行は、最大量のリソースを消費します。 OPTIMIZE TABLEテストFINAL; ステートメントが実行された後、システムは、同じ主キー値を含むレコードの重複排除なしに結果を返すことができます。 |
上記のいずれかのステートメントを実行すると、optimize_throw_if_noop
パラメーターを設定できます。 このパラメーターは、ステートメントが同じ主キー値を含むレコードを重複排除しない場合に例外エラーを返すかどうかを指定します。
OPTIMIZEステートメントの実行後にTTL設定が有効にならないのはなぜですか。
この問題については、次のセクションで一般的な原因と解決策を説明します。
原因1: 同じ主キー値を含むレコードが重複排除されている場合、指定されたTTL値に基づいて立ち退きが発生します。 データ部分で同じ主キー値を含むレコードが長期間重複排除されない場合、期限切れのレコードは削除できません。
解決策:
FINAL
句またはPARTITION
句を使用してOPTIMIZE TABLEステートメントを実行し、同じ主キー値を含むレコードの重複排除タスクをトリガーできます。テーブルを作成するときに、merge_with_ttl_timeoutやttl_only_drop_partsなどのパラメーターを設定して、期限切れデータを含むデータ部分で同じプライマリキー値を含むレコードの重複排除の頻度を増やすことができます。
原因2: テーブルのTTLが指定または変更されています。 その結果、既存のデータ部分でTTL情報が不完全または正しくない場合があり、期限切れのデータを削除できない場合があります。
解決策:
ALTER TABLE materialize ttl
ステートメントを実行して、TTLを再構成できます。OPTIMIZE TABLE test PARTITION tuple();
ステートメントを実行して、TTLを更新できます。
OPTIMIZEステートメントの実行後にデータが更新または削除されないのはなぜですか。
ApsaraDB for ClickHouseは、非同期でデータを更新または削除します。 データの更新または削除の進行に介入するための対策を講じることはできません。 system.mutationsテーブルで各操作の進行状況を表示できます。
ApsaraDB for ClickHouseでDDLステートメントを実行して列を作成、削除、または変更するにはどうすればよいですか。
ローカルテーブルの場合、DDLステートメントを実行して、列を作成、削除、または変更できます。 分散テーブルの場合、次のいずれかの方法を使用して、さまざまなシナリオで列を作成、削除、または変更できます。
分散テーブルにデータが書き込まれていない場合は、ローカルテーブルと分散テーブルの列を作成、削除、または変更できます。
分散テーブルにデータを書き込む場合は、次のいずれかの手順で別の操作を実行できます。
タイプ
API 操作
null許容列を作成します。
ローカルテーブルで列を作成または変更します。
分散テーブルの列を作成または変更します。
データ型変換がサポートされている場合は、列のデータ型を変更します。
null許容列を削除します。
分散テーブルの列を作成または変更します。
ローカルテーブルで列を作成または変更します。
null非許容列を作成します。
データの書き込みを停止します。
SYSTEM FLUSH DISTRIBUTEDステートメントを実行します。
ローカルテーブルで列を作成または変更します。
分散テーブルの列を作成または変更します。
分散テーブルへのデータの書き込みを再開します。
null設定できない列を削除します。
列の名前を変更します。
DDL文の実行中にシステムが応答を停止するのはなぜですか。
一般的な原因: グローバルDDLステートメントを実行すると、ステートメントはシリアルモードで実行されます。 複雑なクエリはデッドロックを発生させる可能性があります。
この問題を解決するには、次の操作を実行します。
すべてのDDL文が実行されるまで待ちます。
ApsaraDB for ClickHouseコンソールでのDDLステートメントの実行を停止します。
ApsaraDB for ClickHouseコンソールで、クラスターの詳細ページに移動します。 左側のナビゲーションウィンドウで、[パラメーター設定] をクリックします。 表示されるページで、パラメーターの値を変更し、パラメーターの前の値を保持します。 次に、[パラメーターの送信] をクリックします。
説明パラメーターの値を変更する方法の詳細については、同時クエリの数が上限を超えた場合はどうすればよいですか?
DDLステートメントが分散方式で実行されたときに「distributed_ddl_task_timeout (=xxx) 秒より長い」エラーが返された場合はどうすればよいですか?
この問題を解決するには、SET GLOBAL ON CLUSTER default distributed_ddl_task_timeout=xxx
ステートメントを実行して、デフォルトのタイムアウト期間を変更します。 ステートメントのxxxを、指定するタイムアウト期間に置き換えます。 タイムアウト期間は秒単位で測定されます。 グローバルパラメーターの設定を変更する方法の詳細については、「user.xmlファイルのパラメーターの設定」をご参照ください。
SET GLOBAL ON CLUSTERのデフォルトステートメントで構文エラーが発生した場合はどうすればよいですか?
この問題については、次のセクションで一般的な原因と解決策を説明します。
原因1: ApsaraDB for ClickHouseクライアントがステートメントの構文を解析します。 ただし、
SET GLOBAL ON CLUSTER default
ステートメントは、ApsaraDB for ClickHouseサーバーでのみ有効です。 クライアントのバージョンがサーバーのバージョンと一致しない場合、SET GLOBAL ON CLUSTERの既定のステートメントを実行すると、クライアントは構文エラーを報告します。解決策:
クライアントのステートメントの構文を解析しないツールを使用します。 たとえば、DataGripまたはDBeaverをJDBCドライバーで使用できます。
SET GLOBAL ON CLUSTERの既定のステートメントを実行するJDBCプログラムを作成することもできます。
原因2:
SET GLOBAL ON CLUSTER default
ステートメントで単一引用符 (') で囲まれていない文字列値を指定しました。解決策: SET GLOBAL ON CLUSTERのデフォルトステートメントの文字列値を単一引用符 ('') で囲みます。
推奨されるビジネスインテリジェンス (BI) ツールは何ですか?
Quick BIの使用を推奨します。
データクエリに推奨される統合開発環境 (IDE) は何ですか?
DataGripまたはDBeaverの使用を推奨します。
各テーブルで使用されているディスク容量を確認するにはどうすればよいですか?
各テーブルで使用されているディスク容量を確認するには、次のサンプル文を実行します。
SELECT table, formatReadableSize(sum(bytes)) as size, min(min_date) as min_date, max(max_date) as max_date FROM system.parts WHERE active GROUP BY table;
コールドデータのサイズを照会するにはどうすればよいですか?
コールドデータのサイズを照会するには、次のサンプル文を実行します。
SELECT * FROM system.disks;
コールドストレージにあるデータを確認するにはどうすればよいですか?
コールドストレージにあるデータを確認するには、次のサンプル文を実行します。
SELECT * FROM system.parts WHERE disk_name = 'cold_disk';
パーティション内のデータをコールドストレージにダンプするにはどうすればよいですか?
パーティション内のデータをコールドストレージにダンプするには、次のサンプルステートメントを実行します。
ALTER TABLE table_name MOVE PARTITION partition_expr TO DISK 'cold_disk';
クラスターモニタリングデータが特定の期間欠落しているのはなぜですか。
この問題は、次のいずれかの原因で発生します。
データをクエリすると、OOMエラーが報告されます。
クラスターの設定が変更されました。 これにより、クラスターが再起動します。
クラスターの仕様がスケールアップまたはスケールダウンされます。 これにより、クラスターが再起動します。
V20.8以降のApsaraDB for ClickHouseクラスターは、データ移行を必要としないシームレスな更新をサポートしていますか?
はい。データ移行を必要とせずに、V20.8以降のApsaraDB for ClickHouseクラスターを更新できます。
一般的なシステムテーブルとは何ですか?
システム共通テーブルを次の表に示します。
名前 | 説明 |
system.processes | 実行中のSQL文が含まれます。 |
system.query_log | 実行されたSQL文が含まれます。 |
システム. マージ | クラスターで実行されるマージ操作に関する情報が含まれます。 |
system.mutations | クラスター内のミューテーションに関する情報が含まれます。 |
システムパラメータの設定を変更するにはどうすればよいですか? システムパラメーターの設定を変更した後、クラスターを再起動する必要がありますか? クラスターが再起動された場合のクラスターへの影響
config.xmlファイルには、システム設定に関する情報が含まれています。 ファイル内のシステムパラメータの設定を変更できます。 システムパラメーターの設定を変更するには、次の手順を実行します。
ApsaraDB for ClickHouseコンソールにログインします。
[クラスター] ページで、[デフォルトインスタンス] タブをクリックし、管理するクラスターのIDをクリックします。
クラスターの詳細ページの左側のナビゲーションウィンドウで、[パラメーター設定] をクリックします。
max_concurrent_queriesパラメーターの値を変更します。 有効な値を入力し、[OK] をクリックします。
[パラメーターの送信] をクリックします。
[OK] をクリックします。
[OK] をクリックすると、ApsaraDB for ClickHouseサーバーが自動的に再起動されます。 再起動により、約1分間続く一時的な接続が発生します。
ユーザーパラメーターの設定を変更するにはどうすればよいですか?
users.xmlファイルには、ユーザー設定に関する情報が含まれています。 ファイル内のユーザーパラメーターの設定を変更できます。 ユーザーパラメーターの設定を変更するには、次のサンプル文を実行します。
SET global ON cluster default ${key}=${value};
特に指定のない限り、新しいパラメーター値はステートメントの実行後すぐに有効になります。
リソースクォータを変更するにはどうすればよいですか?
SETTINGSステートメントを使用して、リソースクォータを変更できます。 リソースクォータを変更するには、次のサンプルステートメントを実行します。
settings max_memory_usage = XXX;
宛先クラスターとデータソースの間に接続が確立されない場合はどうすればよいですか。
宛先クラスターとデータソースが同じリージョンにデプロイされ、同じVPCを使用している場合は、宛先クラスターのIPアドレスがデータソースのホワイトリストに追加されているかどうか、およびデータソースのIPアドレスが宛先クラスターのホワイトリストに追加されているかどうかを確認します。 IPアドレスがホワイトリストに追加されていない場合は、ホワイトリストを設定します。
ApsaraDB For ClickHouseクラスターのホワイトリストを設定する方法の詳細については、「ホワイトリストの設定」をご参照ください。
データソースのホワイトリストを設定する方法の詳細については、対応するサービスドキュメントをご参照ください。
それ以外の場合は、適切なネットワークソリューションを選択してネットワーク接続の問題を解決し、IPアドレスをホワイトリストに追加します。
シナリオ | 解決策 |
Alibaba Cloud上のデータセンターとサービス間の通信 | CENおよびEnterprise Editionトランジットルーターを使用して、オンプレミスネットワークとクラウドネットワーク間のリージョン内通信を有効にします |
リージョンとAlibaba Cloudアカウント間のVPC間通信 | |
同じリージョンでのVPC間通信 | |
リージョンとAlibaba Cloudアカウント間のVPC間通信 | CENおよびBasic Editionトランジットルーターを使用して、異なるリージョンおよびAlibaba CloudアカウントのVPCを接続 |