Procシステムは、Dorisのユニークな機能です。Linuxを使用したことのある学生は、この概念をよく理解できるでしょう。Linuxシステムでは、procは仮想ファイルシステムで、通常/procディレクトリにマウントされています。ユーザーは、このファイルシステムを通じてシステムの内部データ構造を表示できます。例えば、/proc/pidを通じて指定されたpidプロセスの詳細を表示できます。
Linuxのprocシステムと同様に、Dorisのprocシステムも、ユーザーが指定した「ディレクトリパス(proc path)」に従って異なるシステム情報を表示するために、ディレクトリのような構造に整理されています。
procシステムは主にシステム管理者向けに設計されており、システム内部の実行状態を簡単に表示できます。tableのtabletステータス、クラスターバランスステータス、各種ジョブのステータスなど、非常に有用な機能です。
DorisでProcシステムを表示する方法は2つあります。
http://FE_IP:FE_HTTP_PORTにアクセスDorisのPROCでサポートされているすべてのコマンドはSHOW PROC "/";で確認できます。
MySQLクライアントを通じてDorisに接続した後、SHOW PROC文を実行して、指定されたprocディレクトリの情報を表示できます。procディレクトリは「/」で始まる絶対パスです。
show proc文の結果は2次元tableで表示されます。通常、結果tableの最初の列は、procの次のサブディレクトリです。
mysql> show proc "/"; +---------------------------+ | name | +---------------------------+ | auth | | backends | | bdbje | | brokers | | catalogs | | cluster_balance | | cluster_health | | colocation_group | | current_backend_instances | | current_queries | | current_query_stmts | | dbs | | diagnose | | frontends | | jobs | | load_error_hub | | monitor | | resources | | routine_loads | | statistic | | stream_loads | | tasks | | transactions | | trash | +---------------------------+ 23 rows in set (0.00 sec)
illustrate:
fe.confファイルを変更してenable_bdbje_debug_mode=trueを追加し、sh start_fe.sh --daemonを通してFEを起動してdebugモードに入る必要があります。debugモードに入ると、http serverとMySQLServerのみが起動され、BDBJEインスタンスが開かれますが、メタデータの読み込みとその後の起動プロセスには入りません。dbIdが指定された場合、そのデータベースの統計データを返します。dbIdが-1の場合、すべてのデータベースの合計統計データを返しますBinlogはDorisの重要な機能で、データ変更を記録し、クラスター間データ同期(CCR)などのシナリオで使用できます。このコマンドを通して、管理者はBinlogのステータスを監視し、正常な動作を確保し、ストレージ容量を合理的に計画できます。
| フィールド名 | データ型 | 説明 |
|---|---|---|
| Name | String | データベース名またはTable名 |
| タイプ | String | データオブジェクトの種類、値は“db”(データベース)または“table”(Table) |
| Id | Number | データベースIDまたはTableID |
| Dropped | Boolean | データベースまたはTableが削除されているかどうか。“true”値はオブジェクトがDorisから削除されたが、そのBinlogレコードがまだ保持されていることを示す;“false”値はオブジェクトがシステム内にまだ存在することを示す。データベースまたはTableが削除されても、システムはTTLが期限切れになるか手動でクリーンアップされるまで一定期間Binlogレコードを保持する |
| BinlogLength | Number | このデータベースまたはTableのバイナリログエントリの総数 |
| BinlogSize | Number | バイナリログの総サイズ(バイト) |
| FirstBinlogCommittedTime | Number | 最初のバイナリログコミットのタイムスタンプ(Unixタイムスタンプ、ミリ秒) |
| ReadableFirstBinlogCommittedTime | String | 最初のバイナリログのコミット時刻(可読形式) |
| LastBinlogCommittedTime | Number | 最後のバイナリログコミットのタイムスタンプ(Unixタイムスタンプ、ミリ秒) |
| ReadableLastBinlogCommittedTime | String | 最後のバイナリログのコミット時刻(可読形式) |
| BinlogTtlSeconds | Number | バイナリログの有効期間(秒)、この時間を超えるログはクリーンアップされる可能性がある |
| BinlogMaxBytes | Number | バイナリログの最大サイズ(バイト)、このサイズを超えるとクリーンアップがトリガーされる可能性がある |
| BinlogMaxHistoryNums | Number | 保持するバイナリログ履歴レコードの最大数、この数を超えるとクリーンアップがトリガーされる可能性がある |
注意事項:
例えば、“/dbs”はすべてのデータベースを表示し、“/dbs/10002”はid 10002のデータベース下のすべてのTableを表示します
mysql> show proc "/dbs/10002"; +---------+----------------------+----------+---------------------+--------------+--------+------+--------------------------+--------------+ | TableId | TableName | IndexNum | PartitionColumnName | PartitionNum | State | タイプ | LastConsistencyCheckTime | ReplicaCount | +---------+----------------------+----------+---------------------+--------------+--------+------+--------------------------+--------------+ | 10065 | dwd_product_live | 1 | dt | 9 | NORMAL | OLAP | NULL | 18 | | 10109 | ODS_MR_BILL_COSTS_DO | 1 | NULL | 1 | NORMAL | OLAP | NULL | 1 | | 10119 | test | 1 | NULL | 1 | NORMAL | OLAP | NULL | 1 | | 10124 | test_parquet_import | 1 | NULL | 1 | NORMAL | OLAP | NULL | 1 | +---------+----------------------+----------+---------------------+--------------+--------+------+--------------------------+--------------+ 4 rows in set (0.00 sec)
クラスター内のすべてのデータベースTable数に関する情報を表示します。
mysql> show proc '/statistic'; +-------+----------------------+----------+--------------+----------+-----------+------------+ | DbId | DbName | TableNum | PartitionNum | IndexNum | TabletNum | ReplicaNum | +-------+----------------------+----------+--------------+----------+-----------+------------+ | 10002 | default_cluster:test | 4 | 12 | 12 | 21 | 21 | | Total | 1 | 4 | 12 | 12 | 21 | 21 | +-------+----------------------+----------+--------------+----------+-----------+------------+ 2 rows in set (0.00 sec)
以下のコマンドでクラスター内の既存のGroup情報を確認できます。
SHOW PROC '/colocation_group'; +-------------+--------------+--------------+------------+----------------+----------+----------+ | GroupId | GroupName | TableIds | BucketsNum | ReplicationNum | DistCols | IsStable | +-------------+--------------+--------------+------------+----------------+----------+----------+ | 10005.10008 | 10005_group1 | 10007, 10040 | 10 | 3 | int(11) | true | +-------------+--------------+--------------+------------+----------------+----------+----------+
Colocation replica balance and repairセクションを参照)。以下のコマンドを使用してGroupのデータ分散をさらに詳しく確認します:
SHOW PROC '/colocation_group/10005.10008'; +-------------+---------------------+ | BucketIndex | BackendIds | +-------------+---------------------+ | 0 | 10004, 10002, 10001 | | 1 | 10003, 10002, 10004 | | 2 | 10002, 10004, 10001 | | 3 | 10003, 10002, 10004 | | 4 | 10002, 10004, 10003 | | 5 | 10003, 10002, 10001 | | 6 | 10003, 10004, 10001 | | 7 | 10003, 10004, 10002 | +-------------+---------------------+
様々なジョブのタスクの総数と失敗数を表示します。
mysql> show proc '/tasks'; +-------------------------+-----------+----------+ | TaskType | FailedNum | TotalNum | +-------------------------+-----------+----------+ | CREATE | 0 | 0 | | DROP | 0 | 0 | | PUSH | 0 | 0 | | CLONE | 0 | 0 | | STORAGE_MEDIUM_MIGRATE | 0 | 0 | | ROLLUP | 0 | 0 | | SCHEMA_CHANGE | 0 | 0 | | CANCEL_DELETE | 0 | 0 | | MAKE_SNAPSHOT | 0 | 0 | | RELEASE_SNAPSHOT | 0 | 0 | | CHECK_CONSISTENCY | 0 | 0 | | UPLOAD | 0 | 0 | | DOWNLOAD | 0 | 0 | | CLEAR_REMOTE_FILE | 0 | 0 | | MOVE | 0 | 0 | | REALTIME_PUSH | 0 | 0 | | PUBLISH_VERSION | 0 | 0 | | CLEAR_ALTER_TASK | 0 | 0 | | CLEAR_TRANSACTION_TASK | 0 | 0 | | RECOVER_TABLET | 0 | 0 | | STREAM_LOAD | 0 | 0 | | UPDATE_TABLET_META_INFO | 0 | 0 | | ALTER | 0 | 0 | | INSTALL_PLUGIN | 0 | 0 | | UNINSTALL_PLUGIN | 0 | 0 | | Total | 0 | 0 | +-------------------------+-----------+----------+ 26 rows in set (0.01 sec)
クラスター全体のレプリカステータスを表示します。
mysql> show proc '/cluster_health/tablet_health'; +----------+---------------------------+-----------+------------+-------------------+----------------------+----------------------+--------------+----------------------------+-------------------------+-------------------+---------------------+----------------------+----------------------+------------------+-----------------------------+-----------------+-------------+------------+ | DbId | DbName | TabletNum | HealthyNum | ReplicaMissingNum | VersionIncompleteNum | ReplicaRelocatingNum | RedundantNum | ReplicaMissingInClusterNum | ReplicaMissingForTagNum | ForceRedundantNum | ColocateMismatchNum | ColocateRedundantNum | NeedFurtherRepairNum | UnrecoverableNum | ReplicaCompactionTooSlowNum | InconsistentNum | OversizeNum | CloningNum | +----------+---------------------------+-----------+------------+-------------------+----------------------+----------------------+--------------+----------------------------+-------------------------+-------------------+---------------------+----------------------+----------------------+------------------+-----------------------------+-----------------+-------------+------------+ | 25852112 | default_cluster:bowen | 1920 | 1920 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 25342914 | default_cluster:bw | 128 | 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 2575532 | default_cluster:cps | 1440 | 1440 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 16 | 0 | | 26150325 | default_cluster:db | 38374 | 38374 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 453 | 0 | +----------+---------------------------+-----------+------------+-------------------+----------------------+----------------------+--------------+----------------------------+-------------------------+-------------------+---------------------+----------------------+----------------------+------------------+-----------------------------+-----------------+-------------+------------+ 4 rows in set (0.01 sec)
DbId が 25852112 などのデータベースの下で、レプリカステータスを表示します。
mysql> show proc '/cluster_health/tablet_health/25852112';
クラスタ管理の問題の報告と診断
MySQL > show proc "/diagnose"; +-----------------+----------+------------+ | Item | ErrorNum | WarningNum | +-----------------+----------+------------+ | cluster_balance | 2 | 0 | | Total | 2 | 0 | +-----------------+----------+------------+ 2 rows in set
View replicaバランス移行の問題
```sql
MySQL > show proc "/diagnose/cluster_balance";
+-----------------------+--------+-------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------+------------+
| Item | Status | Content | Detail Cmd | Suggestion |
+-----------------------+--------+-------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------+------------+
| Tablet Health | ERROR | healthy tablet num 691 < total tablet num 1014 | show proc "/cluster_health/tablet_health"; | <null> |
| BeLoad Balance | ERROR | backend load not balance for tag {"location" : "default"}, low load backends [], high load backends [10009] | show proc "/cluster_balance/cluster_load_stat/location_default/HDD" | <null> |
| Disk Balance | OK | <null> | <null> | <null> |
| Colocate Group Stable | OK | <null> | <null> | <null> |
| History Tablet Sched | OK | <null> | <null> | <null> |
+-----------------------+--------+-------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------+------------+
5 rows in set
```
SHOW, PROC