はじめに
AWSのDiscussion Forumsを眺めていたら、transaction_isolation変数が、昨年末まで変更出来なかったという記事を見つけました。(現在は変更可能となっています)
そこで変更不可となっているパラメータが他にどんなものがあるか気になったので、今現在(2019/01/28)で変更不可のパラメータを確認してみました。
また最新バージョン(8.0.13)でtransaction_isolation変数が変更できるかも、一応確認してみました。
その際に、少し嵌ってしまったので、そこについても触れてます。
ちなみに「transaction_isolation」変数は元々「tx_isolation」という名前でしたが、8.0.3から同名に変わりました。
変更不可能なパラメータ群
コマンドとしては下記のコマンドで出力してます。
1 |
aws rds describe-db-parameters --db-parameter-group-name test80 | jq -r ".Parameters[] | select(.IsModifiable==false) | .ParameterName" |
- DefaultのParameterグループからコピーしたパラメータを利用
- IsModifiableがfalseとなっているものを抽出
結果として下記の164のパラメータが変更不可でした。
ざっと見る限り、やはりOSのファイルシステム周りが絡んでくるパラメータの変更は出来ないようです。
それ以外では、特にクリティカルになるような変更不可パラメーターはなさそうですね。
(見慣れないパラメータもありますが。)
transaction_isolation変数の変更
では、パラメータを変更してみます。
まずはパラメータの現在値を確認します。
1 2 3 4 5 6 7 |
mysql> SHOW GLOBAL VARIABLES LIKE 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.02 sec) |
ここは8.0らしくSET PERSISTで変更しよう。と実行しましたが、、
最下部に記載していますが、現状ではSET PERSISTはサポート外でした。
ただステートメントは一部実行出来てしまった(永続化はされていませんが)ため、注意を促す意味でも記載させていただきます。
1 2 |
mysql> SET PERSIST transaction_isolation='READ-COMMITED'; ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation |
権限がないため、エラーになりました。
そこでSYSTE_VARIABLES_ADMIN権限をrootに付与して実行します。
ご存知の方も多いと思いますが、RDSではSUPER権限の付与は出来ません。
1 2 |
mysql> GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO root; Query OK, 0 rows affected (0.03 sec) |
こちらは付与出来ました。
念の為、確認
1 2 3 4 5 6 7 8 |
mysql> SHOW GRANTS FOR root\G *************************** 1. row *************************** Grants for root@%: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO <code>root</code>@<code>%</code> WITH GRANT OPT ION *************************** 2. row *************************** Grants for root@%: GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO <code>root</code>@<code>% 2 rows in set (0.05 sec) |
上がデフォルトで付与されている権限で、下が今回付与した権限です。
そこでPERSISTコマンド再実行
1 2 |
mysql> SET PERSIST transaction_isolation='READ-COMMITED'; ERROR 1231 (42000): Variable 'transaction_isolation' can't be set to the value of 'READ-COMMITED' |
transaction_isolationは変更出来ませんでした。そこで別のパラメータでも実施してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
mysql> SHOW GLOBAL VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 66 | +-----------------+-------+ mysql> SET PERSIST max_connections=77; Query OK, 0 rows affected (0.02 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 77 | +-----------------+-------+ |
こちらは変更出来ました。
ただ一度停止し、再度起動したところ、戻っていました。
1 2 3 4 5 6 7 |
mysql> SHOW GLOBAL VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 66 | +-----------------+-------+ 1 row in set (0.02 sec) |
なので素直にAWS マネジメントコンソールから変更しましょう。
こちらでは問題なく変更出来ました。
サポート対象外の機能一覧
1 2 3 4 5 6 7 8 9 10 11 12 13 |
現在、Amazon RDS では MySQL の以下の機能はサポートされていません。 認証用プラグイン システムログへのエラーログ記録 グループのレプリケーションプラグイン InnoDB テーブル領域の暗号化 MariaDB 監査プラグイン (Amazon RDS MySQL バージョン 8.0 でのみサポートされていません) MariaDB 監査プラグインは、Amazon RDS MySQL バージョン 5.5、5.6、および 5.7 でサポートされています。 パスワード強度用プラグイン 永続的システム変数 レプリケーションフィルタ 準同期レプリケーション トランスポータブルテーブルスペース X プラグイン |