ヘルス・モニター

ヘルス・モニターは、システムCPU使用率、ディスク使用率、メモリー使用量およびMySQLサーバー・プロセス(mysqld)の統計を収集します。統計は、ヘルス・モニターが1分に1回サンプルを取得し、1日分のデータを保持する履歴表に記録されます。問合せ時にオンデマンドで現在の読取りが移入された表のこれらの統計にアクセスすることもできます。

状態モニターの概要

ヘルス・モニターは、ディスク領域情報、システム・メモリー情報およびプロセス・メモリー情報を60秒ごとにサンプリングし、1日分のデータをMySQL Serverのパフォーマンス・スキーマ内の表に格納します。使用可能なディスク領域または使用可能なメモリーが特定の事前設定されたしきい値を下回ると、ヘルス・モニターは警告を発行し、それをperformance_schema.error_log表に記録します。

ヘルス・モニターでは、100 GB = 93 GiBのMiB/GiB/TiBストレージ・ユニットが使用されます。

DBシステムで使用可能な合計ストレージには、次のものが含まれます:

  • 使用可能なストレージ: ストレージ予約後のディスク領域は、合計ストレージから除外されます。
  • ストレージ予約: disk_low_space_levelおよびdisk_low_space_percent構成変数のディスク領域が少なくなります。disk_low_space_levelのデフォルト値は5,000 MiBで、disk_low_space_percentのデフォルト値は合計ストレージの4%です。
  • クリティカル・ストレージ: disk_low_space_critical_level構成変数によって定義されたクリティカルしきい値を下回るストレージ予約内のディスク領域。これは、ディスクの枯渇を回避するためにシステムで実行可能な最小ディスク領域です。デフォルトのクリティカル・ストレージ領域は2,000 MiBです。

ディスク領域の警告

ディスク領域が使用可能な記憶域の特定の割合を下回ると、ヘルス・モニターは次の警告を発行してperformance_schema.error_log表に記録します。

  • WARNING_DISK_USAGE_LEVEL_1: ディスク領域が使用可能なストレージの20%を下回る場合。
  • WARNING_DISK_USAGE_LEVEL_2: ディスク領域が使用可能な記憶域の10%を下回る場合。
  • WARNING_DISK_USAGE_LEVEL_3: ディスク領域が使用可能なストレージの5%を下回る場合。

たとえば、合計ストレージが100,000 MiBで、ストレージ予約が次の2つの構成変数のうち少ない場合:

  • disk_low_space_level: デフォルト値は5,000 MiBです。
  • disk_low_space_percent: これは合計ストレージの4%です。つまり、100,000 MiBの4% = 4,000 MiBです。

ストレージ予約は4,000 MiBで、2つの構成変数のうち少ない方です。

使用可能なストレージを見つけるには、合計ストレージからストレージ予約を除外します。

100,000 - 4,000 = 96,000 MiB

ヘルス・モニターは次の警告を発行します:

  • WARNING_DISK_USAGE_LEVEL_1: ディスク領域が使用可能なストレージの20%を下回る場合(20/100*96,000 = 19,200 MiB)。
  • WARNING_DISK_USAGE_LEVEL_2: ディスク領域が使用可能なストレージの10%を下回る場合(10/100*96,000 = 9,600 MiB)。
  • WARNING_DISK_USAGE_LEVEL_3: ディスク領域が使用可能なストレージの5%を下回る場合(5/100*96,000 = 4,800 MiB)。

ディスク領域の大幅または持続的な不足

ヘルス・モニターでは、次の条件が満たされた場合、ディスク領域の大幅な不足または持続的な不足が定義されます。

  • 大幅な不足: ディスク領域は、disk_low_space_critical_levelで定義されたクリティカルしきい値を下回ります。
  • 持続的な不足: ディスク領域はストレージ予約を下回り、disk_low_space_duration構成変数で定義された期間、ストレージ予約に残ります。

ディスク領域が著しくまたは持続的に不足している場合、ヘルス・モニターでは次の処理が実行されます。

  • SUPER_READ_ONLY=ON: Sets the system variables, SUPER_READ_ONLY, to ON in the MySQL Server.The MySQL Server rejects all new incoming SQL write statements (UPDATE, INSERT, DELETE, and DDL), regardless of users and privileges.トランザクションの実行は完了できますが、ディスク領域が再度使用可能になるまで、新しい書込みは禁止されます。サーバーがSUPER_READ_ONLYモードの場合、データをHeatWaveにロードできません。

    場合によっては、グローバル読取りロック、進行中のコミットまたはメタデータ・ロックによって、ヘルス・モニターでSUPER_READ_ONLYシステム変数の設定がブロックされます。このような場合、health_monitor.disk_fallback_force変数を設定すると、ヘルス・モニターは、グローバル・ロックを保持するアクティブな問合せを識別して終了し、SUPER_READ_ONLYシステム変数を設定します。

  • OFFLINE_MODE=ON: Sets the system variable, OFFLINE_MODE, to ON in the MySQL Server.MySQL Serverは、CONNECTION_ADMIN特権を持たないクライアントユーザーを切断し、実行中のステートメントを終了してロックを解放し、適切なエラーによって新しい接続をブロックします。
  • super_read_only_disk_full=ON: Sets the status variable, super_read_only_disk_full, to ON indicating that read-only mode was triggered due to low disk space.super_read_only_disk_fullステータス変数の値は、次のいずれかのコマンドで確認できます。
    • SHOW GLOBAL STATUS WHERE variable_name = 'super_read_only_disk_full';
    • SELECT * FROM performance_schema.global_status WHERE variable_name = 'super_read_only_disk_full';

システム変数は MySQL Serverの動作を変更しますが、ステータス変数は MySQL Serverの状態の静的インジケータです。

通常操作へのリカバリ

SUPER_READ_ONLYおよびOFFLINE_MODEが設定されると、ヘルス・モニターでは次の処理が実行されます。

  • 1分ごとにディスク領域を確認します。
  • 使用可能なディスク領域が回復し、disk_recovery_time_1秒以上 disk_recovery_levelを超える場合は、OFFLINE_MODE=OFFを設定します。
  • 使用可能なディスク領域が回復し、さらにdisk_recovery_time_2秒以上disk_recovery_levelを上回る場合は、SUPER_READ_ONLY=OFFを設定します。

通常の操作は、ディスク領域がdisk_recovery_time_1 + disk_recovery_time_2秒間disk_recovery_levelを上回ったままになると再開されます。

ディスク領域が回復すると、ヘルス・モニターはシステム変数SUPER_READ_ONLYおよびOFFLINE_MODE、およびステータス変数super_read_only_disk_fullをクリアします。変数をクリアするためにMySQLインスタンスを再起動する必要はありません。

ディスク領域が再度著しくまたは持続的に不足している場合、ヘルス・モニターは、MySQL Serverでシステム変数SUPER_READ_ONLYおよびOFFLINE_MODE、およびステータス変数super_read_only_disk_fullを再度ONに設定します。

高可用性DBシステムのプライマリ・インスタンスを通常のオペレーティング・モードに戻す前に、ヘルス・モニターは、サーバーが過半数グループでオンラインであることを確認します。ヘルス・モニターでは、セカンダリ・インスタンスにSUPER_READ_ONLYまたはOFFLINE_MODEは設定されません。

リカバリ増分、リカバリ最大サイクルおよびリカバリ期間

MySQL Serverがディスク領域の大幅な不足または持続的な不足から回復するたびに、ヘルス・モニターによってディスク・リカバリ時間がdisk_recovery_increment秒増加します。

たとえば、disk_recovery_time_1 = 300秒、disk_recovery_time_2 = 600秒、disk_recovery_increment = 400秒の場合、各サイクルのディスク・リカバリ時間は、次のようになります。

  • サイクル1: disk_recovery_time_1 = 300秒、disk_recovery_time_2 = 600秒
  • サイクル2: disk_recovery_time_1 = (300 + 400)秒、disk_recovery_time_2 = (600+400)秒
  • サイクル3: disk_recovery_time_1 = (300+400+400)秒、disk_recovery_time_2 = (600+400+400)秒

ヘルス・モニターは、最後のリカバリ・サイクルからdisk_recovery_window秒の固定ウィンドウ内で、通常の動作モードに最大disk_recovery_max_cycles回リストアします。たとえば、disk_recovery_max_cyclesが5に設定され、disk_recovery_windowが86,400秒(1日)に設定されている場合、ヘルス・モニターは86,400秒のウィンドウで通常の動作モードに5回リストアできます。同じウィンドウで6回目に大幅または持続的な不足が発生した場合、システム変数SUPER_READ_ONLYおよびOFFLINE_MODEはONに設定されます。

リカバリ数は、最後のリカバリから disk_recovery_window秒後にリセットされます。

メモリー警告

使用可能なメモリーが特定のしきい値を下回ると、ヘルス・モニターは次の警告を発行します。

  • WARNING_MEMORY_USAGE_LEVEL_1: 使用可能なメモリーが1024 MiBを下回る場合。
  • WARNING_MEMORY_USAGE_LEVEL_2: 使用可能なメモリーが500 MiBを下回る場合。
  • WARNING_MEMORY_USAGE_LEVEL_3: 使用可能なメモリーが100 MiBを下回る場合。

ヘルス・モニターは、mysqlのバージョン、グローバル・メモリー使用量および様々な構成設定に関する情報をエラー・ログに記録します。この情報はカンマ区切り値として記録されるため、詳細な分析のためにスプレッドシートに簡単に転送できます。

ヘルス・モニター表の表示

状態モニターテーブルは、モニタリングデータと統計を MySQL Serverのパフォーマンススキーマに格納します。

健全性テーブルには、ディスクストレージ情報、システムメモリー情報、およびプロセスメモリー情報が含まれます。

統計表には、システムCPU使用率、ディスク使用率、メモリー使用率およびMySQLサーバー・プロセス(mysqld)の統計が含まれます。各統計表には2つのバージョンがあります。1つはオンデマンド・バージョンで、問合せ時に現在の読取り値が移入されます。もう1つは、ヘルス・モニターが1分に1回サンプルを取得し、1日分のデータを保持する履歴バージョンです。どちらのバージョンの表にも同じ列があります。

コマンドライン・クライアントの使用

MySQLクライアントやMySQLシェルなどのコマンドライン・クライアントを使用して、ヘルス・モニター表を表示します。

このタスクでは次が必要です:
  • DBシステムに接続されているMySQLシェルなどのコマンドライン・クライアント。DB Systemへの接続を参照してください。
  1. MySQLシェルの場合は、\SQLコマンドを入力してSQLモードに切り替えます。
  2. 表示する表を指定して、次のSQL文を入力します。
    SELECT * FROM performance_schema.<health_monitor_table>;

    For example, to view the disk storage status, use the following SQL command:

    SELECT * FROM performance_schema.health_block_device;
    ノート

    表の完全なリストを表示するには、<health_monitor_table>状態モニター表を参照してください。
次のような応答が表示され、ディスク・ストレージのステータス情報が表示されます。

+-------------------------+---------------------+-------------+-----------------+-------------+-------------+
| DEVICE                  | TIMESTAMP           | TOTAL_BYTES | AVAILABLE_BYTES | USE_PERCENT | MOUNT_POINT |
+-------------------------+---------------------+-------------+-----------------+-------------+-------------+
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:12:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:13:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:14:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:15:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:16:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:17:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:18:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:19:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:20:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:21:08 | 53656686592 |     51364134912 |        4.27 | /db         |

ヘルス・モニター表

ディスク・ストレージ情報、システム・メモリー情報およびプロセス・メモリー情報を確認するには、ヘルス・モニター表を参照してください。

ヘルス・モニター表の完全なリストは、次のとおりです。

performance_schema.health_block_device表

ヘルス・モニターは、MySQL Serverのパフォーマンス・スキーマのperformance_schema.health_block_device表を使用して、DBシステムの使用済および使用可能なディスク領域にデータを格納します。

表17-1 health_block_deviceパフォーマンス・スキーマ表

説明
DEVICE ディスクのデバイス名。
TIMESTAMP この行のデータ・サンプルが収集された時間。
TOTAL_BYTES デバイス上のストレージの合計量(バイト単位)。
AVAILABLE_BYTES デバイスで使用可能なストレージの容量(バイト単位)。
USE_PERCENT 使用中のディスク領域の割合。
MOUNT_POINT デバイスのマウント・ポイント。
performance_schema.health_system_memory表

ヘルス・モニターは、MySQL Serverのパフォーマンス・スキーマのperformance_schema.health_system_memory表を使用して、DBシステムによるメモリー使用量に関するデータを格納します。

表17-2 health_system_memoryパフォーマンス・スキーマ表

説明
TIMESTAMP この行のデータ・サンプルが収集された時間。
TOTAL_MEMORY システムの合計メモリー量(バイト単位)。
AVAILABLE スワップせずに新しいアプリケーションを起動するために使用できるメモリー(バイト単位)。
USE_PERCENT 使用中のメモリーの割合。
MEMORY_FREE 未使用メモリーの量。
MEMORY_FS_CACHE ファイルシステムのページキャッシュ。
SWAP_TOTAL スワップメモリーの合計量。
SWAP_FREE 空きスワップメモリーの合計量。
performance_schema.health_process_memory表

ヘルス・モニターは、MySQL Serverのパフォーマンス・スキーマのperformance_schema.health_process_memory表を使用して、DBシステムのMySQL Serverプロセス(mysqld)によるメモリー使用量に関するデータを格納します。

表17-3 health_process_memoryパフォーマンス・スキーマ表

説明
TIMESTAMP この行のデータ・サンプルが収集された時間。
PROCESS_NAME MySQL Serverプロセスの名前。
PID MySQL Serverプロセスのシステム識別子。
VM_RSS MySQLサーバー・プロセスの常駐セット・サイズ(バイト単位)。
VM_DATA MySQL Serverプロセスデータセグメントのサイズ(バイト単位)。
VM_SWAP MySQLサーバー・プロセス・プロセス・スワップ・セグメントのサイズ(バイト単位)。
PAGE_FAULTS ディスク I/Oを必要とするページ障害の数。
performance_schema.system_cpu_stats表

Health Monitor collects statistics for CPU usage by the DB system.統計は、MySQL Serverのパフォーマンススキーマの2つのテーブル、オンデマンドテーブル、および対応する履歴テーブルで使用できます。どちらの表も列が同じです。

MySQL Serverのパフォーマンス・スキーマのperformance_schema.system_cpu_stats表には、問合せ時にデータ・サンプルが移入されます。performance_schema.system_cpu_stats_history表には、データ・サンプルが定期的に格納されます。

これらの表の統計は、Linuxシステム・ファイル/proc/statから取得されます。

表17-4 system_cpu_statsおよびsystem_cpu_stats_historyパフォーマンス・スキーマ表

説明
TIMESTAMP この行のデータ・サンプルが収集された時間。
CPU The cpu row shows the aggregated CPU usage data, and each numbered row (for example, cpu0, cpu1) shows data for an individual process.すべての時間はミリ秒単位です。
USER_MS ユーザーモードで費やされた時間。
NICE_MS 優先度が低いユーザー・モードで費やされた時間。
SYSTEM_MS システムモードで費やされた時間。
IDLE_MS アイドル・タスクに費やされた時間。
IOWAIT_MS I/Oの完了の待機に費やされた時間。
IRQ_MS ハードウェア割り込みの処理にかかった時間。
SOFTIRQ_MS ソフトウェア割り込みの処理に費やされた時間。
STEAL_MS 仮想化された環境で他のオペレーティング・システムを実行するのにかかった時間。
GUEST_MS 通常の優先度で仮想CPUの実行に費やされた時間。
GUEST_NICE_MS 優先度が低い仮想CPUの実行にかかった時間。
performance_schema.system_disk_stats表

ヘルス・モニターは、DBシステムによるディスク使用量の統計を収集します。統計は、MySQL Serverのパフォーマンススキーマの2つのテーブル、オンデマンドテーブル、および対応する履歴テーブルで使用できます。どちらの表も列が同じです。

MySQL Serverのパフォーマンス・スキーマのperformance_schema.system_disk_stats表には、問合せ時にデータ・サンプルが移入されます。performance_schema.system_disk_stats_history表には、データ・サンプルが定期的に格納されます。

これらの表の統計は、Linuxシステム・ファイル/proc/diskstatsから取得されます。

表17-5 system_disk_statsおよびsystem_disk_stats_historyパフォーマンス・スキーマ表

説明
TIMESTAMP この行のデータ・サンプルが収集された時間。
DEVICE このディスクのデバイス名。
READS 正常に完了した読取りの数。
READ_BYTES 読取りが終了したバイト数
READ_TIME_MS 読取りにかかった時間(ミリ秒)。
WRITES 正常に完了した書込みの数。
WRITE_BYTES 書込みバイト数です。
WRITE_TIME_MS 書込みにかかった時間(ミリ秒)。
FLUSHES 正常に完了したフラッシュ・リクエストの数。
FLUSH_TIME_MS フラッシュにかかった時間(ミリ秒)。
performance_schema.system_memory_stats表

ヘルス・モニターは、DBシステムによるメモリー使用量の統計を収集します。統計は、MySQL Serverのパフォーマンススキーマの2つのテーブル、オンデマンドテーブル、および対応する履歴テーブルで使用できます。どちらの表も列が同じです。

MySQL Serverのパフォーマンス・スキーマのperformance_schema.system_memory_stats表には、問合せ時にデータ・サンプルが移入されます。performance_schema.system_memory_stats_history表には、データ・サンプルが定期的に格納されます。

これらの表の統計は、Linuxシステム・ファイル/proc/meminfoから取得されます。

表17-6 system_memory_statsおよびsystem_memory_stats_historyパフォーマンス・スキーマ表

説明
TIMESTAMP この行のデータ・サンプルが収集された時間。
TOTAL_BYTES 使用可能なシステム・メモリーの合計(バイト単位)。
FREE_BYTES 使用されていないメモリー。
USED_BYTES 使用メモリーの合計。
AVAILABLE_BYTES 新しいアプリケーションの起動に使用できる推定メモリー(バイト)。
BUFFER_BYTES rawディスクブロックの一時ストレージに使用されるメモリーの量。
CACHED_BYTES ディスク(ページ・キャッシュ)から読み取られたファイルのキャッシュに使用されるメモリー量。
SLAB_BYTES カーネル内データ構造のキャッシュに使用されるメモリー量。
SWAP_TOTAL_BYTES ディスク上で使用可能なスワップ領域の合計量。
SWAP_FREE_BYTES 現在使用されていないスワップ領域の合計量。
SWAP_USED_BYTES RAMからスワップ・アウトされ、一時的にディスク上にあるメモリーの合計量。
SWAP_IN ディスクからRAMにスワップ・バックされたメモリーの量(KB/秒)。
SWAP_OUT RAMからディスクにスワップ・アウトされたメモリーの量(KB/秒)。
performance_schema.system_process_stats表

ヘルス・モニターは、DBシステムのMySQL Serverプロセスで使用される各スレッドの統計を収集します。統計は、MySQL Serverのパフォーマンススキーマの2つのテーブル、オンデマンドテーブル、および対応する履歴テーブルで使用できます。どちらの表も列が同じです。

MySQL Serverのパフォーマンス・スキーマのperformance_schema.system_process_stats表には、問合せ時にデータ・サンプルが移入されます。performance_schema.system_process_stats_history表には、データ・サンプルが定期的に格納されます。

プロセス統計の場合、オンデマンド表は、mysqldプロセスで使用されるスレッドごとに1行を返します。ただし、履歴表には、サンプルごとに1つの行が格納され、mysqldプロセスで使用されるすべてのスレッドの合計が集計されます。

これらの表の統計は、Linuxシステム・ファイル/proc/self/task/[pid]/statから取得されます。

表17-7 system_process_statsおよびsystem_process_stats_historyパフォーマンス・スキーマ表

説明
TIMESTAMP この行のデータ・サンプルが収集された時間。
PID プロセスID
PROCESS_NAME プロセス名。mysqldです。
TID この行に表示される個々のスレッドのスレッドID。
THREAD_NAME この行に表示される個々のスレッドのインストゥルメントされたスレッド名。
STATE サンプルの時点のスレッド状態を示す文字: 実行中(R)、中断可能な待機中にスリープ中(S)、中断不可能なディスク・スリープで待機中(D)、ゾンビ・スレッド(Z)、停止したシグナルまたはトレースで停止中(T)、ページング(W)、デッド(X)、ウェークキル(K)、ウェーク中(W)またはパーク中(P)
UTIME_MS このスレッドがユーザー・モードで費やした時間(ミリ秒)。
STIME_MS このスレッドがカーネルモードで費やした時間(ミリ秒)。
CUTIME_MS このプロセスの子プロセスがユーザー・モードで費やした時間(ミリ秒)。
CSTIME_MS このプロセスの子プロセスがカーネル・モードで費やした時間(ミリ秒)。
NUM_THREADS このプロセス内のスレッドの番号。
VSIZE_BYTES 仮想メモリー・サイズ(バイト)。
RSS_BYTES プロセスが実メモリーに保持するバイト数(常駐セットサイズ)。
RSSLIM_BYTES プロセスの常駐設定サイズの制限(バイト)。
PROCESSOR スレッドが最後に実行されたCPU番号。
DELAYACCT_BLKIO_MS 集計ブロックI/O遅延(ミリ秒)。
GUEST_TIME_MS プロセスのゲスト時間(ミリ秒)。
CGUEST_TIME_MS プロセスの子プロセスのゲスト時間(ミリ秒)。
READ_BYTES このプロセスがストレージ・レイヤーからフェッチしたバイト数。
WRITE_BYTES このプロセスがストレージ・レイヤーに送信したバイト数。

ヘルス・モニターの変数の表示

ヘルス・モニター変数は、DBシステムのモニタリング・アクティビティの構成設定です。これらの変数の値は変更できません。

コマンドライン・クライアントの使用

MySQLクライアントやMySQLシェルなどのコマンドライン・クライアントを使用して、ヘルス・モニターの変数とその値を表示します。

このタスクでは次が必要です:
  • 実行中のDBシステム。
  • DBシステムに接続されているMySQLクライアントやMySQLシェルなどのコマンドライン・クライアント。DB Systemへの接続を参照してください。
ヘルス・モニターの変数を表示するには、次を実行します:
  1. MySQLシェルの場合は、\SQLコマンドを入力してSQLモードに切り替えます。
  2. 次のSQL文を入力します。
    show variables like 'health_monitor%';
次のようなレスポンスが返されます:
+----------------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------------+-------+
| health_monitor.disk_fallback_enable | ON |
| health_monitor.disk_fallback_force | OFF |
| health_monitor.disk_low_space_critical_level | 2000 |
| health_monitor.disk_low_space_duration | 300 |
| health_monitor.disk_low_space_level | 5000 |
| health_monitor.disk_low_space_percent | 4 |
| health_monitor.disk_monitored | /db |
| health_monitor.disk_recovery_enable | ON |
| health_monitor.disk_recovery_increment | 300 |
| health_monitor.disk_recovery_level | 5 |
| health_monitor.disk_recovery_max_cycles | 3 |
| health_monitor.disk_recovery_time_1 | 300 |
| health_monitor.disk_recovery_time_2 | 300 |
| health_monitor.disk_recovery_window | 86400 |
| health_monitor.disk_retention | 86400 |
| health_monitor.disk_running | ON |
| health_monitor.disk_sample_rate | 60 |
| health_monitor.disk_usage_warning_level_1 | 20 |
| health_monitor.disk_usage_warning_level_2 | 10 |
| health_monitor.disk_usage_warning_level_3 | 5 |
...
+----------------------------------------------+-------+
35 rows in set (0.01 sec)

ヘルス・モニターの変数

ヘルス・モニターのすべてのシステム変数には接頭辞health_monitorが付きます。DBシステムのデフォルト値から変数の値を変更することはできません。

ノート

次の表ではhealth_monitor.接頭辞が省略されています。たとえば、disk_fallback_enableは、実際にはhealth_monitor.disk_fallback_enableです。

表17-8ヘルス・モニターのシステム変数

システム変数 デフォルトの値 説明
disk_fallback_enable ON ディスク領域が著しくまたは持続的に不足している場合、ヘルス・モニターは、MySQL Serverでシステム変数SUPER_READ_ONLYおよびOFFLINE_MODEをONに設定します。
disk_fallback_force オフ グローバル・メタデータ・ロックを保持しているフォアグラウンド問合せを終了し、SUPER_READ_ONLYの設定を再試行します。
disk_low_space_critical_level 2000 MiBのクリティカルなディスク領域下限しきい値。使用可能なディスク領域がこの値を一定期間下回る場合、ヘルス・モニターはMySQL ServerでSUPER_READ_ONLYおよびOFFLINE_MODEモードを設定します。
disk_low_space_duration 300 ヘルス・モニターがMySQL ServerでSUPER_READ_ONLYおよびOFFLINE_MODEモードを設定するまでの、使用可能なディスク領域が disk_low_space_levelまたはdisk_low_space_percent (いずれか小さい方)を下回る期間(秒)。
disk_low_space_level 5000 MiBのストレージ予約の下限の領域しきい値。使用可能なディスク領域が、disk_low_space_durationの値より長く、合計ストレージのこのパーセンテージを下回ると、ヘルス・モニターは、MySQL ServerでSUPER_READ_ONLYおよびOFFLINE_MODEモードを設定します。
disk_low_space_percent 4 ストレージ予約の低スペースしきい値。パーセンテージで表されます。使用可能なディスク領域が、disk_low_space_durationの値より長く、合計ストレージのこのパーセンテージを下回ると、ヘルス・モニターは、MySQL ServerでSUPER_READ_ONLYおよびOFFLINE_MODEモードを設定します。
disk_monitored /db ディスク統計のマウント・ポイント。
disk_retention 86400

各データ・サンプルがディスク使用状況データの履歴表に保持される秒数。

最小値は1秒、デフォルトは86400秒(1日)、最大値は864000秒(10日)です。

memory_sample_rate=60およびmemory_retention=86400の場合、60秒ごとに最も古いサンプルが削除されて、1440サンプルが保持されます。

disk_recovery_enable ON 持続的または重大な不足からの回復を有効にするには変数をONにし、持続的または重大な不足からの回復を無効にするにはOFFに設定します。
disk_recovery_level 5% ストレージ予約を上回る合計ディスク領域の割合。
  • 使用可能なストレージがdisk_recovery_time_1秒間disk_recovery_levelレベルより上に残っている場合、ヘルス・モニターはOFFLINE_MODE = OFFを設定します。
  • 追加のdisk_recovery_time_2秒間、ストレージがdisk_recovery_levelレベルを上回ったままの場合、ヘルス・モニターはSUPER_READ_ONLY = OFFを設定します。
disk_recovery_time_1 300秒 ヘルス・モニターがOFFLINE_MODE = OFFを設定する前に、使用可能なストレージがdisk_recovery_levelを上回っている必要がある時間(秒)。
disk_recovery_time_2 300秒 ヘルス・モニターがSUPER_READ_ONLY = OFFを設定する前に、使用可能なストレージがdisk_recovery_time_1の後にdisk_recovery_levelを超える必要がある追加の時間(秒)。
disk_recovery_max_cycles 3サイクル disk_recovery_cycle_window時間枠内でMySQLサーバーを通常の動作モードに戻すことができる最大回数。
disk_recovery_window 86400秒 最後に成功したリカバリ・サイクルに続く、リカバリ数がリセットされるまでの時間(秒)。値0は、リカバリ数がリセットされないことを意味します。
disk_recovery_increment 300秒 リカバリ・サイクルごとにdisk_recovery_time_1およびdisk_recovery_time_2リカバリ・タイマーを増やす時間(秒)。
disk_running ON ヘルス・モニターのディスク・モニターのアクティブ状態。
disk_sample_rate 60 ディスクデータ収集の頻度(秒単位)。デフォルトでは、データは60秒ごとに収集されます。最小サンプル レートは1 (1秒ごと)で、最大は86400 (1日に1回)です。
disk_usage_warning_level_1 20 定義済のdisk_low_space_levelを上回る、使用可能なディスク領域の割合。使用可能なディスク領域がこのレベルを下回ると、警告WARNING_DISK_USAGE_LEVEL_1が発生します。
disk_usage_warning_level_2 10 定義済のdisk_low_space_levelよりも上回る、使用可能なディスク領域の割合。使用可能なディスク領域がこのレベルを下回ると、警告WARNING_DISK_USAGE_LEVEL_2が発生します。
disk_usage_warning_level_3 5 定義済のdisk_low_space_levelよりも上回る、使用可能なディスク領域の割合。使用可能なディスク領域がこのレベルを下回ると、警告WARNING_DISK_USAGE_LEVEL_3が発生します。
memory_reporting ON メモリー・データのレポートを有効にします。
memory_retention 86400

各データ・サンプルがメモリー使用状況データの履歴表に保持される秒数。

最小値は1秒、デフォルトは86400秒(1日)、最大値は864000秒(10日)です。

memory_running ON ヘルス・モニターのメモリー・モニターのアクティブ状態。
memory_sample_rate 60 メモリーデータ収集の頻度(秒単位)。デフォルトでは、データは60秒ごとに収集されます。最小サンプル レートは1 (1秒ごと)で、最大は86400 (1日に1回)です。
memory_usage_warning_level_1 1024 使用可能なメモリーの量(MiB)。使用可能なメモリーがこのレベルを下回ると、警告WARNING_MEMORY_USAGE_LEVEL_1が発生します。
memory_usage_warning_level_2 500 使用可能なメモリーの量(MiB)。使用可能なメモリーがこのレベルを下回ると、警告WARNING_MEMORY_USAGE_LEVEL_2が発生します。
memory_usage_warning_level_3 100 使用可能なメモリーの量(MiB)。使用可能なメモリーがこのレベルを下回ると、警告WARNING_MEMORY_USAGE_LEVEL_3が発生します。
status_interval 10 ステータス・メッセージをエラー・ログ表に送信する頻度(disk_sample_rateの倍数)。たとえば、status_interval = 10秒でdisk_sample_rate = 60秒の場合、ヘルス・モニターは600秒ごとにステータス・メッセージをエラー・ログ表に送信します。
system_cpu_stats_history ON システムCPU使用率統計が収集され、パフォーマンス・スキーマ表system_cpu_stats_historyに格納されるかどうか。これらの統計が格納されていない場合でも、system_cpu_stats表を問い合せることで、必要に応じてスナップショットにアクセスできます。
system_disk_stats_history ON システム・ディスク使用率統計が収集され、パフォーマンス・スキーマ表system_memory_stats_historyに格納されるかどうか。これらの統計が格納されていない場合でも、system_memory_stats表を問い合せることで、必要に応じてスナップショットにアクセスできます。
system_memory_stats_history ON システム・メモリー使用量の統計を収集してパフォーマンス・スキーマ表system_disk_stats_historyに格納するかどうか。これらの統計が格納されていない場合でも、system_disk_stats表を問い合せることで、必要に応じてスナップショットにアクセスできます。
system_process_stats_history ON MySQLサーバー・プロセス(mysqld)統計が収集され、パフォーマンス・スキーマ表system_process_stats_historyに格納されるかどうか。これらの統計が格納されていない場合でも、system_process_stats表を問い合せることで、必要に応じてスナップショットにアクセスできます。
system_retention 86400

各データ・サンプルがシステム統計およびプロセス統計の履歴表に保持される秒数。

最小値は1秒、デフォルトは86400秒(1日)、最大値は864000秒(10日)です。

system_running ON ヘルス・モニターによってシステム統計が収集されるかどうか。これをONに設定すると、システムCPU使用率、ディスク使用率、メモリー使用率およびMySQLサーバー・プロセス(mysqld)の統計表が使用可能になり、システム変数がONに設定されている場合、対応する履歴表が移入されます。
system_sample_rate 60 システム統計収集の頻度(秒単位)。デフォルトでは、データは60秒ごとに収集されます。最小サンプル レートは1 (1秒ごと)で、最大は86400 (1日に1回)です。

ヘルス・モニターのメッセージ

ヘルス・モニターのエラー、警告およびステータス更新は、performance_schema.error_logに記録されます。ヘルス・モニターでは、エラー・ログのTiBはT、GiBはG、MiBはMと略されます。たとえば、306.6G = 306.6 GiB = 329.2 GBです。

表17-9ヘルス・モニターのメッセージ

メッセージのタイプ 説明
ステータス更新 ヘルス・モニターは、sample_rate * status_intervalで定義された秒数に従ってルーチン・ステータス更新を発行します。例:
[Note] [MY-013694] [Health] Disk Collector: Started: running=ON, monitored='/db', 
sample rate=30s, retention=86400s, max samples=2880, status interval=1, low level=100 MiB, 
low percent=4%, critical level=10 MiB, warning levels=20/10/5%, fallback (enable=ON, force=ON), 
low space duration=300s, recovery (enable=ON, level=5%, time 1=300s, time 2=300s, max cycles=3,
increment=10, window=86400)
しきい値警告 使用可能な領域の量がdisk_usage_warning_level_*で定義されたしきい値の1つを下回ると、ヘルス・モニターは警告を発行します。次の例は、disk_usage_warning_level_2 (領域の下限を超える合計領域の4%として定義されている)の警告を示しています:
[Warning] [MY-013695] [Health] Disk: Warning Level 2 (62M): monitored='/db', 
available=59M, total=466M, used=87.2%, low limit=18M, critical=10M, recovery=40M, 
warnings=107M/62M/40M
disk_low_space_durationの警告 使用可能なディスク領域が18 GiBの下限領域を下回ると、ヘルス・モニターはフォールバック・タイマーを開始し、警告を発行します。例:
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Running: 300 seconds 
until SUPER_READ_ONLY: monitored='/db', available=15M, total=466M, used=96.6%, low limit=18M, 
critical=10M, recovery=40M, warnings=107M/62M/40M
OFFLINE/SUPER_READ_ONLYモードの警告 If the available disk space remains below the low space limit for more than disk_low_space_duration seconds, the Health Monitor puts the server into SUPER_READ_ONLY and OFFLINE_MODE.例:
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Running: 30 seconds until 
SUPER_READ_ONLY: monitored='/db', available=15M, total=466M, used=96.6%, low limit=18M, critical=10M, 
recovery=40M, warnings=107M/62M/40M
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Expired
[Warning] [MY-013695] [Health] Disk: Low Level (18M): OFFLINE_MODE = ON
[Warning] [MY-013695] [Health] Disk: Low Level (18M): SUPER_READ_ONLY = ON
「SUPER_READ_ONLYおよびOFFLINE_MODEの問題の解決」を参照してください。
クリティカルな警告 使用可能なディスク領域がdisk_low_space_critical_levelを下回ると、経過時間に関係なく、ヘルス・モニターは、サーバーをSUPER_READ_ONLYモードにします。たとえば、次のとおりです。
[Warning] [MY-013695] [Health] Disk Collector: CRITICAL LEVEL (2G): 
OFFLINE_MODE=ON: mount point='/db', available=1.9G, total=1024G, 
used=99.1%, low limit=5.0G, critical=2.0G, warnings=204G/102G/51G 
[Warning] [MY-013695] [Health] Disk Collector: CRITICAL LEVEL (2G): 
SUPER_READ_ONLY=ON: mount point='/db', available=1.9G, total=1024G, 
used=99.1%, low limit=5.0G, critical=2.0G, warnings=204G/102G/51G
タイマー取消済警告 使用可能なディスク領域が、disk_low_space_duration秒が経過する前に領域の下限よりも増えると、フォールバック・モード・タイマーが取り消され、ヘルス・モニターがステータス・メッセージまたは警告メッセージ(使用可能なディスク領域が引き続き警告の範囲内の場合)を発行します。たとえば、次のとおりです。
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Canceled
[Warning] [MY-013695] [Health] Disk: Warning Level 1 (107M): monitored='/db', available=79M, 
total=466M, used=82.9%, low limit=18M, critical=10M, recovery=40M, warnings=107M/62M/40M
メモリー警告 使用可能なメモリーがmemory_usage_warning_level_*で定義されたしきい値の1つを下回ると、ヘルス・モニターは、カンマ区切り値(csv)のメモリー診断の詳細を含む警告を発行します。次の例のcsvデータは、領域制約のために削除されています。
[Warning] [MY-013695] [Health] MEMORY: WARNING LEVEL 1 (1.0G): available=950M, total=7.5G, used=87.6%, 
mysqld=5.9G, warnings=1.0G/500M/100M
[Warning] [MY-013695] [Health]  
[Warning] [MY-013695] [Health] ===== MEMORY DIAGNOSTICS BEGIN (csv) =====

---------------------------------------
TOTAL ALLOCATED MEMORY AND BUFFER SIZES
---------------------------------------
keyword,value
mysql_version,8.0.33
total_allocated,15121493496
innodb_buffer_pool_size,13958643712
join_buffer_size,262144
----------------------------------------
MEMORY AGGREGATION PER LOGICAL COMPONENT
----------------------------------------
component,current_count,current_alloc,max_alloc,min_alloc
...<csv data>...

-----------------------
MEMORY USAGE PER THREAD
-----------------------
thread_id,user,current_count_used,current_allocated,current_avg_alloc,current_max_alloc,total_allocated
...<csv data>...

-----------------------
MEMORY USAGE PER USER
-----------------------
user,current_count_used,current_allocated,current_avg_alloc,current_max_alloc,total_allocated
...<csv data>...

-------------------
PROCESSLIST DETAILS
-------------------
thd_id,conn_id,user,db,command,state,time,current_statement,execution_engine,statement_latency,progress,
lock_latency,cpu_latency,rows_examined,rows_sent,rows_affected,tmp_tables,tmp_disk_tables,full_scan,
last_statement,last_statement_latency,current_memory,last_wait,last_wait_latency,source,trx_latency,
trx_state,trx_autocommit,pid,program_name
...<csv data>...

---------------
SESSION DETAILS
---------------
thd_id,conn_id,user,db,command,state,time,current_statement,execution_engine,statement_latency,progress,
lock_latency,cpu_latency,rows_examined,rows_sent,rows_affected,tmp_tables,tmp_disk_tables,full_scan,
last_statement,last_statement_latency,current_memory,last_wait,last_wait_latency,source,trx_latency,
trx_state,trx_autocommit,pid,program_name
...<csv data>...

--------------------------------------------------------
CURRENT STATEMENT PER THREAD ORDERED BY STATEMENT MEMORY
--------------------------------------------------------
THREAD_ID,EVENT_ID,END_EVENT_ID,EVENT_NAME,SOURCE,TIMER_START,TIMER_END,TIMER_WAIT,LOCK_TIME,SQL_TEXT,
DIGEST,DIGEST_TEXT,CURRENT_SCHEMA,OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME,OBJECT_INSTANCE_BEGIN,MYSQL_ERRNO,
RETURNED_SQLSTATE,MESSAGE_TEXT,ERRORS,WARNINGS,ROWS_AFFECTED,ROWS_SENT,ROWS_EXAMINED,CREATED_TMP_DISK_TABLES,
CREATED_TMP_TABLES,SELECT_FULL_JOIN,SELECT_FULL_RANGE_JOIN,SELECT_RANGE,SELECT_RANGE_CHECK,SELECT_SCAN,
SORT_MERGE_PASSES,SORT_RANGE,SORT_ROWS,SORT_SCAN,NO_INDEX_USED,NO_GOOD_INDEX_USED,NESTING_EVENT_ID,
NESTING_EVENT_TYPE,NESTING_EVENT_LEVEL,STATEMENT_ID,CPU_TIME,MAX_CONTROLLED_MEMORY,MAX_TOTAL_MEMORY,
EXECUTION_ENGINE
...<csv data>...

----------------------------------------------------------
CURRENT STATEMENT PER THREAD FOR THREADS USING MOST MEMORY
----------------------------------------------------------
THREAD_ID,EVENT_ID,END_EVENT_ID,EVENT_NAME,SOURCE,TIMER_START,TIMER_END,TIMER_WAIT,LOCK_TIME,SQL_TEXT,
DIGEST,DIGEST_TEXT,CURRENT_SCHEMA,OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME,OBJECT_INSTANCE_BEGIN,MYSQL_ERRNO,
RETURNED_SQLSTATE,MESSAGE_TEXT,ERRORS,WARNINGS,ROWS_AFFECTED,ROWS_SENT,ROWS_EXAMINED,CREATED_TMP_DISK_TABLES,
CREATED_TMP_TABLES,SELECT_FULL_JOIN,SELECT_FULL_RANGE_JOIN,SELECT_RANGE,SELECT_RANGE_CHECK,SELECT_SCAN,
SORT_MERGE_PASSES,SORT_RANGE,SORT_ROWS,SORT_SCAN,NO_INDEX_USED,NO_GOOD_INDEX_USED,NESTING_EVENT_ID,
NESTING_EVENT_TYPE,NESTING_EVENT_LEVEL,STATEMENT_ID,CPU_TIME,MAX_CONTROLLED_MEMORY,MAX_TOTAL_MEMORY,
EXECUTION_ENGINE,thread_id
...<csv data>...

----------------------------------------------------------
STATEMENT HISTORY PER THREAD FOR THREADS USING MOST MEMORY
----------------------------------------------------------
THREAD_ID,EVENT_ID,END_EVENT_ID,EVENT_NAME,SOURCE,TIMER_START,TIMER_END,TIMER_WAIT,LOCK_TIME,SQL_TEXT,
DIGEST,DIGEST_TEXT,CURRENT_SCHEMA,OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME,OBJECT_INSTANCE_BEGIN,MYSQL_ERRNO,
RETURNED_SQLSTATE,MESSAGE_TEXT,ERRORS,WARNINGS,ROWS_AFFECTED,ROWS_SENT,ROWS_EXAMINED,CREATED_TMP_DISK_TABLES,
CREATED_TMP_TABLES,SELECT_FULL_JOIN,SELECT_FULL_RANGE_JOIN,SELECT_RANGE,SELECT_RANGE_CHECK,SELECT_SCAN,
SORT_MERGE_PASSES,SORT_RANGE,SORT_ROWS,SORT_SCAN,NO_INDEX_USED,NO_GOOD_INDEX_USED,NESTING_EVENT_ID,
NESTING_EVENT_TYPE,NESTING_EVENT_LEVEL,STATEMENT_ID,CPU_TIME,MAX_CONTROLLED_MEMORY,MAX_TOTAL_MEMORY,
EXECUTION_ENGINE,thread_id
...<csv data>...

-----------------------------
EVENTS ALLOCATING MOST MEMORY
-----------------------------
processlist_id,processlist_user,thread_id,event_name,count_alloc,count_free,current_count_used,
current_number_of_bytes_used
...<csv data>...

----------------------
BUFFER POOL STATISTICS
----------------------
POOL_ID,POOL_SIZE,FREE_BUFFERS,DATABASE_PAGES,OLD_DATABASE_PAGES,MODIFIED_DATABASE_PAGES,PENDING_DECOMPRESS,
PENDING_READS,PENDING_FLUSH_LRU,PENDING_FLUSH_LIST,PAGES_MADE_YOUNG,PAGES_NOT_MADE_YOUNG,PAGES_MADE_YOUNG_RATE,
PAGES_MADE_NOT_YOUNG_RATE,NUMBER_PAGES_READ,NUMBER_PAGES_CREATED,NUMBER_PAGES_WRITTEN,PAGES_READ_RATE,
PAGES_CREATE_RATE,PAGES_WRITTEN_RATE,NUMBER_PAGES_GET,HIT_RATE,YOUNG_MAKE_PER_THOUSAND_GETS,
NOT_YOUNG_MAKE_PER_THOUSAND_GETS,NUMBER_PAGES_READ_AHEAD,NUMBER_READ_AHEAD_EVICTED,READ_AHEAD_RATE,
READ_AHEAD_EVICTED_RATE,LRU_IO_TOTAL,LRU_IO_CURRENT,UNCOMPRESS_TOTAL,UNCOMPRESS_CURRENT
...<csv data>...

関連トピック