LoginSignup
26
20

More than 5 years have passed since last update.

MySQL5.6から5.7にYumでサクッとアップグレードする

Last updated at Posted at 2015-11-19

前提

  • いわゆるインプレイスアップグレードの手法です。
  • MySQL 5.6は公式レポジトリからインストールしている場合のお話です。
  • 不測の事態に備え、MySQLのデータフォルダやmy.cnfはバックアップしておきましょう。
  • bashとvim上で操作を完結させます。

1. 公式レポジトリの更新

yum remove -y mysql-community-release-el7-5.noarch
yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
# 上記をワンライナーで
yum swap -y -- remove mysql-community-release -- install http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

2. MySQLをシャットダウンする

mysql -u root -p -e "set global innodb_fast_shutdown=0"
mysqladmin -u root -p shutdown

公式ドキュメントでは、パスワードをコマンドに書いています。ですが、今回は履歴に残さないよう、あえて対話式にてパスワードを入力しています。

3. Let's upgrade!

yum remove -y mysql-server
yum install -y mysql-server

※yum update mysql-serverだと旧バージョンの削除の段階でフリーズしたので、一旦removeしてからinstallしています。

4. my.cnfを書き直す

rm /etc/my.cnf
rm /etc/my.cnf.rpmnew
mv /etc/my.cnf.rpmsave /etc/my.cnf
vi /etc/my.cnf

私が書き換えたのは下記4点です。
- innodb_file_format = Barracuda5.7.7からdepracatedになったので削除しました。
- systemdをサポート開始したので、[mysqld_safe]を削除しました。[mysqld_safe]の行以降にpidファイルのパスを書いていたので、pidが無いとログにて指摘されました。
- パスワードの強制変更機能がデフォルトで有効なので、それを無効にするdefault_password_lifetime = 0を書き足しました。
- 5.6デフォルトのsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESを削除しましたが、削除には慎重になったほうが良さそうです。

5. 起動して自動起動を有効にする

systemctl start mysqld && systemctl enable mysqld

6. データベース自体をアップグレードする

mysql_upgrade -u root -p

これで完了!3倍速いMySQLを使い倒しましょう!

参考URL

https://dev.mysql.com/doc/refman/5.7/en/updating-yum-repo.html
https://dev.mysql.com/doc/refman/5.7/en/upgrading.html#upgrade-procedure-inplace
http://www.slideshare.net/yoku0825/mysql-57-53449734
http://mysqlserverteam.com/mysql-5-7-native-systemd-support/
http://d.hatena.ne.jp/indigo13love/20140606/1402026594

アップグレード後のつまづきポイント(2015-11-20 13:15:00更新)

  • SQL_MODEにてONLY_FULL_GROUP_BYが有効になっているので、ORDER_BYのカラムをGPOUP_BYに入れるようエラーがでます。
26
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
20