はじめに
1ヶ月程前にAmazon Aurora MySQL5.7互換版(以下Aurora2系、MySQL5.6互換版をAurora1系と記載)がついにリリースされました。
遅くなってしまいましたが、少しさわって見ましたので簡単に書きます。
特徴
以下の公式サイトに記載されています。
Amazon Aurora: MySQL 5.7互換をリリース(Amazon Web Services ブログ)
機能的特徴抜粋
JSONサポート、空間インデックス、generated columnsなどをご利用頂け、MySQL 5.7より最大5倍高速です。
Amazon Auroraの空間インデックスの作成は、MySQL 5.7よりも20倍以上の書き込みパフォーマンスと10倍以上の読み込みパフォーマンスとなっています
詳細については下記にあります。
Amazon Aurora MySQL の使用(ユーザーガイド)
またクラスメソッドさんがリリースから秒速でブログ書かれていたのでそちらのリンクも非常にわかりやすいです。
Amazon AuroraのMySQL 5.7互換が正式リリースされました
詳細ページからAurora1系、MySQL5.7との機能比較抜粋(Aurora2系でサポート外となった機能)
Aurora1系からのサポート外機能
- Asynchronous Key Prefetch (AKP)
- ハッシュ結合
- AWS Lambda 関数を同期的に呼び出すためのネイティブ関数
- スキャンバッチ処理
- Amazon S3 バケットを使用した MySQL からのデータ移行
MySQL 5.7からのサポート外機能
- グローバルトランザクション ID (GTID)
- グループのレプリケーションプラグイン
- ページサイズの増加
- 起動時の InnoDB バッファプールのロード
- InnoDB フルテキストパーサープラグイン
- マルチソースレプリケーション
- オンラインバッファプールのサイズ変更
- パスワード検証プラグイン
- クエリ書き換えプラグイン
- レプリケーションフィルター処理
- CREATE TABLESPACESQL ステートメント
- X プロトコル
MySQL5.7との比較ではアーキテクチャが違うのでサポート対象外が多くなるのはそうかなと思いましたが、Aurora1系からサポート外になったものも結構ありますね。(現時点での話ですが)
実際に起動させてみた
Aurora version1.14以降のスナップショットであればAurora1系からでも復元可能のようなので、今回は手元で稼働していた1.16のスナップショットから復元して見ました。
特に引っかかるところはないのですが、エンジン名が「aurora」->「aurora-mysql」に変わっているので、DBエンジンを変更しないとエンジンバージョン「5.7.12」が選択できません。
ダッシュボードだとAurora1系も2系も同様にエンジンは「Aurora MySQL」と表示されるので、ダッシュボードで確認する際は、エンジンバージョンを表示して確認しましょう
無事起動。SecurityGroupをdefaultから変えて手元の環境から接続
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> SELECT @@version; +-----------+ | @@version | +-----------+ | 5.7.12 | +-----------+ mysql> SELECT @@aurora_version; +------------------+ | @@aurora_version | +------------------+ | 2.01 | +------------------+ |
Aurora2系で起動してますね。
ついでにJSONも使えるのか確認
1 2 3 4 5 6 7 8 9 10 11 |
mysql> CREATE TABLE t1 (items JSON); Query OK, 0 rows affected (0.04 sec) mysql> SHOW CREATE TABLE t1\G *************************** 1. row *************************** Table: t1 Create Table: CREATE TABLE `t1` ( `items` json DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.01 sec) |
Json形式でテーブルが作成出来ました。
パラメータも確認
デフォルトのパラメータグループについても確認してみました。
1 2 3 4 5 6 7 8 9 10 11 |
aws rds describe-engine-default-parameters \ --db-parameter-group-family aurora5.6 > aurora1_param.json aws rds describe-engine-default-cluster-parameters \ --db-parameter-group-family aurora5.6 > aurora1_cluster_param.json aws rds describe-engine-default-parameters \ --db-parameter-group-family aurora-mysql5.7 > aurora2_param.json aws rds describe-engine-default-cluster-parameters \ --db-parameter-group-family aurora-mysql5.7 > aurora2_cluster_param.json |
上記で取得したデータからAurora1系からAurora2系での差分は下記です
default-parameters
追加パラメータ | 削除パラメータ |
---|---|
innodb_adaptive_hash_index_parts | timed_mutexes |
innodb_status_output | |
innodb_status_output_locks | |
internal_tmp_disk_storage_engine | |
log_error_verbosity | |
log_slow_admin_statements | |
log_slow_slave_statements | |
max_execution_time | |
max_points_in_geometry | |
range_optimizer_max_mem_size | |
show_compatibility_56 |
MySQL5.7からだけでなくMySQL5.6からの追加パラメータも含まれていますね。
「internal_tmp_disk_storage_engine」では「INNODB」だけでなく「MYISAM」も選択可能でした。
default-cluster-parameters
追加パラメータ | 削除パラメータ |
---|---|
binlog_error_action | なし |
check_proxy_users | |
default_password_lifetime | |
innodb_default_row_format | |
innodb_fill_factor | |
log_builtin_as_identified_by_password | |
mysql_native_password_proxy_users | |
slave_parallel_type | |
tls_version |
「default_password_lifetime」の値はdefault 0でした。360じゃなくてよかったです。
また「innodb_default_row_format」の設定可能値に「COMPRESSED」が含まれていたので、一応試したところ
1 2 3 4 5 6 |
+---------+------+--------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------+ | Warning | 1478 | ROW_FORMAT=COMPRESSED is not currently supported | | Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT. | +---------+------+--------------------------------------------------+ |
やっぱりダメでした。
変更パラメータ | Aurora1系 | Aurora2系 | 備考 |
---|---|---|---|
log_output | TABLE | FILE | デフォルト値の変更 |
optimizer_switch | – | – | 設定可能値の変更。多数のため割愛 |
performance_schema | true | false | 設定変更の可否 |
「performance_schema」の有効化がAurora2系では出来なくなってました。
なかなか思い切った変更ですね。
システム変数(GLOBAL)
パラメータグループで「engine-default」となっているものについては上記のやり方では確認出来ないため、接続して「SHOW GLOBAL VARIABLES」で確認しようと思ったのですが。。
項目が多すぎるため、申し訳ありませんが割愛させて頂きます。
個人的に気になっていた下記の値は変更されていました。
変更パラメータ名 | Aurora1系 | Aurora2系 |
---|---|---|
innodb_file_format | Antelope | Barracuda |
innodb_large_prefix | OFF | ON |
innodb_strict_mode | OFF | ON |
まとめ
今回確認出来たのは一部の点だけでしたが、それだけでも大きな変更がいくつかあった様に感じます。
使用可能となった機能に意識を向けすぎると、思わぬ落とし穴にハマってしまうケースもありますので、導入前にはしっかりとしたテストを行いましょう。