MySQL

MySQL5.6→5.7バージョンアップ


MySQL5.6から5.7へバージョンアップ


  • 先日業務でMySQLを触る機会があったのでその際の手順を共有したいと思います。

  • 環境はAWSのRDS環境とクラウド環境で行いました。

  • 備忘録な感じで書きますので見づらいかもしれませんがご了承ください。

  • ちなみにストーリーとしてはクラウド環境のMySQL(5.6)からAWS環境(5.7)へ移管する感じです。


背景


  • MySQLのバージョンを5.6から5.7にバージョンアップするうえでレコードのバイト数の上限ができダンプが入らないという現象が起きた。

  • 私はMySQLを普段触っていない初心者のため記事に残すこととした。


手順


  1. AWSのRDSではスナップショットから簡単にインスタンスの復元を行うことができるためインスタンスの復元を行う。(今回は検証として別インスタンスで進めていくこととします。)

  2. インスタンスが復元できたらインスタンスの画面に入り変更ボタンを押下、MySQLのバージョンを5.7へバージョンアップします。

  3. 新規インスタンスのためセキュリティグループやパラメータグループの設定も適宜行いましょう。

  4. インスタンスが復元できたら次はクラウドからMySQLのダンプを取得します。    MySQLのダンプはmysqldumpコマンドで取得することができます。詳しくは他の方の記事を参考にしてください。

  5. ダンプが取得できたら、AWS環境にdumpファイルを転送します。 ファイルの転送はftpコマンドやsftpコマンド、またはrsyncコマンドなんかでいいと思います。

  6. 私が行った検証ではこのままではdumpはレコードが肥大化している場合などはエラーになってしまいます。そのためこの段階で対象のテーブルの定義を変更してあげる必要があります。

  7. mysqlのプロンプトに入り、下記のコマンドを実施してテーブル定義と、ファイルフォーマットを確認します。 SHOW TABLE STATUS LIKE 'DB_NAME'\G コマンドでテーブル定義を確認できるようです。 SHOW GLOBAL VARIABLES LIKE 'innodb_file_format'; でファイルフォーマットを確認できます。 下記に書きます。

  8. dumpファイルの転送、テーブル定義の確認ができたらdumpを使用してリストアします。 dumpの適用にはmysqlコマンドでdumpファイルを指定してあげるだけで簡単にできます。 これも詳しくは他の方の記事を参考にしてください。

  9. この方法で私の環境ではdumpを突っ込むことができました。


テーブル定義とファイルフォーマットについて

上記にも書きましたがテーブル定義はmysqlのプロンプトで

SHOW TABLE STATUS LIKE 'DB_NAME'\G

で確認できます。

この時に、ROW_FORMATの項目を確認して、DYNAMICかCOMPRESSEDになっていることを確認します。

COMPACTになっていると正常にdumpが入らない可能性があります。(私の環境では入りませんでした。)

ファイルフォーマットの確認では AntelopeBarracuda が設定されると思います。

私の環境ではMySQL5.6の方では Antelope が設定されており、5.7の方では Barracuda が設定されておりました。

これはBarracudaの方が新しいためdumpが入らない場合はBarracudaの方に設定を変更してあげましょう。

AWS(RDS)環境ではパラメータグループから設定できました。

他の環境の設定や詳しい設定方法も他の方の記事を参考にしてください。

知識がなくてすいません。。

こんな感じで私は無事にdumpファイルを導入することができました。


最後に


  • MySQLは使用経験がなくPostgreSQLやOracleなんかを今まで触っていたのですが、案外いけました。(正しいかは正直自信ないけど)

  • バージョンアップは常にアンテナ張っていかないといけない部分なのでこれからも検証の記事を上げていけたらと思いました。

以上、良いコーディングライフを!!