MySQLのdefault_storage_engineについて備忘録

[MySQLの移行話](https://qiita.com/smallpalace/private/19438d62f2fdb09748e1)的なアレでdefault_storage_engineはいつからInnoDBだった？と思って調べたので備忘録を。
ここのサーバパラメータのマニュアルをみると、、
https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_default_storage_engine

何も設定しないとMyISAMだったのは5.5.4以下、何も設定しなくてもInnoDBでRDSにそのまま投げ込めるのが5.5.5以上、5.5.2以前だと名前にdefaultがつかない、ということでした。以上、だと物足りないのでもうちょっと失礼。

つまり/etc/my.cnfに
`default-storage-engine=innodb`と書いてない5.5.4以下はストレージエンジンがMyISAMになってる。
MyISAMになってるとクラッシュリカバリがのるかそるかでバックアップがトランザクションでとれないので共有ロックしてからとらないといけないなどがDBA的にはアレでプログラマ的にはトランザクション使わないからエラー処理が適当で大丈夫だったけどInnoDBにする場合にそこをなおさないといけないかもやAUTO INCREMENTやPRYMARY_KEYからめた挙動が違うという話が。
という様な色々を以下の2つの記事が詳しく載せてるので必要な方はぜひどうぞ。

[MySQLでMyISAMからInnoDBに乗り換える際に知らないとハマる、怖い話 - Y-Ken Studio](http://y-ken.hatenablog.com/entry/mysql-migration-from-mysiam-to-innodb-tips)
[漢(オトコ)のコンピュータ道: MyISAMからInnoDBへ切り替えるときの注意点](http://nippondanji.blogspot.jp/2009/02/myisaminnodb.html)

上記事内でSennaとある全文検索エンジンはTritonn→Groonga→Mroongaというように変化したようです。
http://mroonga.org/ja/

InnoDBのメリットやベストプラクティスなどが以下リンク先公式サイトにかかれている。
https://dev.mysql.com/doc/refman/5.6/ja/innodb-default-se.html

あと、RDS側のベストプラクティスや制限事項など。
要はストレージエンジンはInnoDBしか使えないです。
（どうしてもという場合は自前でEC2を用意して冗長構成組むほか全部自前）
[Amazon RDS のベストプラクティス - Amazon Relational Database Service](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html#CHAP_BestPractices.MySQLStorage)
[Amazon RDS における MySQL の既知の問題と制限 - Amazon Relational Database Service](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html)

その他のサポートされてない機能は以下のとおり書いてありました。

- グローバルトランザクション ID
- トランスポータブルテーブルスペース
- 認証用プラグイン
- パスワード強度用プラグイン
- レプリケーションフィルタ
- 準同期レプリケーション

[Amazon RDS での MySQL - Amazon Relational Database Service](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_MySQL.html)

ちなみに現在のパラメータがどうなってるかは/etc/my.cnfみるか`show global variables like 'default%storage%engine';`か`show engines;`と打つとわかるのと、各テーブルの値をみるには、`show table status\G`か`select table_schema, table_name, engine from information_schema.tables where table_schema not in('sys','performance_schema','information_schema');`あたりでいいのかな。

あとはRDSの権限まわりの特権ユーザつくる場合に`dbschema.table`のとこが`*.*`だと無理で`%.*`になるなど。
http://www.fidian.com/problems-only-tyler-has/using-grant-all-with-amazons-mysql-rds

移行データ量の見方は以下リンク先のようにselectしたり
https://qiita.com/ikenji/items/b868877492fee60d85ce
もっとザックリだと`du -sh /var/lib/mysql`でデータディレクトリ(/etc/my.cnfみてdatadirで指定されてる場所、psで起動プロセスにオプションついてるやつみてもわかる)のサイズをはかる（データファイルだけでなくバイナリログも入る）なども。

サポート期間についてちょっと調べたので追記
https://www.mysql.com/jp/support/
https://www.oracle.com/us/assets/lifetime-support-technology-069183.pdf

|Release            | GA Date  | Premier Support End | Extended Support End | Sustaining Support End |
|:--|:--|:--|:--|:--| 
|MySQL Database 5.0 | Oct 2005 | Dec 2011            | Not Available        | Indefinite             | 
|MySQL Database 5.1 | Dec 2008 | Dec 2013            | Not Available        | Indefinite             | 
|MySQL Database 5.5 | Dec 2010 | Dec 2015            | Dec 2018             | Indefinite             | 
|MySQL Database 5.6 | Feb 2013 | Feb 2018            | Feb 2021             | Indefinite             | 
|MySQL Database 5.7 | Oct 2015 | Oct 2020            | Oct 2023             | Indefinite             | 


RDS側のサポートバージョン
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt
セキュリティ対応的なバージョンアップ告知がこんな感じでたまにあったりなど。
https://aws.amazon.com/jp/blogs/news/amazon-rds-mysql-56x-minor-version-announce/

ひとまずこのへんで失礼します