既存の Aurora MySQL インスタンスでパフォーマンススキーマを有効にする方法

パフォーマンスインサイトの有効化には再起動の必要はありませんが、パフォーマンススキーマの有効化には再起動が必要です。
2021.07.11

困っていた内容

既存の Aurora MySQL インスタンスのパフォーマンスインサイトを有効化する際に「Performance Insights を有効にすると、Aurora MySQL パフォーマンススキーマが自動的に有効となります。」との記載があったが、SHOW VARIABLES LIKE 'performance_schema'; を実行すると OFF が返却されます。

または、

パフォーマンスインサイトのページを開いたときに、以下のようなメッセージが表示されます。

このデータベースインスタンスではパフォーマンススキーマが有効になっていません。つまり、Performance Insights は最適でないモードで動作し、重要なデータの一部が失われます。

どうすればいいの?

パフォーマンスインサイトの有効化には再起動は必要ありませんが、パフォーマンススキーマの有効化には再起動が必要となります。


パフォーマンススキーマを有効にすることでパフォーマンスインサイトが提供する情報がより詳細になるため、再起動を実施することをおすすめします。

Aurora MySQL におけるパフォーマンスインサイトのパフォーマンススキーマの有効化

Aurora MySQL の Performance Schema を有効にすると、Performance Insights が提供する情報がより詳細になります。たとえば、Performance Insights には、詳細な待機イベントによって分類された DB 負荷が表示されます。Performance Schema が有効でない場合、Performance Insights には、MySQL プロセスのリストの状態別に分類された DB 負荷が表示されます。

試してみる

パフォーマンスインサイトを有効化させずに Aurora MySQL インスタンスを作成し、その後にパフォーマンスインサイトとパフォーマンススキーマを有効化させるまでの手順を紹介します。

まずは Aurora MySQL のデータベースを作っていきます。

Auroraクラスターの作成


Performance Insights でサポートされている DB エンジンの基準をクリアしている、「Aurora(MySQL5.7) 2.07.2」を選択しました。

Auroraバージョン


また、Amazon Aurora MySQL の場合、db.t2 および db.t3 DB インスタンスクラスではパフォーマンスインサイトがサポートされていないため、DB インスタンスクラスは 「db.r5.large」を選択します。

DBインスタンスクラス


ここで一旦パフォーマンスインサイトを「無効」として進めていきます。

パフォーマンスインサイトを無効化とする


「データベースの作成」を選択します。

データベースの作成を選択


Aurora クラスターが作成されました。

Auroraクラスター作成されました


Aurora インスタンスにアクセスを行うために、同一 VPC 上に EC2 インスタンスを作成しました。

Aurora接続用インスタンス

(※ Aurora インスタンスのセキュリティグループで 3306 ポートを開けて、ソース<送信元>には EC2 インスタンスのセキュリティグループを入れています。)


SSH 接続で EC2 にログインを行います。その後 sudo yum update でパッケージを最新の状態にしておきます。

$ sudo yum update


次に以下のコマンドで mysql をインストールします。

$ sudo yum install mysql


クラスター作成時に設定したユーザ名、Aurora インスタンスのエンドポイントを入れ込んだ以下のコマンドを入力し、パスワードを入力してログインを行います。

$ mysql -u <ユーザ名> -p -h <Aurora インスタンスのエンドポイント>
Enter password:


ログインができたら、SHOW VARIABLES LIKE 'performance_schema';コマンドでパフォーマンススキーマの設定を確認しておきます。
パフォーマンスインサイト自体が無効化されていますので、パフォーマンススキーマも無効の状態となっています。

mysql> SHOW VARIABLES LIKE 'performance_schema';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| performance_schema | OFF   |
+--------------------+-------+
1 row in set (0.01 sec)


ここで Writer インスタンスを選択します。

Writerインスタンスを選択します


そしてパフォーマンスインサイトを有効にし、「すぐに適用」を選択します。

パフォーマンスインサイトを有効化します 変更をすぐに適用させる


しばらく時間をおいて変更が完了するのを待った後、パフォーマンスインサイトが有効となりました。

パフォーマンスインサイトが有効となって詳細が確認できるように


そしてパフォーマンススキーマが有効になったかどうかを先ほどと同じ手順で確認します。
以下の通り、有効となってない状態です。

mysql> SHOW VARIABLES LIKE 'performance_schema';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| performance_schema | OFF   |
+--------------------+-------+
1 row in set (0.01 sec)


ここで対象インスタンスを再起動するとパフォーマンススキーマが有効となりますので、実行します。


SHOW VARIABLES LIKE 'performance_schema';コマンドで確認すると、無事パフォーマンススキーマが有効になりました。

mysql> SHOW VARIABLES LIKE 'performance_schema';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| performance_schema | ON    |
+--------------------+-------+
1 row in set (0.00 sec)


パフォーマンススキーマの手動での有効化

以下の状態の場合は対応方法が異なりますのでご注意ください。

次の両方の条件に該当する場合、パフォーマンススキーマは有効になりません。
・performance_schema パラメータの値が 0 または 1 として設定されている。
・performance_schema パラメータの 送信元 が user として設定されている。

以下は RDS インスタンスのドキュメントになりますが、Aurora MySQL でも同手順で対応を行うとパフォーマンススキーマを有効化できますのでご参照ください。

パフォーマンススキーマの手動での有効化

参照

Performance Insights の有効化と無効化
Performance Insights でサポートされている DB エンジン
パフォーマンススキーマの手動での有効化