Amazon Aurora MySQL で innodb_fill_factor パラメーターを設定するときにやったことのメモ。
Amazon Aurora MySQL のバージョン => 2.09.0
Amazon Aurora MySQL で innodb_fill_factor パラメーターを設定する
set GLOBAL innodb_fill_factor=<値> するとエラーになる
mysql コマンドで Aurora に接続して set GLOBAL innodb_fill_factor
を実行したらエラーになる。
mysql> set GLOBAL innodb_fill_factor=90; ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
エラーメッセージを見ると SUPER 権限がないから set GLOBAL innodb_fill_factor
できないよう。
Aurora への接続で使ってるユーザーの権限を確認するとたしかに SUPER 権限がない。ただ一応 Aurora のマスターユーザーの権限を見たらマスターユーザーも SUPER 権限は持ってなくて、調べてみたら Aurora に限らず RDS はインスタンスを立てるときに AWS が管理用に作成する rdsadmin
だけが SUPER 権限を持っていて SUPER 権限は rdsadmin
以外のユーザーには付与できないよう。
結論
rdsadmin
だけが SUPER 権限を持ってるなら rdsadmin
で set GLOBAL innodb_fill_factor
すればいい。
自分が実際にやったのは以下の3つ。 自分は CFn は試さなかったけど CDK でできるから CFn でもできると思う。
- AWS コンソールで
innodb_fill_factor
クラスターパラメーターを変更する - AWS CLI で
innodb_fill_factor
パラメーターを変更する - CDK で
innodb_fill_factor
パラメーターを変更する
最初はこんな感じで innodb_fill_factor=100
になってる。
mysql> show variables like 'innodb_fill_factor'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | innodb_fill_factor | 100 | +--------------------+-------+ 1 row in set (0.00 sec)
aws rds modify-db-cluster-parameter-group
コマンドで innodb_fill_factor
パラメーターを 90
にする。
$ aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name <パラメータグループ> \ --parameters "ParameterName=innodb_fill_factor,ParameterValue=90,ApplyMethod=immediate"
innodb_fill_factor=90
になってる。
mysql> show variables like 'innodb_fill_factor'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | innodb_fill_factor | 90 | +--------------------+-------+ 1 row in set (0.01 sec)
あ、あとクラスターパラメーターは aws rds describe-db-cluster-parameters
コマンドで取得できるのでメモしておく。
innodb_fill_factor
クラスターパラメータを変更する前はこんな感じ。
$ aws rds describe-db-cluster-parameters \ --db-cluster-parameter-group-name <パラメータグループ> | \ jq '.Parameters[] | select(.ParameterName == "innodb_fill_factor") | {"Name": .ParameterName, "Value": .ParameterValue}' { "Name": "innodb_fill_factor", "Value": "null" }
innodb_fill_factor
クラスターパラメーターを変更した後はこんな感じ。
$ aws rds describe-db-cluster-parameters \ --db-cluster-parameter-group-name <パラメータグループ> | \ jq '.Parameters[] | select(.ParameterName == "innodb_fill_factor") | {"Name": .ParameterName, "Value": .ParameterValue}' { "Name": "innodb_fill_factor", "Value": "90" }