既存の Aurora MySQL インスタンスでパフォーマンススキーマを有効にする方法
困っていた内容
既存の 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 のデータベースを作っていきます。
Performance Insights でサポートされている DB エンジンの基準をクリアしている、「Aurora(MySQL5.7) 2.07.2」を選択しました。
また、Amazon Aurora MySQL の場合、db.t2 および db.t3 DB インスタンスクラスではパフォーマンスインサイトがサポートされていないため、DB インスタンスクラスは 「db.r5.large」を選択します。
ここで一旦パフォーマンスインサイトを「無効」として進めていきます。
「データベースの作成」を選択します。
Aurora クラスターが作成されました。
Aurora インスタンスにアクセスを行うために、同一 VPC 上に EC2 インスタンスを作成しました。
(※ 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 インスタンスを選択します。
そしてパフォーマンスインサイトを有効にし、「すぐに適用」を選択します。
しばらく時間をおいて変更が完了するのを待った後、パフォーマンスインサイトが有効となりました。
そしてパフォーマンススキーマが有効になったかどうかを先ほどと同じ手順で確認します。
以下の通り、有効となってない状態です。
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 でも同手順で対応を行うとパフォーマンススキーマを有効化できますのでご参照ください。