RDS(MySQL) 使っているなら、AWS からメールでなんだこれ、いきなりやーと阿鼻叫喚な先月から立て続けにあるイベント。
ほんとため息しかでない。
ちなみに、先月のメンテ( Xen の脆弱性対応)と違い、今回は MySQL 自身のアップデート。
で、今の状況整理。
MySQL5.5(5.5.40)についてのアップデートメンテは完了。
MySQL5.5(5.6.21)につては、以下の公式フォーラムで"無制限アクセスを許可していない MySQL 5.6 インスタンス"のメンテは延期されている。
以下抜粋
無制限アクセスを許可していないMySQL 5.6 インスタンスに関して、当初日本時間2014年10月21日早朝のアップグレード開始を予定しておりました。しかし、特定の条件において、MySQL 5.6リードレプリカが、5.6.21 へのアップグレード後にクラッシュする可能性があることが判明し、アップグレード開始を見合わせて頂きました。この問題は、下のページで記述されているMySQL 5.6.4で導入されたdate型やtimestamp型のカラムの格納フォーマットに関連しています。
https://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html
このフォーマット変更のため、 5.6.4 より前のバージョンで稼動している(もしくはそれらのバージョンからアップグレードされた)マスタから、date型やtimestamp型のカラムを変更する 行ベースログのトランザクション を 5.6.21 のリードレプリカが受信した際に、リードレプリカがクラッシュをする可能性があります。対応方法を含む、詳細につきましては、下のページにある "Known Issues and Limitations" をご覧ください。
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.KnownIssuesAndLimitations
また、MySQL 5.6.20より始まった blob のログ出力方法との非互換性を考慮し、12.8MB 以上のサイズの blob を変更する場合には "innodb_log_file_size" パラメータを 変更する blob の最大サイズの 10 倍に調整する必要があります。この変更の詳細につきましては、下のページをご覧ください。
http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-20.html
で読んでみたけどよくわからん、今回の延期はなんで?
・延期理由1
とりあえずリードレプリカがぶっ壊れる。
これはもともと MySQL5.5 を使用していて、その後 MySQL5.6 へアップグレートしたもので発生。
Why?
→MySQL 5.6.4 で導入された date 型や timestamp 型のカラムの格納フォーマットの違い。
ようは小数部の扱いやTime フォーマットの違いで発生。
しかし、発生する可能性は低いんじゃないか。
*これ試していないけど、binlog の V1 を使うことでなんとかならんのかな?
・延期理由2
アップグレードしたらストレージが一杯。
これは兼ねてよりあった checkpoint が上書きされる Bug の修正に対応したものだろう。
RDS 側で自動的に対応
→既存 max allow packe の10倍の数値を innodb_log_file_size に設定。
(AWSからメールで変更したよと連絡あり。)
これは、ようは max allow packe に収まるクエリなら、checkpoint 処理で上書きされることを回避できるだろうという理由だろう。
で例えば max allow packe を 1GB にしてたら、勝手に innodb_log_file_size が 10GB に。
この数値はなんかよくわからないけど、だめだろうと思う人がほとんどだろう。ええほんとうに・・。
以下影響あること。
・Crashrecovery がクソながくなる。
Choosing proper innodb_log_file_size
古いversionだけど、あれからCrashrecoveryのスピードが上がっても時間がかかるものはかかる。
1GB per 10 minutes of recovery time
・redo_log の flushing に間接的に関係してくる。
innodb_adaptive_flushing_lwm
昔運用していた MySQL は、水平分割してたとはいえ、100万 DAU のソーシャルゲームでも 512MB で余裕。