#■これをやった経緯
AWS RDSがMySQL5.7に対応したってこと(2016/02/22公開なので、遅いですが・・・w)なので、5.6から5.7にアップグレードする記事はありますが、5.5からのものがなかったので、試してみました
- 【アップデート】Amazon RDSでMySQL 5.7が使用可能になりました | Developers.IO
- Amazon RDS MySQLにてMySQL 5.6から5.7へ数クリックでアップグレード出来るようになりました | Amazon Web Services ブログ
#■前提条件
- Masterのみの構成を試します。
- マネジメントコンソール以外は使いません。
- 5.5で動作していたアプリケーションは問題なく動くのかをざっくりとだけチェックします。
- 本番反映とか怖いことはしませんw
- 新、旧ののバージョンは下記です。
- リージョンはTokyoを使います。
比較項目 | 旧 | 新 |
---|---|---|
バージョン | 5.5.46 | 5.7.16 |
インスタンスタイプ | db.m1.xlarge | db.m4.xlarge |
#■はじまりはじまりー
##Stage環境で試す
- まずは、自分のアプリケーションのStage環境作成
- 本番でRDSを利用しているので、Stageでも使ってた
- AWSマネジメントコンソールにて、「変更(Modify)」より、「DB エンジンのバージョン」を「5.6.34(※2016/12/26現在の5.6最新)」に変更 ※さすがに、一気にアップグレードってわけにはいかないみたいw
- 対象のRDSインスタンスのステータスが「アップグレード」・・・となるので、数時間待つ・・・
- ステータスが「利用可能」になったので、再度「変更(Modify)」より、「DB エンジンのバージョン」を「5.7.16(※2016/12/26現在の5.7最新)」に変更を試す
- しかし、利用していたRDSのインスタンスタイプが「db.m1.xlarge」だったために、最後の変更ボタンを押す前にエラーが出た・・・
- 内容は、そのインスタンスタイプでは、アップグレードしようとしている「DB エンジンのバージョン」がサポートしていない的なやつでした。
- とりあえず、「db.m1.xlarge」から同等のスペックを持つ「db.m4.xlarge」に変更し、「DB エンジンのバージョン」を「5.7.16(※2016/12/26現在の5.7最新)」に変更を試す
- 変更ボタン押下までは問題なくできた!そして、ステータスが「アップグレード」・・・となるので、数時間待つ・・・
- ステータスが「利用可能」となったので、アプリケーション画面へアクセスしたら、意外と普通に表示w
- しかし、5.7へのアップグレードのときのほうが時間かかりました・・・2時間以上はかかったかも。
- 一応、アップグレードログを見とこうと思って見たら、エラーが結構大量に出てる・・・
- 「mysqlUpgrade」6.49MB・・・
- 内容は
mysql_upgrade
時のログのようでした。下記一部抜粋。これが、アプリで作成したDBにもずらずら出てたので、がーんってなった んですが、最後には、ちゃんとRepairing tables
してて、感動
- 内容は
- 「mysqlUpgrade」6.49MB・・・
- 他にもエラーログ出てないか確認したところ、
mysql-error-running.log.X
みたいなログが出てたので、一応ダウンロードして確認。こちらも一部抜粋- ShutdownとStartを繰り返し行った様子と、
Shutting down plugin 'XXXXXXX'
みたいなログが出ていただけみたいで、問題なさそうでした
- ShutdownとStartを繰り返し行った様子と、
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'
#■まとめ
ちょろっと動かしたけど、意外と動きそう???今後はアプリケーション側で使えないところがないか、検証をやっていきまーす!