MySQL
RDS
mysql5.7

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

More than 1 year has passed since last update.


■これをやった経緯

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


■前提条件


  • Masterのみの構成を試します。

  • マネジメントコンソール以外は使いません。

  • 5.5で動作していたアプリケーションは問題なく動くのかをざっくりとだけチェックします。

  • 本番反映とか怖いことはしませんw

  • 新、旧ののバージョンは下記です。

  • リージョンはTokyoを使います。

比較項目

バージョン
5.5.46
5.7.16

インスタンスタイプ
db.m1.xlarge
db.m4.xlarge


■はじまりはじまりー


Stage環境で試す


  1. まずは、自分のアプリケーションのStage環境作成


    • 本番でRDSを利用しているので、Stageでも使ってた



  2. AWSマネジメントコンソールにて、「変更(Modify)」より、「DB エンジンのバージョン」を「5.6.34(※2016/12/26現在の5.6最新)」に変更 ※さすがに、一気にアップグレードってわけにはいかないみたいw


    • 対象のRDSインスタンスのステータスが「アップグレード」・・・となるので、数時間待つ・・・



  3. ステータスが「利用可能」になったので、再度「変更(Modify)」より、「DB エンジンのバージョン」を「5.7.16(※2016/12/26現在の5.7最新)」に変更を試す


    • しかし、利用していたRDSのインスタンスタイプが「db.m1.xlarge」だったために、最後の変更ボタンを押す前にエラーが出た・・・

    • 内容は、そのインスタンスタイプでは、アップグレードしようとしている「DB エンジンのバージョン」がサポートしていない的なやつでした。



  4. とりあえず、「db.m1.xlarge」から同等のスペックを持つ「db.m4.xlarge」に変更し、「DB エンジンのバージョン」を「5.7.16(※2016/12/26現在の5.7最新)」に変更を試す


    • 変更ボタン押下までは問題なくできた!そして、ステータスが「アップグレード」・・・となるので、数時間待つ・・・



  5. ステータスが「利用可能」となったので、アプリケーション画面へアクセスしたら、意外と普通に表示w


    • しかし、5.7へのアップグレードのときのほうが時間かかりました・・・2時間以上はかかったかも。 :clock1:



  6. 一応、アップグレードログを見とこうと思って見たら、エラーが結構大量に出てる・・・


    • 「mysqlUpgrade」6.49MB・・・ :sob::sob::sob::sob::sob:


      • 内容はmysql_upgrade時のログのようでした。下記一部抜粋。これが、アプリで作成したDBにもずらずら出てたので、がーんってなった :weary: んですが、最後には、ちゃんとRepairing tablesしてて、感動:sunny:





  7. 他にもエラーログ出てないか確認したところ、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: