MySQL5.6から5.7へバージョンアップ
- #MySQL
- #Troubleshooting
- #Tips
- #SQL
- 2018/10/27
MySQL5.6から5.7へバージョンアップ
- 環境はAWSのRDS環境とクラウド環境で行いました。
- ちなみにストーリーとしてはクラウド環境のMySQL(5.6)からAWS環境(5.7)へ移管する感じです。
背景
- MySQLのバージョンを5.6から5.7にバージョンアップするうえでレコードのバイト数の上限ができダンプが入らないという現象が起きた。
手順
- AWSのRDSではスナップショットから簡単にインスタンスの復元を行うことができるためインスタンスの復元を行う。(今回は検証として別インスタンスで進めていくこととします。)
- インスタンスが復元できたらインスタンスの画面に入り変更ボタンを押下、MySQLのバージョンを5.7へバージョンアップします。
- 新規インスタンスのためセキュリティグループやパラメータグループの設定も適宜行いましょう。
- インスタンスが復元できたら次はクラウドからMySQLのダンプを取得します。
- MySQLのダンプはmysqldumpコマンドで取得することができます。詳しくは他の方の記事を参考にしてください。
- ダンプが取得できたら、AWS環境にdumpファイルを転送します。
- ファイルの転送はftpコマンドやsftpコマンド、またはrsyncコマンドなんかでいいと思います。
- 私が行った検証ではこのままではdumpはレコードが肥大化している場合などはエラーになってしまいます。そのためこの段階で対象のテーブルの定義を変更してあげる必要があります。
- mysqlのプロンプトに入り、下記のコマンドを実施してテーブル定義と、ファイルフォーマットを確認します。
SHOW TABLE STATUS LIKE 'DB_NAME'\G
コマンドでテーブル定義を確認できるようです。
SHOW GLOBAL VARIABLES LIKE 'innodb_file_format';
でファイルフォーマットを確認できます。(下記に書きます。)
7.dumpファイルの転送、テーブル定義の確認ができたらdumpを使用してリストアします。
- dumpの適用にはmysqlコマンドでdumpファイルを指定してあげるだけで簡単にできます。
この方法で私の環境ではdumpを突っ込むことができました。
テーブル定義とファイルフォーマットについて
上記にも書きましたがテーブル定義はmysqlのプロンプトで
SHOW TABLE STATUS LIKE 'DB_NAME'\G
で確認できます。
この時に、ROW_FORMATの項目を確認して、DYNAMICかCOMPRESSEDになっていることを確認します。
COMPACTになっていると正常にdumpが入らない可能性があります。(私の環境では入りませんでした。)
ファイルフォーマットの確認では Antelope か Barracuda が設定されると思います。
私の環境ではMySQL5.6の方では Antelope が設定されており、5.7の方では Barracuda が設定されておりました。
これはBarracudaの方が新しいためdumpが入らない場合はBarracudaの方に設定を変更してあげましょう。
AWS(RDS)環境ではパラメータグループから設定できました。
こんな感じで私は無事にdumpファイルを導入することができました。
Share:
X (Twitter)