[CFn]Aurora MySQLでPerformance Insightsを有効化する場合の注意点
今回のテーマについて
こんにちわ!
DevelopersIO BASECAMP参加者の加藤です!
先日CloudFormationから、AuroraMySQLのVersion3(8.0)クラスターに対してPerformanceInsightsを有効化しようとした所、以下エラーが発生しました。
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で追加されたリードレプリカは個別で有効化を行う。
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 パラレルクエリは、データ集約的なクエリの処理に関連する I/O と計算の一部をパラレル処理する最適化です。
利点
パラレルクエリを使用すると、Aurora MySQL のテーブルに対してデータ集約型の分析クエリを実行できます。多くの場合、従来のようにクエリの処理を分ける場合よりもパフォーマンスが大幅に向上します。
とのことです。
このパラレルクエリがデフォルトで有効化されているかを確認してみると
EngineMode
DB クラスターの DB エンジンモード ( provisioned、serverless、 parallelquery、global、または ) multimaster。エンジンparallelqueryモードは、Aurora MySQL バージョン 1.23 以降の 1.x バージョン、およびバージョン 2.09 以降の 2.x バージョンには必要ありません。
「必要ありません」からデフォルト値が掴めなかったので、明示的にparallelquery以外を選択してみることにしました。
SampleAuroraCluster:
Type: AWS::RDS::DBCluster
Properties:
#中略
EngineMode: provisioned
PerformanceInsightsEnabled: true
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