MySQL5.5のRDSをMySQL5.7にアップグレードしてみた

#■これをやった経緯
AWS RDSがMySQL5.7に対応したってこと(2016/02/22公開なので、遅いですが・・・ｗ)なので、5.6から5.7にアップグレードする記事はありますが、5.5からのものがなかったので、試してみました

- [【アップデート】Amazon RDSでMySQL 5.7が使用可能になりました ｜ Developers.IO](http://dev.classmethod.jp/cloud/aws/amazon-rds-mysql-57/)
- [Amazon RDS MySQLにてMySQL 5.6から5.7へ数クリックでアップグレード出来るようになりました | Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/amazon-rds-mysql-now-supports-point-and-click-upgrade-from-mysql-5-6-to-5-7/)

#■前提条件
* Masterのみの構成を試します。
* マネジメントコンソール以外は使いません。
* 5.5で動作していたアプリケーションは問題なく動くのかをざっくりとだけチェックします。
* 本番反映とか怖いことはしませんｗ
* 新、旧ののバージョンは下記です。
* リージョンはTokyoを使います。

|比較項目| 旧 | 新 |
|:--|:-:|:-:|
|バージョン|5.5.46|5.7.16|
|インスタンスタイプ|db.m1.xlarge|db.m4.xlarge|

#■はじまりはじまりー
##Stage環境で試す
1. まずは、自分のアプリケーションのStage環境作成
    * 本番でRDSを利用しているので、Stageでも使ってた
1. AWSマネジメントコンソールにて、「変更(Modify)」より、「DB エンジンのバージョン」を「<font color="Fuchsia">5.6.34(※2016/12/26現在の5.6最新)</font>」に変更　<font color="Fuchsia">※さすがに、一気にアップグレードってわけにはいかないみたいｗ</font>
    * 対象のRDSインスタンスのステータスが「アップグレード」・・・となるので、数時間待つ・・・
1. ステータスが「利用可能」になったので、再度「変更(Modify)」より、「DB エンジンのバージョン」を「<font color="Fuchsia">5.7.16(※2016/12/26現在の5.7最新)</font>」に変更を試す
    * しかし、利用していたRDSのインスタンスタイプが「<font color="Red">db.m1.xlarge</font>」だったために、最後の変更ボタンを押す前にエラーが出た・・・
    * 内容は、そのインスタンスタイプでは、アップグレードしようとしている「DB エンジンのバージョン」がサポートしていない的なやつでした。
1. とりあえず、「<font color="Red">db.m1.xlarge</font>」から同等のスペックを持つ「<font color="Red">db.m4.xlarge</font>」に変更し、「DB エンジンのバージョン」を「<font color="Fuchsia">5.7.16(※2016/12/26現在の5.7最新)</font>」に変更を試す
    * 変更ボタン押下までは問題なくできた！そして、ステータスが「アップグレード」・・・となるので、数時間待つ・・・
1. ステータスが「利用可能」となったので、アプリケーション画面へアクセスしたら、意外と普通に表示ｗ
    * しかし、5.7へのアップグレードのときのほうが時間かかりました・・・２時間以上はかかったかも。 :clock1: 
1. 一応、アップグレードログを見とこうと思って見たら、エラーが結構大量に出てる・・・
    * 「mysqlUpgrade」6.49MB・・・ :sob::sob::sob::sob::sob:
        * 内容は`mysql_upgrade`時のログのようでした。下記一部抜粋。これが、アプリで作成したDBにもずらずら出てたので、がーんってなった :weary:　んですが、最後には、ちゃんと`Repairing tables`してて、感動:sunny:
1. 他にもエラーログ出てないか確認したところ、`mysql-error-running.log.X` みたいなログが出てたので、一応ダウンロードして確認。こちらも一部抜粋 :sob::sob::sob::sob:
    * ShutdownとStartを繰り返し行った様子と、`Shutting down plugin 'XXXXXXX'`　みたいなログが出ていただけみたいで、問題なさそうでした :exclamation: 

```mysqlUpgrade.log
XXXX-XX-XX XX:XX:33 Checking server version.
XXXX-XX-XX XX:XX:33 Running queries to upgrade MySQL server.
XXXX-XX-XX XX:XX:36 Checking system database.
XXXX-XX-XX XX:XX:36 mysql.columns_priv                                 OK
XXXX-XX-XX XX:XX:36 mysql.db                                           OK
XXXX-XX-XX XX:XX:36 mysql.engine_cost                                  OK
XXXX-XX-XX XX:XX:36 mysql.event                                        OK
XXXX-XX-XX XX:XX:36 mysql.func                                         OK
XXXX-XX-XX XX:XX:36 mysql.general_log                                  OK
XXXX-XX-XX XX:XX:36 mysql.general_log_backup
XXXX-XX-XX XX:XX:36 error    : Table upgrade required. Please do "REPAIR TABLE `general_log_backup`" or dump/reload to fix it!
XXXX-XX-XX XX:XX:36 mysql.gtid_executed                                OK
XXXX-XX-XX XX:XX:36 mysql.help_category                                OK
XXXX-XX-XX XX:XX:36 mysql.help_keyword                                 OK
XXXX-XX-XX XX:XX:36 mysql.help_relation                                OK
XXXX-XX-XX XX:XX:36 mysql.help_topic                                   OK
XXXX-XX-XX XX:XX:36 mysql.host                                         OK
XXXX-XX-XX XX:XX:36 mysql.innodb_index_stats                           OK
XXXX-XX-XX XX:XX:36 mysql.innodb_table_stats                           OK
XXXX-XX-XX XX:XX:36 mysql.ndb_binlog_index                             OK
XXXX-XX-XX XX:XX:36 mysql.plugin                                       OK
XXXX-XX-XX XX:XX:36 mysql.proc
XXXX-XX-XX XX:XX:36 Warning  : Trigger mysql.proc.block_proc_u does not have CREATED attribute.
XXXX-XX-XX XX:XX:36 Warning  : Trigger mysql.proc.block_proc_d does not have CREATED attribute.
XXXX-XX-XX XX:XX:36 status   : OK
XXXX-XX-XX XX:XX:36 mysql.procs_priv                                   OK
XXXX-XX-XX XX:XX:36 mysql.proxies_priv                                 OK
XXXX-XX-XX XX:XX:36 mysql.rds_configuration                            OK
XXXX-XX-XX XX:XX:36 mysql.rds_global_status_history
XXXX-XX-XX XX:XX:36 error    : Table rebuild required. Please do "ALTER TABLE `rds_global_status_history` FORCE" or dump/reload to fix it!
XXXX-XX-XX XX:XX:36 mysql.rds_global_status_history_old
XXXX-XX-XX XX:XX:36 error    : Table rebuild required. Please do "ALTER TABLE `rds_global_status_history_old` FORCE" or dump/reload to fix it!
XXXX-XX-XX XX:XX:36 mysql.rds_heartbeat2                               OK
XXXX-XX-XX XX:XX:36 mysql.rds_history
XXXX-XX-XX XX:XX:36 error    : Table rebuild required. Please do "ALTER TABLE `rds_history` FORCE" or dump/reload to fix it!
XXXX-XX-XX XX:XX:36 mysql.rds_replication_status
XXXX-XX-XX XX:XX:36 error    : Table rebuild required. Please do "ALTER TABLE `rds_replication_status` FORCE" or dump/reload to fix it!
```

```mysql-error-running.log.X
# こんなログが繰り返し出ていただけでした。
XXXX-XX-XX XX:XX:49 4578 [Warning] You need to use --log-bin to make --log-slave-updates work.
XXXX-XX-XX XX:XX:49 4578 [Note] Plugin 'FEDERATED' is disabled.
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: Using atomics to ref count buffer pool pages
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: The InnoDB memory heap is disabled
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: Memory barrier is not used
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: Compressed tables use zlib X.X.X
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: Using Linux native AIO
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: Using CPU crc32 instructions
XXXX-XX-XX XX:XX:49 4578 [Note] InnoDB: Initializing buffer pool, size = XX.XXG
XXXX-XX-XX XX:XX:51 4578 [Note] InnoDB: Completed initialization of buffer pool
XXXX-XX-XX XX:XX:51 4578 [Note] InnoDB: Highest supported file format is Barracuda.
XXXX-XX-XX XX:XX:53 4578 [Note] InnoDB: 128 rollback segment(s) are active.
XXXX-XX-XX XX:XX:53 4578 [Note] InnoDB: Waiting for purge to start
XXXX-XX-XX XX:XX:53 4578 [Note] InnoDB: 5.6.34 started; log sequence number XXXXXXXXXX
XXXX-XX-XX XX:XX:53 4578 [Note] Server hostname (bind-address): '*'; port: 3306
XXXX-XX-XX XX:XX:53 4578 [Note] IPv6 is available.
XXXX-XX-XX XX:XX:53 4578 [Note]   - '::' resolves to '::';
XXXX-XX-XX XX:XX:53 4578 [Note] Server socket created on IP: '::'.
XXXX-XX-XX XX:XX:53 4578 [Note] Event Scheduler: Loaded 0 events
XXXX-XX-XX XX:XX:53 4578 [Note] /rdsdbbin/mysql/bin/mysqld: ready for connections.
Version: '5.6.34'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

# こんなログが繰り返し出ていただけでした。
XXXX-XX-XX XX:XX:45 4344 [Note] Binlog end
XXXX-XX-XX XX:XX:45 4344 [Note] Shutting down plugin 'partition'
XXXX-XX-XX XX:XX:45 4344 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
XXXX-XX-XX XX:XX:45 4344 [Note] Shutting down plugin 'ARCHIVE'
```

#■まとめ
ちょろっと動かしたけど、意外と動きそう？？？今後はアプリケーション側で使えないところがないか、検証をやっていきまーす！ :sunny: