MySQL道普請便り

第8回 MySQLのバージョン体系を知る

この記事を読むのに必要な時間:およそ 5 分

第6回 mysqlコマンドラインクライアントにページャーを指定するの際にも少しだけ触れましたが,去る2015/10/21,MySQLの最新版となるMySQL 5.7が製品リリースされました。筆者が執筆してきた第2回第4回第6回ではそれぞれ,第2回の執筆時にMySQL Yum Repositoryを導入し,執筆時点で最新のmysql-community-server-5.6.26-2.el6.x86_64をyumコマンドでインストール」したものを利用していました。

今回はそれらをMySQL 5.7にアップグレードする方法と,「MySQL 5.6から5.7ってマイナーバージョンアップじゃないの?」「GA(General Availability)とかRC(Release Candidate)とか一体何なの?」というバージョンにまつわる説明をしたいと思います。

MySQLのバージョンについて

MySQL x.y.zと書いた場合,xがメジャーバージョン番号,yがリリースレベル,x.yが1つのリリースシリーズとなり,zがリリースシリーズ内でのバージョン番号になるとされています(ドキュメント上の記載はこちらです)。

しかし実際のところ,互換性の単位やドキュメントの単位としてほぼx.yの「リリースシリーズ」が単位となることから,開発元のOracleで開催されるセミナーなどで語られる際は,リリースシリーズとされているx.yが(メジャー)バージョン,zがマイナーバージョンとして呼ばれることが多くなっています。筆者も慣習的に「ドキュメント上のリリースシリーズ」「(メジャー)バージョン」,「リリースシリーズ内でのバージョン番号」「マイナーバージョン」と呼んでいますので,今回の説明の中でもその呼び方を使いたいと思います。

メジャーバージョンをまたぐバージョンアップをメジャーバージョンアップ,同一メジャーバージョン内でマイナーバージョンのみ変更されるバージョンアップをマイナーバージョンアップと呼びます。

全く余談ですが,たとえば「MySQL 5.6」「マイエスキューエル ごーてんろく」と呼ばれることが多く,たまに「マイエスキューエル ごーろく」,英語に行くと「マイエスキューエル ファイブシックス」と呼ばれることが多いようです。

互換性の単位について

先ほど「互換性の単位」という言い方を用いましたが,ここでいう互換性とはmysql_upgradeコマンドを用いたアップグレードの後方互換性のことを意味します(ただし,後程説明しますが,GA版以外のマイナーバージョンではこれらは保証されません)。

MySQLではメジャーバージョン(リリースシリーズ)ごとにmysqlスキーマを始めとするシステム用のスキーマに含まれるテーブルの構造に変化があり,これを解消する(古い形式のシステム用スキーマから新しいシステム用のスキーマに変換する)ためにmysql_upgradeというコマンドが同梱されています。このコマンドを利用したアップグレードは原則「同じ,あるいは1つ前のバージョンのシステム用スキーマを,現在のバージョンのシステム用スキーマに変更する」ことを意図して設計されていたため,2つ以上のバージョンをまたいだmysql_upgradeは失敗することがあります※1)。MySQLのメジャーバージョンアップに関するドキュメント上の記載はこちらです。

また,大きな機能追加や機能の廃止,SQL構文の変更(稀です),パラメーター名の変更(MySQL 5.6ではマイナーバージョンアップで変更されたこともありますが)などは原則メジャーバージョン単位で行われます。

※1)
成功することもあります。筆者が試した限りでは,MySQL 5.1.73からMySQL 5.6.27へのメジャーバージョンアップはmysql_upgradeコマンドで実施可能,MySQL 5.0.96からMySQL 5.6.27へのメジャーバージョンアップは失敗(MySQL 5.6がクラッシュする)でした。ドキュメント上の記載も「not recommended or supported(推奨されない,またはサポートされない)」となっています。

バージョンのステータスについて

MySQLのメジャーバージョンは,大きく分けて3つの状態に分けられます。

「サポートが終了したバージョン」「サポートされているバージョン」「開発が進められているバージョン」の3つです。2015/11/28現在,MySQL 5.1とそれより以前のバージョンは「サポートが終了したバージョン」で,これ以上マイナーバージョンのリリースはありません。MySQL 5.5,5.6,5.7が「サポートされているバージョン」で,バグフィックスなどによる新しいマイナーバージョンが提供されることが期待できます(MySQL 5.5は2015/12でサポート期限が切れるため,その後は「サポートが終了したバージョン」になりますが)。

MySQL 5.7が製品リリースされたため現在は「開発が進められているバージョン」はありませんが,このままの予定でいけば,いずれMySQL 5.8が次の「開発が進められているバージョン」としてリリースされるのではないでしょうか(公式にはMySQL 5.8という名前はまだ出てきていませんが,MySQLのコミュニティーマネージャーであるMorgan Tockerのブログツイートバグレポートの返信メッセージなどで5.8の片鱗が見えはじめています)。

また,「開発が進められているバージョン」には別の形態もあり,"lab"版,「実験室」版などと呼ばれています。これはMySQL Labsにて配布されている文字通り「実験中」のリリースで,「本番環境での使用はやめてほしい」("Please, DO NOT USE THESE BINARIES IN PRODUCTION")とダウンロードページに記載があります。これらは今後の「開発が進められているバージョン」に取り入れられる可能性のある新機能を試すためのリリースであり,開発中のバージョンのツリーとは独立して開発が進められています。

図1 "Please, DO NOT USE THESE BINARIES IN PRODUCTION"の記載があるMySQL Labs

図1

また,MySQLはマイナーバージョンによっても大きく3つの状態に分けられます。

DMR("Development Milestone Release",かつては「ベータ版」と名前が付けられていました)版,RC("Release Candidate",「リリース候補」の名の通り,DMRとGAの間に位置します。かつて「ガンマ版」と呼ばれていた時期もあったようですが,あまり流行らなかったようです)版,GA("General Availability",かつては"Production"版とも名前が付けられていました。MySQLでは"stable"版という言い方は耳にしませんが,他のプロダクトで言う"stable"版に相当するのがこれです)版です。

各メジャーバージョンの最後のマイナーバージョンのステータスをもって,メジャーバージョン全体のステータスを呼ぶことも多々あります(例えばMySQL 5.7のGA前の2015/9の時点で言えば,MySQL 5.5(5.5.45-GA)と5.6(5.6.26-GA)がGA,MySQL 5.7(5.7.8-rc)はRCでした)が,「サポートが終了したバージョン」に関してはGAとは呼ばれなくなります。

著者プロフィール

yoku0825

GMOメディア株式会社のDBA。日本MySQLユーザ会員。主に地雷担当。主食はMySQLだがPercona Server,MariaDB,InfiniDBにMroongaストレージエンジンなど,mysqldでありさえすれば雑食。

Twitter:@yoku0825

コメント

コメントの記入