MySQLについて

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をインストールする方法です。

インストール自体は方法も変わりませんし、とても簡単です。かつては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.6とそれ以前
yum版
5.6とそれ以前
5.7
rpm版, yum版共通
CentOS 6.6 Baseリポジトリー(MySQL 5.1.73)
MySQLサーバ(mysqld) MySQL-server mysql-community-server mysql-community-server mysql-server
MySQLコマンドラインクライアント(mysqlなど) MySQL-client mysql-community-client mysql-community-client mysql
MySQLライブラリー(libmysqlclient.soなど) MySQL-shared mysql-community-libs mysql-community-libs mysql-libs
サービス名serviceコマンドで参照する名前) mysql mysqld mysqld mysqld
データディレクトリーの初期化 mysql_install_db
インストール時
mysql_install_db
service mysqld start
mysqld –initialize
service mysqld start
mysql_install_db
service mysqld start
エラーログファイル名 /var/lib/mysql/ホスト名.err /var/log/mysqld.log /var/log/mysqld.log /var/log/mysqld.log
初期ユーザ root@localhostなどrootのみ root@localhostなどと匿名ユーザ root@localhostのみ root@localhostなどと匿名ユーザ
rootアカウントの仮パスワード /root/.mysql_secret 生成しない /var/log/mysqld.log 実装なし

・パッケージ名の相違

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のエラーログファイル)に変更になっています。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする