はじめに

クラウドインテグレーション事業部の三木です。
利用しているAuroraでロックが発生していたため、InnoDBモニターを有効化し調査しました。
Aurora MySQL のバージョンによって、InnoDBモニターを有効化する方法等が違ったため説明します。

InnoDBモニターについて

InnoDBモニターでの定期的な出力を有効にすると、InnoDBはその出力をmysqldサーバーの標準エラー出力(stderr)に書き込みます。[1]
InnoDBモニターの種類は以下2つありますが、それぞれの内容については公式ドキュメントをご確認ください。[1]

  • InnoDB標準モニター
  • InnoDBロックモニター

Aurora MySQL バージョンごとの変更方法の違いについて

以下の様な違いがあります。

  • Aurora MySQL バージョン 1系の場合:データベースへ接続して変更する
  • Aurora MySQL バージョン2系・3系の場合:パラメータグループで変更可能

Aurora MySQL バージョン 1系の場合

Auroraに接続し以下コマンドを実行することで、InnoDB標準モニターを有効化することができます。
どのDATABASEを利用するかは自由ですが、TABLE名は「innodb_monitor」にする必要があります。

CREATE DATABASE lock_management;
USE lock_management;
CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;

Auroraに接続し以下コマンドを実行することで、InnoDBロックモニターを有効化することができます。
どのDATABASEを利用するかは自由ですが、TABLE名は「innodb_lock_monitor」にする必要があります。

CREATE DATABASE lock_management;
USE lock_management;
CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;

Aurora MySQL バージョン2系・3系の場合

RDSのコンソールでキャプチャに記載している数字の順番で画面遷移を行います。

「innodb_status_output」と入力します。

InnoDBモニターの有効化に必要なパラメータは以下2つです。
それぞれの内容については公式ドキュメントをご確認ください。[1]

innodb_status_output InnoDB標準モニター
innodb_status_output_locks InnoDBロックモニター

「値」を1に設定するとモニターを有効化し、0に設定すると無効化できます。
尚、上記パラメータは「動的パラメータ」であり、パラメータの変更はただちにDBインスタンスに適用されるため、再起動は不要です。

出力されているログの確認

RDSのコンソールでキャプチャに記載している数字の順番で画面遷移を行います。

キャプチャに記載している数字の順番で画面遷移を行い、「error/mysql-error.log」と入力します。

「表示」、「見る」、「ダウンロード」それぞれからログを確認できます。

Aurora MySQL バージョン 1系でInnoDBモニターの有効化をする上での注意点

InnoDBモニター用のDATABASEを作成し、継続的にログを出力することになります。
ログ出力によってRDSのパフォーマンスに影響を与えます。
InnoDBモニターが不要になったら無効化することを推奨致します。
InnoDB標準モニター、InnoDBロックモニターを無効化するには、作成したTABLEを削除する必要があります。
Aurora MySQL バージョン2系・3系の場合、InnoDBモニターの有効化をする上でDATABASEを作成しないのでRDSのパフォーマンスに影響を与えません。
InnoDB標準モニター、InnoDBロックモニターを無効化するには、パラメータグループの「値」を0に設定する必要があります。

参考記事

[1]:MySQL 5.6 リファレンスマニュアル「14.15.2 InnoDB モニターの有効化」
https://dev.mysql.com/doc/refman/5.6/ja/innodb-enabling-monitors.html

まとめ

今回利用していたRDSが、Aurora MySQL バージョン 1クラスターだったので、この様な調査を行いました。
来年Aurora MySQL バージョン 1がEOLを迎えるので、時間がある時にアップグレードをしようかと考えています。


アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアティアサービスパートナーであるアイレットに、ぜひお任せください。

AWS 運用・保守サービスページ

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://www.iret.co.jp/contact/service/form/