はじめに
すでにAmazon Aurora(以下Aurora)が日本リージョンに来てから時間もそこそこ経過しており、すでにお使いになられている方や、これから移行されるというお話も度々耳にするようになりました。
Auroraについては既に様々なドキュメントがあり、構造や特徴などについても公開されています。
参考までに下記に公式ブログのリンクを貼ります。
AWS Black Belt Online Seminar 「 Amazon Aurora」 資料及びQ&A公開
今回は構成というよりは身近で使う際に少し引っかかるようなTipsをまとめてみました。
なおAuroraのバージョンは1.14.1で確認しております。
GRANT構文
これはRDS for MySQLでも同様ですが、GRANT構文が一部異なります。
具体的には下記のようにDBの指定に*ではなく`%`を使用します。
1 2 3 |
GRANT ALL ON *.* TO 'someuser'@'%' identified by 'mypassword'; |
ではなく
1 2 3 |
GRANT ALL ON `%`.* TO 'someuser'@'%' identified by 'mypassword'; |
を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Aurora>GRANT ALL ON *.* TO 'someuser'@'%' identified by 'mypassword'; ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES) Aurora>GRANT ALL ON `%`.* TO 'someuser'@'%' identified by 'mypassword'; Query OK, 0 rows affected (0.02 sec) Aurora>show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.01 sec) |
ちなみに%ではなく*を``で囲った場合、エラーは出ませんが、権限の付与はされないのでご注意ください。
1 2 3 4 5 6 7 8 9 10 11 12 |
Aurora>GRANT ALL ON `*`.* TO `user2`@'%' IDENTIFIED BY 'mypassword'; Query OK, 0 rows affected (0.03 sec) Aurora>show databases; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.01 sec) |
SUPER Privilege
こちらもAuroraに限った話ではないのですが、ユーザーにSUPER権限の付与ができません。
そのため、SUPER権限が必要な処理に関しては、下記のようなProcedureが用意されているのでそちらを利用しましょう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Aurora>select name from mysql.proc; +-----------------------------------+ | name | +-----------------------------------+ | lambda_async | | rds_collect_global_status_history | | rds_disable_gsh_collector | | rds_disable_gsh_rotation | | rds_enable_gsh_collector | | rds_enable_gsh_rotation | | rds_external_master | | rds_kill | | rds_kill_query | | rds_next_master_log | | rds_reset_external_master | | rds_rotate_general_log | | rds_rotate_global_status_history | | rds_rotate_slow_log | | rds_set_configuration | | rds_set_external_master | | rds_set_gsh_collector | | rds_set_gsh_rotation | | rds_show_configuration | | rds_skip_repl_error | | rds_start_replication | | rds_stop_replication | +-----------------------------------+ 22 rows in set (0.02 sec) |
私はあまり使用した経験がありませんが、binlogを使用したレプリケーションをする際には必要となって来ます。
LOG
基本的にError Log以外のGeneral Query LogやSlow Query Logはデフォルトでは出ない設定になっています。
General Query Logはともかく、Slow Query Logは出すようにした方がいざという時に助けになります。
設定についてはインスタンス用のパラメーターでslow_query_logを1にすることにより、出力されます。
その際はlong_query_timeがデフォルトでは10秒なので、そちらの調整もあわせて実施することをおすすめいたします。
また、log_outputがTABLEとなっておりますので、外部からファイルをダウンロードしたい場合はFILEに変更されると良いかと思います。
ストレージ領域の再利用
Auroraの特徴としてストレージは自動で拡張されていきます。これは非常に便利で嬉しい機能ですね。
ただ、データを削除するような使い方をしている場合、一度拡張されたストレージ領域は縮小されませんのでご注意ください。
データの削除方法する際のTipsとして削除方法の違いが挙げられます。
データ削除にDeleteを利用している場合、データ領域の解放が行われないため、削除された領域の再利用は行われず、追加のデータによりストレージ容量は増加されていきます。
それに比べてDROP/TRUNCATEを利用している場合、データ領域が解放され再利用が可能となるため、追加のデータはその領域を利用するため、ストレージ容量の増加を抑えることが可能となります。
可能でしたらDROP/TRUNCATEを利用することをおすすめいたします。
まとめ
いかかでしょうか?おそらくご存知なことが多かったかと思います。
ただ、いざとなると割と忘れていたりすることもありますので、リマインドとして
ご覧いただければ幸いです。