MySQL: MySQL5.7→8.0へアップグレード方法

2018年4月19日(現地時間)、OSSデータベース「MySQL」の開発チームは、最新のメジャーリリース「MySQL 8.0.11(MySQL 8.0)」を発表しました。今回のメジャーリリースは MySQL 8系のGA(一般公開)版という位置付けで、5.7系より最大2倍高速としています。MySQL5.7→8.0へアップグレード手順をまとめます。(2018/04/22作成)

MySQL mcmurryjulie / Pixabay

公式ブログ: Announcing General Availability of MySQL 8.0
https://blogs.oracle.com/mysql/announcing-general-availability-of-mysql-80

0.環境

$ cat /etc/redhat-release
CentOS release 6.9 (Final)

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper

1.アップグレード手順

1)RPMリポジトリの追加

$ sudo rpm -e mysql-community-release

$ sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el6-1.noarch.rpm

※最新版のリポジトリURLは下記を参照されたい。
https://dev.mysql.com/downloads/repo/yum/

2)MySQLの停止

$ sudo /etc/init.d/mysqld stop

3)MySQLファイルのバックアップ

$ sudo cp -aR /var/lib/mysql/ /var/lib/mysql_bk/

4)MySQLのアップグレード

$ sudo yum update mysql-server

5)MySQLの起動

$ sudo /etc/init.d/mysqld start

6)MySQLテーブルのアップグレード

$ sudo mysql_upgrade -u root

※「 Upgrade process completed successfully. 」メッセージが表示されれば「正常完了」となる。

7)MySQLの再起動

$ sudo /etc/init.d/mysqld restart

$ mysql --version
mysql  Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)

3.アップグレードエラーと対応

1)MySQL 8.0.xでは「 query_cache 」は廃止された

[ERROR] [MY-011071] [Server] unknown variable 'query_cache_limit=8M'

MySQL 8.0: Retiring Support for the Query Cache

MySQLのクエリーキャッシュはパフォーマンスを改善するためにあるが、それは重大なスケーラビリティー上の問題を抱えていて、深刻なボトルネックに簡単になってしまいかねない。

[mysqld]
query_cache_* のパラメーターをコメントアウト

2)MySQL 8.0.xにおけるデフォルト認証形式を変更する

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

MySQL 8.0.xとそれ以降は、認証プラグインを指定しないでユーザーを作成した場合のデフォルトが caching_sha2_password になっているので、MySQL 8.0.xとそれ以降にアップグレードしてから(プラグインを指定せずに)新しく作ったユーザーに対して、5.7とそれ以前と caching_sha2_password をサポートしていないライブラリーで接続しようとすると炸裂する。これを避けるにはサーバー側に default_authentication_plugin を設定する。

[mysqld]
default_authentication_plugin= mysql_native_password

3)MySQL 8.0.x Syntax error or access violation: 1064

	
PHP message: Error in Matomo: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. piwik_log_visit' at line 1

Syntax error or access violation: 1064 #12564
https://github.com/matomo-org/matomo/issues/12564

以上


About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。