1.MySQLのバージョンについて
MySQL x.y.zと書いた場合、xがメジャーバージョン番号、yがリリースレベル、x.yが1つのリリースシリーズとなり、zがリリースシリーズ内でのバージョン番号になるとされています(ドキュメント上の記載はこちら(https://dev.mysql.com/doc/refman/5.6/ja/which-version.html)です)。
しかし実際のところ、互換性の単位やドキュメントの単位としてほぼx.yの「リリースシリーズ」が単位となることから、開発元のOracleで開催されるセミナーなどで語られる際は、リリースシリーズとされているx.yが(メジャー)バージョン、zがマイナーバージョンとして呼ばれることが多くなっています。慣習的に「ドキュメント上のリリースシリーズ」=「(メジャー)バージョン」、「リリースシリーズ内でのバージョン番号」=「マイナーバージョン」と呼んでいますので、今回の説明の中でもその呼び方を使いたいと思います。
メジャーバージョンをまたぐバージョンアップをメジャーバージョンアップ、同一メジャーバージョン内でマイナーバージョンのみ変更されるバージョンアップをマイナーバージョンアップと呼びます。
2.互換性の単位について
先ほど「互換性の単位」という言い方を用いましたが、ここでいう互換性とはmysql_upgradeコマンドを用いたアップグレードの後方互換性のことを意味します(ただし、後程説明しますが、GA版以外のマイナーバージョンではこれらは保証されません)。
MySQLではメジャーバージョン(リリースシリーズ)ごとにmysqlスキーマを始めとするシステム用のスキーマに含まれるテーブルの構造に変化があり、これを解消する(古い形式のシステム用スキーマから新しいシステム用のスキーマに変換する)ためにmysql_upgradeというコマンドが同梱されています。このコマンドを利用したアップグレードは原則「同じ、あるいは1つ前のバージョンのシステム用スキーマを、現在のバージョンのシステム用スキーマに変更する」ことを意図して設計されていたため、2つ以上のバージョンをまたいだmysql_upgradeは失敗することがあります。MySQLのメジャーバージョンアップに関するドキュメント上の記載はこちら(https://dev.mysql.com/doc/refman/5.6/ja/upgrading.html)です。
3.バージョンのステータスについて
MySQLのメジャーバージョンは、大きく分けて3つの状態に分けられます。
「サポートが終了したバージョン」
「サポートされているバージョン」
「開発が進められているバージョン」
の3つです。
MySQL 5.1、5.5とそれより以前のバージョンは「サポートが終了したバージョン」で、これ以上マイナーバージョンのリリースはありません。
MySQL 5.6、5.7が「サポートされているバージョン」で、バグフィックスなどによる新しいマイナーバージョンが提供されることが期待できます。
4.yumリポジトリーを使用したインストール
MySQL開発元のOracleが公開しているyumリポジトリーを利用してインストールする方法です。メリットとしてはインストール、アップグレードとも容易なことですが、インストール先のパスが固定されるため、1台のサーバに複数のMySQLを同居させるには不向きです。yumリポジトリーの設定ファイルはMySQL :: Download MySQL Yum Repository(http://dev.mysql.com/downloads/repo/yum/)からダウンロードすることができます。以下のコマンドはCentOS 6.6上でMySQL 5.7をインストールする方法です。
1 2 |
# yum install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm # yum install mysql-community-server |
インストール自体は方法も変わりませんし、とても簡単です。かつてはcronieパッケージなどの依存関係でインストールされるBaseリポジトリーのmysql-libsパッケージと相性が悪く、たびたび依存性の問題を起こしていたイメージがありますが、最新版であるMySQL 5.7.10は問題なくBaseリポジトリーのmysql-libsパッケージをmysql-community-libs-5.7.10にアップグレードしてくれました。
5.yumリポジトリーを利用したインストールにおけるMySQL 5.6と5.7の相違点
MySQL 5.6までは
「Oracleから配布されているrpmファイルをインストール(以下rpm版)」する方法と「Oracleが提供しているyumリポジトリーからインストール(以下yum版)」には若干のパッケージの違いがありましたが、MySQL 5.7では、旧来yum版であったパッケージ方式に統一されています。
そのため、「MySQL 5.6とそれ以前のrpm版」「MySQL 5.6とそれ以前のyum版」「MySQL 5.7(rpm版, yum版共通)」という軸と、参考までにCentOS 6.6のBaseリポジトリーをまとめてあります。
rpm版 5. |
yum版 5. |
5. rpm版, yum版共通 |
CentOS 6. |
|
---|---|---|---|---|
MySQLサーバ |
MySQL-server | mysql-community-server | mysql-community-server | mysql-server |
MySQLコマンドラインクライアント |
MySQL-client | mysql-community-client | mysql-community-client | mysql |
MySQLライブラリー |
MySQL-shared | mysql-community-libs | mysql-community-libs | mysql-libs |
サービス名service コマンドで参照する名前) |
mysql | mysqld | mysqld | mysqld |
データディレクトリーの初期化 | mysql_ インストール時 |
mysql_service mysqld start 時 |
mysqld –initializeservice mysqld start 時 |
mysql_service mysqld start 時 |
エラーログファイル名 | /var/ |
/var/ |
/var/ |
/var/ |
初期ユーザ | root@localhostなどrootのみ | root@localhostなどと匿名ユーザ | root@localhostのみ | root@localhostなどと匿名ユーザ |
rootアカウントの仮パスワード | /root/ |
生成しない | /var/ |
実装なし |
・パッケージ名の相違
MySQL 5.6とそれ以前のrpm版(以下、旧rpm版)は”MySQL-*”と大文字小文字交じりでしたが、yum版は”mysql-*”と小文字のみのパッケージ名になっています。また、Oracleが提供しているyum版のパッケージは”mysql-community-*”とコミュニティ版であることが明示されたパッケージ名になっています。
・サービス名の相違
旧rpm版は”mysql”、yum版は”mysqld”となっており、initスクリプトも/etc/init.d/mysqlと/etc/init.d/mysqldとそれぞれ名前が違います。シェルからinitスクリプトを実行する分にはTabキーによるパス補完などで気にする必要はないかと思いますが、ちゃんとserviceコマンドで記載する場合やchkconfigコマンドなどの引数にする場合は注意してください。
・エラーログファイルのパス
旧rpm版では”/var/lib/mysql/ホスト名.err”(MySQLとしてのデフォルト)ですが、yum版では同時にインストールされる”/etc/my.cnf”にlog_error= /var/log/mysqld.logが設定されているため、エラーログは”/var/log/mysqld.log”に出力されます。
・初期ユーザの相違
MySQL 5.6までは”root@localhost”, “root@127.0.0.1”, “root@サーバのホスト名”など複数のrootアカウントと、yum版ではそれに加えて匿名ユーザ “”@localhost”などが作成されていましたが、MySQL 5.7では”root@localhost” のみを作成します。skip_name_resolveオプションが有効な環境下ではlocalhostと127.0.0.1は別のホストとして扱われるため、TCP接続の場合は注意してください。
・rootアカウントの仮パスワード
MySQL 5.6までは旧rpm版でのみ仮パスワードが生成され”/root/.mysql_secret”ファイルに出力されていましたが、MySQL 5.7ではデフォルトで仮パスワードが生成されるようになっています。また、出力先も”/var/log/mysqld.log”(MySQLのエラーログファイル)に変更になっています。