動作モニター

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

ヘルス・モニターの概要

ヘルス・モニターは、ディスク領域情報、システム・メモリー情報およびプロセス・メモリー情報を60秒ごとにサンプリングし、MySQL Serverのパフォーマンス・スキーマの表に1日分のデータを格納します。使用可能なディスク領域または使用可能なメモリーが特定の事前設定されたしきい値を下回ると、ヘルス・モニターによって警告が発行され、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: MySQL Serverでシステム変数SUPER_READ_ONLYをONに設定します。MySQL Serverは、ユーザーや権限に関係なく、新しく受信するすべてのSQL書込み文(UPDATEINSERTDELETEおよびDDL)を拒否します。実行中のトランザクションは完了できますが、ディスク領域が再度使用可能になるまで、新しい書込みは禁止されます。サーバーがSUPER_READ_ONLYモードの場合、HeatWaveクラスタにデータをロードできません。

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

  • OFFLINE_MODE=ON: MySQL Serverでシステム変数OFFLINE_MODEをONに設定します。MySQL Serverは、CONNECTION_ADMIN権限を持たないクライアントユーザーを切断し、実行中のステートメントを終了してロックを解放し、適切なエラーによって新しい接続をブロックします。
  • super_read_only_disk_full=ON: ディスク領域が少ないために読取り専用モードがトリガーされたことを示すステータス変数super_read_only_disk_fullをONに設定します。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日分のデータを保持する履歴バージョンがあります。どちらのバージョンの表にも同じ列があります。

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

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

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

    たとえば、ディスク・ストレージ・ステータスを表示するには、次のSQLコマンドを使用します。

    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パフォーマンス・スキーマ表

Description
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表

ヘルス・モニターは、DBシステムによるCPU使用量の統計を収集します。統計は、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 CPUの行は集計されたCPU使用率データを示し、各番号付き行(cpu0、cpu1など)は個々のプロセスのデータを示します。すべての時間はミリ秒単位です。
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行を返します。ただし、履歴表には、mysqldプロセスで使用されるすべてのスレッドの総計とともに、サンプルごとに1つの行が格納されます。

これらの表の統計は、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ヘルス・モニターのシステム変数

システム変数 デフォルトの値 Description
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サイクル MySQLサーバーをdisk_recovery_cycle_window時間枠内に通常の動作モードに戻すことができる最大回数。
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 (毎秒)で、最大は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 (毎秒)で、最大は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 (毎秒)で、最大は86400 (1日に1回)です。

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

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

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

メッセージ・タイプ Description
ステータス更新 ヘルス・モニターは、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モードの警告 使用可能なディスク領域が領域の下限を下回ったままdisk_low_space_duration秒を超えると、ヘルス・モニターは、サーバーをSUPER_READ_ONLYおよび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>...

関連トピック