この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの13日目です.
毎日この「MySQLマニュアルを読む」の日記を書きながらも、そういえば手元にMySQL5.7環境がほとんどない*1ことに気づいたので、色々な所からアクセスできるLinux上(レンサバ上)にも入れておきたいな、と思いました。
実験用に用意してあるCentOS上に、MySQL の公式リポジトリから入れたMySQL 5.6 が入っているものがあったので、それを 5.7 にアップグレードすることにしました。
まず、MySQLの公式yumリポジトリについて知らない人は、ここを見ると良いです。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.5.1 MySQL Yum リポジトリを使用して MySQL を Linux にインストールする
MySQL :: MySQL 5.7 Reference Manual :: 2.5.1 Installing MySQL on Linux Using the MySQL Yum Repository
私も1年半ほど前に日記にかきました。
MySQLをCentOSにyumリポジトリからインストールする - sakaikの日々雑感~(T)編
この方法で入れたMySQL 5.6 は、yum update では 5.6内のマイナーバージョンしか上げてくれません。勝手に 5.7にはならないのです。
(なられても困るけど)
メジャーバージョンを変更(5.6→5.7など)する方法については、上記マニュアルのページ内に説明があります。
http://dev.mysql.com/doc/refman/5.6/ja/linux-installation-yum-repo.html#yum-repo-select-series
http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html#yum-repo-select-series
MySQL5.6日本語マニュアルより引用:
デフォルトでは、MySQL Yum リポジトリは、インストール中に選択したリリースシリーズ内の最新バージョンに MySQL を更新します (詳細はSelecting a Release Seriesを参照してください)。つまり、たとえば 5.6.x インストールは 5.7.x リリースに自動的には更新されません。別のリリースシリーズに更新するには、(デフォルトで、または自分で) 選択したシリーズのサブリポジトリを無効にし、ターゲットシリーズのサブリポジトリを有効にする必要があります。それをするには、 Selecting a Release Seriesで説明されている、/etc/yum.repos.d/mysql-community.repo ファイル内のサブリポジトリのエントリを編集するための手順に従います。
原則として、あるリリースシリーズから別のものにアップグレードするには、シリーズをスキップせずに次のシリーズに移動します。たとえば、現在 MySQL 5.5 を稼働していて、5.7 にアップグレードする場合は、MySQL 5.7 にアップグレードする前にまず 5.6 にアップグレードします。
今日の日記は、ここからはマニュアルの話題ではなく、実際に私が試した内容について書きたいと思います。
まず、今のmysqlに関するリポジトリ設定を確認:
# yum repolist all | grep mysql
mysql-connectors-community MySQL Connectors Community enabled: 17
mysql-connectors-community-source MySQL Connectors Community - So disabled
mysql-tools-community MySQL Tools Community enabled: 31
mysql-tools-community-source MySQL Tools Community - Source disabled
mysql55-community MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - So disabled
mysql56-community MySQL 5.6 Community Server enabled: 214
mysql56-community-source MySQL 5.6 Community Server - So disabled
mysql57-community-dmr MySQL 5.7 Community Server Deve disabled
mysql57-community-dmr-source MySQL 5.7 Community Server Deve disabled
5.6に関するものが enabledに、5.7に関するものが disabled になっていることがわかりました。
5.6のときに rpm を取ってきて設定したものなので、5.7のものには -dmr (Development Milestone Release) がついています。
新しいリポジトリ設定ファイルを取ってくるべきかどうか悩んだのですが、このまま進めることにしました。
結論から言うと、特に問題なかったように見えるので、 -dmr付きのものは -dmrなしの57と同じ所に向くようになっているのかもしれません(yum.repos.d下のファイルの記述方法をよく知らないので、単なるラベルだけの話なのかもしれませんが)。
次に、56のリポジトリを無効にして、57のほうを有効にします:
# yum-config-manager --disable mysql56-community
# yum-config-manager --enable mysql57-community-dmr
それぞれ、設定内容(変更後の内容)が画面に表示されます。
念のため、変更結果を確認してみます。
# yum repolist all | grep mysql
mysql-connectors-community MySQL Connectors Community enabled: 17
mysql-connectors-community-source MySQL Connectors Community - So disabled
mysql-tools-community MySQL Tools Community enabled: 31
mysql-tools-community-source MySQL Tools Community - Source disabled
mysql55-community MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - So disabled
mysql56-community MySQL 5.6 Community Server disabled
mysql56-community-source MySQL 5.6 Community Server - So disabled
mysql57-community-dmr MySQL 5.7 Community Server Deve enabled: 34
mysql57-community-dmr-source MySQL 5.7 Community Server Deve disabled
5.7 が enable になりました。(sourceは、このマシンでは取得していないので、disabled のままにしています)
あとは update するだけ:
# yum update
(略)
=============================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================
Updating:
mysql-community-client x86_64 5.7.10-1.el6 mysql57-community-dmr 23 M
mysql-community-common x86_64 5.7.10-1.el6 mysql57-community-dmr 324 k
mysql-community-libs x86_64 5.7.10-1.el6 mysql57-community-dmr 2.1 M
mysql-community-release noarch el6-7 mysql57-community-dmr 8.6 k
mysql-community-server x86_64 5.7.10-1.el6 mysql57-community-dmr 134 M
Transaction Summary
=============================================================================================================================================
Upgrade 5 Package(s)
(略)
今回、事前に他のソフトを含めて全部 yum update 済だったので、ここでは yum update とだけ指定してアップデートしましたが、mysqlだけをアップデートしたいときには、パッケージ名を指定して実行する必要があります。
起動してみる:
$ mysql -uroot -p
(略)
mysql> status
------------
Connection id: 3
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.10 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 min 44 sec
Threads: 1 Questions: 7 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.042
------------
mysql>
無事、5.7になりました。
このあと、システムテーブル更新のスクリプトを走らせなきゃいけないのかもしれない。(Passwordカラムが存在しているので)
とりあえず動いているので(実験サーバだし)、本気で使う方はちゃんとマニュアル読んで、調べて下さい。
mysql> desc user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
(略)