スマートスタイル TECH BLOG

データベース&クラウド技術情報

MySQL Database Serviceのモニタリング拡張とヘルスモニターについて

はじめに

今回は先月拡張されたMySQL Database Service(以下MDS)のモニタリング機能とヘルスモニタ―についてご紹介します。
リリースノートはこちらからご覧ください。
MDSのモニタリング機能に関しては以前MySQL Database Service のモニタリングを考えるで触れておりますので、ご興味がある方はご一読ください。

モニタリング拡張

拡張された主な項目としてDisk Space, HeatWave, Backup, Channelsが追加されました。
以下追加メトリックになります。

メトリック 説明
Network Receive Bytes MySQL DBシステムのネットワーク受信バイト
Network Transmit Bytes MySQL DBシステムのネットワーク送信バイト
Disk Space Utilization DBボリュームの合計領域使用率
Total Backup Size DBシステム当たりのすべてのバックアップの集計サイズ
Backup Time バックアップ操作にかかる時間
HeatWave Health Status HeatWaveヘルス・ステータス。(0:正常/1:リカバリ/2:失敗)
HeatWave Data Load Progress HeatWaveメモリーへのデータ・ロードの進行状況
HeatWave Statement Count MySQL Databaseに対して実行され、HeatWaveで実行された文の数
ChannelLag 最後の間隔で観測された、ソースに対するチャネル遅延
ChannelFailure 最後の間隔で観測されたチャネル障害イベント

以前では見れなかったネットワークや、ディスクの使用状況が見えるようになりました。
また新しく追加された機能のインバウンドレプリケーションやHeatWave関連も追加されています。

ヘルスモニター

ヘルスモニター機能はマニュアルによるとディスク容量を監視する機能のようです。

MySQL Health Monitor is a MySQL Server component which monitors the amount of disk space available to you and raises alarms when preconfigured limits are breached. The variables and thresholds are not configurable.

設定されたディスク使用量の閾値を下回った場合、新たな更新を受け付けなくなるようです。

In the event your available disk space drops below a set amount for a specific duration, the MySQL server engages a fallback mode (SUPER_READ_ONLY) which rejects all new incoming SQL write statements (UPDATE, INSERT, DELETE, and DDL), regardless of users and privileges. Running transactions are allowed to complete.

ヘルスモニター用には構成変数があり、プレフィックスとしてhealth_monitor.がついています。
現時点では確認だけで変更は出来ませんが、下記のものがありました。
※下記の表ではhealth_monitor.は割愛してます。

構成変数 説明 デフォルト値
disk_fallback_enable フォールバックが有効かどうかを示します。フォールバックモードはSUPER_READ_ONLYとなり、ユーザーと特権に関係なく、すべての新しい着信SQL書き込みステートメント(UPDATE、INSERT、DELETE、およびDDL)を拒否します。 ON
disk_low_space_critical_level MiBのクリティカルな低ディスク容量を定義します。使用可能なディスク容量が一定期間この値を下回ると、サーバーは読み取り専用モードになります。 2000
disk_low_space_duration サーバーが読み取り専用モードになる前に、使用可能なディスク領域がdisk_low_space_levelかdisk_low_space_percentの低い方の値、または両方を下回ったままにできる時間を秒単位で定義します。 300
disk_low_space_level MiBで予約ストレージとして指定されたディスクスペースの合計マウントを定義します。使用可能なディスク容量がdisk_low_space_durationの値よりも長くこのレベルを下回った場合、サーバーは読み取り専用モードになります。 5000
disk_low_space_percent 低スペースレベルをパーセントで定義します。使用可能なディスク容量が、disk_low_space_durationの値よりも長く使用可能なストレージの合計のこのパーセンテージを下回った場合、サーバーは読み取り専用モードになります。 4
disk_monitored ディスク統計のマウントポイント /db
disk_retention 保持されるデータサンプルの数 86400
disk_running ヘルスモニターのアクティブ状態を示します ON
disk_sample_rate データ収集の速度を秒単位で定義します 60
disk_usage_warning_level_1 使用可能なディスク容量がこのレベルを下回ると、警告WARNING_DISK_USAGE_LEVEL_1が表示されます 20
disk_usage_warning_level_2 使用可能なディスク容量がこのレベルを下回ると、警告WARNING_DISK_USAGE_LEVEL_2が表示されます 10
disk_usage_warning_level_3 使用可能なディスク容量がこのレベルを下回ると、警告WARNING_DISK_USAGE_LEVEL_3が表示されます 5
status_interval disk_sample_rateステータスの更新がエラーログに書き込まれる頻度を倍数で定義します。たとえば、status_intervalが10でdisk_sample_rate秒が60秒の場合、ステータスメッセージは600秒ごとにログに書き込まれます。 10

実際にMDS内で確認した結果は下記になります。

データ量を増やして、コマンドラインから使用可能なディスク容量の確認してみます。
パフォーマンススキーマのhealth_block_deviceテーブル内にモニタリングで蓄積されたデータがありますので、下記のようにSELECT文を実行することで確認できます。

モニタリング拡張で追加された[Disk Space Utilization]と同じ内容でした。

またヘルスモニターでの警告とエラーはperformance_schema.error_logテーブルに記録されます。

試しにテストデータを増やしてみたところavailableが11.6Gを下回ったところでワーニングが出力されました。

さらに続けてavailableが6.8G,4.4Gを下回るとワーニングレベルが上がっていき、最終的に2Gを下回るとクリティカルとなりOFFLINE_MODEとなりました。
OFFLINE_MODEとなるとCONNECTION_ADMIN特権を持たないクライアントユーザーを切断し、以降のアクセスをブロックします。

この状態になってしまうとテストデータを削除しても、システムの再起動をするまでOFFLINE_MODEが解除されないため注意が必要です。
なお、データ投入後一定時間経過すると不要なログデータ等が削除されているのか、ディスク使用量が減少します。
その状態であれば、SUPER_READ_ONLYが解除されデータを消すことが出来ましたが、使用量が減らないとデータを消すことも出来ませんのでくれぐれもご注意ください。

まとめ

本記事作成時点(2021年9月15日)では、MDSのストレージを動的に増やすことが出来ません。
より大容量のストレージが必要となった場合、今年6月から利用出来るようになったバックアップからストレージサイズを増やして新しく起動させるか、新規に起動させたMDSにデータを移行するといった手順が必要です。
そのため、現状ではMDSのストレージ管理は非常に重要となっています。
今回モニタリングで拡張された ディスク領域使用率(Disk Space Utilization)メトリックを利用し、アラーム設定をして備えておく事が良いかと思います。
アラーム設定等の通知に関しては、以前の記事MySQL Database Service のイベントを通知してみるにて触れておりますので、ご覧いただけたらと思います。


Oracle Cloud
Return Top