全力で怠けたい

怠けるために全力を尽くしたいブログ。

Amazon Aurora MySQL で set GLOBAL innodb_fill_factor したら ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation になったときのメモ。

Amazon Aurora MySQLinnodb_fill_factor パラメーターを設定するときにやったことのメモ。

Amazon Aurora MySQL のバージョン => 2.09.0

Amazon Aurora MySQLinnodb_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 権限を持ってるなら rdsadminset GLOBAL innodb_fill_factor すればいい。

自分が実際にやったのは以下の3つ。 自分は CFn は試さなかったけど CDK でできるから CFn でもできると思う。

  • AWS コンソールで innodb_fill_factor クラスターパラメーターを変更する
  • AWS CLIinnodb_fill_factor パラメーターを変更する
  • CDK で innodb_fill_factor パラメーターを変更する

AWS CLI でやったときのをメモしておく。

最初はこんな感じで 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"
}

参考サイト