🤖

[CFn]Aurora MySQLでPerformance Insightsを有効化する場合の注意点

2023/03/09に公開

今回のテーマについて

こんにちわ!

DevelopersIO BASECAMP参加者の加藤です!

先日CloudFormationから、AuroraMySQLのVersion3(8.0)クラスターに対してPerformanceInsightsを有効化しようとした所、以下エラーが発生しました。

エラーメッセージ/DBClusterでCreateFailed発生
Resource handler returned message: “Enable Performance Insights isn’t supported for DB engine aurora-mysql at the cluster level. 

訳: DB エンジン aurora-mysql では、クラスタレベルでパフォーマンスインサイトがサポートされていません。

ドキュメントを読み解決してみたいと思います!

先に結論から

① aurora-mysqlではクラスター(AWS::RDS::DBCluster)に対してPerformance Insightsを設定(PerformanceInsightsEnabled: true)することはできない。 (※2023年3月8日現在)

② DBインスタンス(AWS::RDS::DBInstance)でEnablePerformanceInsights: trueを設定する必要がある。

③ ApplicationAutoScalingで追加されたリードレプリカは個別で有効化を行う。

DBClusterではなくDBInstanceでパフォーマンスインサイトを有効化
  SampleAuroraInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      EnablePerformanceInsights: true
      # 後略

有効化をマネコン(AWS Management Console)で確認

テンプレートを実行




無事に有効化されました。


ApplicationAutoScalingによるリードレプリカでの有効化は

一方でApplicationAutoScalingで増えたリードレプリカのPerformance Insightsはどうなるでしょうか。

クラスターでPerformance Insightsを有効化出来ていないので当然ですが、こちらはPerformance Insightsの有効化イベントはおきませんでした。

ここは立ち上がったリードレプリカに対して個別で設定する必要がありそうです。

マネコン(AWS Management Console)でも確認

クラスターにチェックを入れ「変更」ボタンの先を確認します。

(Modify DB cluster:画面)


設定接続データベース認証追加設定
残念ながら全てにPerformance Insightsに関係する設定項目は見当たりません。


今度はインスタンスにチェックを入れ「変更」ボタンの先を確認します。

(Modify DB instance:画面)



こちらには「モニタリング」ブロックに目的の項目がありました!


おまけ - エンジンモード:パラレルクエリとの関連を疑った話

パラレルクエリとの関連を疑った話

このエラーメッセージに出会った際、最初に以下のドキュメントを読みました。

Performance Insights のAmazon Aurora DB エンジン、リージョン、およびインスタンス クラスのサポート」によると、

インスタンス クラスの制限
Performance Insights には、次のエンジン クラスの制限があります。
db.t2 – サポートされていません
db.t3 – サポートされていません
db.t4g.micro および db.t4g.small – サポートされていません


この時はクラスターの中にはdb.r6g.largeのみにしていた為、ここは関係なさそうです。

続いて、「Aurora MySQL によるパフォーマンス インサイト」を覗きます。

Aurora MySQL と並列クエリをオフにした Performance Insights

ではアジアパシフィック(東京)且つ、Aurora MySQL バージョン 3はすべてのヴァージョンがサポートされている一方で、

Aurora MySQL と並列クエリを有効にした Performance Insights

では東京を含むすべてのリージョンにおいてAurora MySQL バージョン 3はサポート外となっています。


この"並列クエリ"が問題でしょうか?


並列クエリとは

Aurora MySQL の並列クエリの概要

Aurora MySQL パラレルクエリは、データ集約的なクエリの処理に関連する I/O と計算の一部をパラレル処理する最適化です。

利点
パラレルクエリを使用すると、Aurora MySQL のテーブルに対してデータ集約型の分析クエリを実行できます。多くの場合、従来のようにクエリの処理を分ける場合よりもパフォーマンスが大幅に向上します。

とのことです。
このパラレルクエリがデフォルトで有効化されているかを確認してみると


AWS::RDS::DBCluster

EngineMode
DB クラスターの DB エンジンモード ( provisioned、serverless、 parallelquery、global、または ) multimaster。

エンジンparallelqueryモードは、Aurora MySQL バージョン 1.23 以降の 1.x バージョン、およびバージョン 2.09 以降の 2.x バージョンには必要ありません。

必要ありません」からデフォルト値が掴めなかったので、明示的にparallelquery以外を選択してみることにしました。

テンプレート/EnginやEngineVersionはaurora-mysqlの8.0を利用
  SampleAuroraCluster: 
    Type: AWS::RDS::DBCluster
    Properties:
    #中略
      EngineMode: provisioned
      PerformanceInsightsEnabled: true
冒頭と同じエラーメッセージ/DBClusterでCreateFailed発生
Resource handler returned message: “Enable Performance Insights isn’t supported for DB engine aurora-mysql at the cluster level. 

Provisionedに変えても同じエラーが発生しました。


【結論】
今回のエラーメッセージには影響していませんでした。

最後に

RDS::DBClusterのプロパティが
PerformanceInsightsEnabled: Boolean

だったのに対して

RDS::DBInstanceのプロパティが
EnablePerformanceInsights: Boolean

である事には注意が必要です。

既に走っているプロパティの為、今更ではあるのですが、
もし特定の意図がなければ関連性の高いリソース間では表現の統一がされているとうれしいなと思いました(これからに期待を込めて・・!)

このあたりの小話もストックできるように日々精進いたします。
お読みいただきありがとうございました!

デベキャン

Discussion