ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2023-07-19

MySQL 8.1登場!!Innovation ReleaseとLTSについて

MySQLの最新バージョンである「8.1」が発表されたので超久しぶりに筆を取った。しばらく筆を取らなかった理由は個人的なものなのだが、このブログはごく個人的な活動であるので諸々の事情はご容赦頂きたい。

さて、MySQL 8.0の次のバージョン番号は何になるかという憶測は色々あったと思うのだが、8.1というものに落ち着いた結果になった。(9.0にしてしまうと、2桁目の番号が意味をなさなくなってしまうからね!!ちなみに次のバージョンは8.2、8.3・・・という具合に続く予定だ。)8.1という番号はバグデータベース上で既にチラチラと出ていたので、公式な発表よりも前に気づいていた人も多かったのではないだろうか。本稿では、バージョン8.1の概要と、8.1リリースと同時に発表されたInnovation ReleaseおよびLTS(Long Time Support)について解説しようと思う。

Innovation ReleaseとLTS(Long Term Support)について

今回の新バージョンである8.1は、前回のバージョンである8.0のリリースから実に5年以上経過するという異常事態となった。なぜMySQL 8.0の次のバージョンのリリースがこれほどまでに遅れてしまったのか。その理由はバージョン8.0において導入された開発モデルにあると言っていいだろう。MySQL 8.0では正式版がリリースした後にも、大きな機能追加をどんどんおこなうという決定をしてしまったのだ。そのため、初期のリビジョンである8.0.11と最新版では、もはや別のバージョンではないかと疑うほどに機能が増えている。新しい機能をできるだけ早くリリースしたいという思惑からそのような戦略が取られたのだが、その代償としてバージョン番号の更新が遅れることになってしまった。(そのためMySQLは全く進化していないと考えている人もいるようであるが、8.0のまますごく進化してるからね!!)

そこで、リリースする正式バージョンを2つに分けるという手法を、MySQLも採用することになった。いわゆるLTS - Long Term Releaseとそれ以外のバージョンである。LTSではないバージョンはInnovation Releaseと呼ぶ。長期間サポートされるバージョンと、新機能をいち早くリリースするためのバージョンに分けることにより、新しいバージョンをリリースしつつ、新機能をいちはやく世に送り出すことの両立が可能になった。LTSは2年毎、Innovation Releaseは3ヶ月毎にリリースされる予定である。5.7までのバージョンは、概ね2〜3年おきにリリースするというのが通例であり、そのためサポート期間についてもそのような計画に基づいて設定されていた。8.0では不覚にもそのサイクルを崩してしまい、混乱を生じさせる結果になってしまったのだが、今後はまたそのサイクルに復帰することになる。

LTSでは新しい機能の追加は行われない。そのため新機能を追加したことによるエンバグなどの心配もなく、なおかつセキュリティ脆弱性に対する修正も長期に渡り提供されるので、安心して長期的な運用ができるだろう。サポート期間は既存のバージョンの方式に従う。つまり、5年間のPremier Support期間があり、その後Extended Support期間が設けられている。両者はサポートの内容的には違いはないので、実質的にサポート期間は8年である。その間、バグやセキュリティ脆弱性に対する修正が提供される。サポート期間については、こちらのリンクを参照して欲しい。

Innovation Releaseはいち早く新しいバージョンを利用したい、評価したい先進的なユーザーのためのリリースだと言える。LTSとは異なりバグやセキュリティ脆弱性に対する修正は同一バージョンでは提供されない。一度リリースされると、それでそのバージョンの提供は終了となる。3ヶ月後には次のInnovation Releaseが提供され、バグやセキュリティ脆弱性に対する修正はそのバージョン上で行われることになる。そして、次のInnovation Releaseでは問題の修正だけでなく新機能や仕様変更なども付随することになる。という具合に、Innovation Releaseは一見するとこれまでと勝手が違っているので注意して欲しい。とはいえ、バグ修正と新機能追加を同時に行うやり方は、MySQL 8.0のこれまでと同じだというのがどうやらプロダクトチームの主張のようだ。いずれにせよ、とにかく新しいものを使いたいという人は、ぜひInnovation Releaseを使ってみて欲しいと思う。反対に、とにかく安定した運用をしたいという人・・・というかよほどの事情がない限り普通は、本番ではLTS一択となるだろう。

当然ながら、次のLTSバージョンには新しい機能や仕様変更が盛り込まれることになる。いち早くそういった機能を評価できるという点では、Innovation Releaseは非常に有用である。次のLTSバージョンへのアップグレードを見据えて早めに行動を起こしておけば、アップグレード計画に余裕をもたせることができる。また、途中で機能追加や仕様変更があってもとにかく最新の機能をいち早く使いたいという勇者は、Innovation Releaseを運用するに値するかも知れない。当然ながら仕様変更などにより、アップグレードがスムーズに行かないというリスクはあるので、その点は覚悟して欲しい。ブチャラティのように「覚悟ができている」人はぜひ利用して欲しいと思う。次のLTSが出た時点でInnovation ReleaseからLTSに乗り換えるというのもアリだ。また、一度に多くの変更に対応したくないという人は、Innovation Releaseを利用するのが良いかも知れない。LTSからLTSへアップグレードするのと比べると、一度のアップグレードにおける非互換の変更点はずっと少なくて済むからだ。ただしInnovation Releaseはサポート期間が短いので、その分アップグレードは頻繁に行う必要がある。普通はそんなペースでアップグレードできないと思うので、本番環境ではLTSを選択するのが無難だろう。

LTSとInnovation Releaseの詳しい解説については、MySQLのプロダクトマネージャーのブログ記事を参考にして欲しい。

8.1のサポート期間

さて、「MySQL 8.1はLTSとInnovation Releaseのどっちなんだーい?」と思われる人が多いだろう。結論からいうと、8.1はInnovation Releaseである。正式版という扱いではあるものの8.1に対する修正版は出ない。サポートを受けて問題が出た場合、修正は次のメジャーリリースに含まれることになる。同一メジャーリリース上で修正版は出ないので、修正が必要な場合にはメジャーバージョンのアップグレードをする必要が出てくるので注意して欲しい。このような方式であるため、Innovation Releaseのサポート期間は、次のInnovation ReleaseまたはLTSが提供されるまでということになっている。つまり、8.1は8.2がリリースされるまでの間サポートされる。

今後の8.0のリリースとサポート期間

MySQL 8.1がInnovation Releaseとして登場したことにより、MySQL 8.0は新機能を追加するという役割りを終えることになる。なので今後は新しい機能の追加や仕様変更は行わず、粛々とバグやセキュリティ脆弱性の修正だけが提供されていくことになる。

いつまでなのか?それが問題である。

MySQL 8.0の正式版リリースは2018年4月である。本来はPremier Supportが5年であるところ、次のバージョンが出てこなかったためにPremier Supportが2年延長されている。Extended Supportの終了日は変更されていない。そのため、次の期間まで修正版が提供されることになる。

Premier Support期間:2025年4月
Extended Support期間:2026年4月

PremierとかExtendedの話は商用サービスについての話なので、コミュニティ版(GPL版)についてはその違いに特に意味はない。2026年4月まで修正版が出るという認識だけで問題ないだろう。

個人的にこのスケジュールは非常にタイトなものであると言える。LTS版がリリースされるまではMySQL 8.0で耐えなければいけないのだが、そのLTS版のリリース時期についてはまだアナウンスされていない。そんな中でサポートの終わりだけが決まっている状況は望ましくなく、不安を覚えるユーザーもたくさんいることだろう。MySQLの中の人に知り合いがいれば、その懸念をどんどん伝えて欲しいと思う。サポート契約があれば問い合わせという形でぶつけてもらっても構わない。多くの不満や不安の声が届けば変えられるかも知れない。

LTSバージョンはいつ?サポートはいつまで?

最初のLTSがいつ出るかは未定である。早く出せ!!と思われること必至であるが、グッと堪えて今後の発表を待って欲しい。

Innovation Releaseは今後3ヶ月ごとのペース(目標)でリリースされ、そのうちの一つがLTSになるというようなイメージである。どのInnovation ReleaseがLTSになるかというのが現時点では未定というわけだ。MySQLのプロダクトマネージャーの記事では8.4がLTSバージョンの具体例として出ているが、まだ決定ではないので注意をして欲しい。余談だが、LTSバージョンが出ると次のInnovation Releaseのバージョン番号は、一桁目の数字が変わる。つまり、8.xのLTSの次のInnovation Releaseはバージョン9.0.0になり、その次は10.0.0・・・という風に数字が増えていく予定だ。

LTSのサポート期間については既存のバージョンと同じである。LTSになったバージョンは、その時点から5年のPremier Support、さらに3年のExtended Supportの、合計8年のサポート期間が設定される。その後はSustaining Supportとなり、その終了時期は設定されていない。つまり会社が無くならない限りはずっとサポートが受けられるというワケだ。

周辺プロダクトとバージョンの混在について

MySQL 8.0シリーズでは、ドライバや周辺プロダクト(MySQL ShellやMySQL Workbench)についてもバージョンが8.0になり、リビジョンまで含めて同じバージョンが提供される方式になった。ドライバを除いた周辺プロダクトについては、MySQL本体(MySQL Server)と同じようにInnovation ReleaseとLTSが提供されることになる。ドライバに関してはInnovation ReleaseとLTSを分けることなく提供される予定である。8.0シリーズは更新されず(8.0.34は出ていないよ!)、MySQL ServerのInnovation Releaseと同期して更新されていくことになる。ドライバに関しては、現時点(2023年7月19日現在)において8.1.0が最新の正式版ということになる。また、ドライバは直近のすべてのバージョンのMySQL Serverへの接続が(接続先がLTSかInnovation Releaseかに関わらず)サポートされる。

アップグレードについて

MySQLのプロダクトマネージャーの記事では、バージョン間のアップグレードについても紹介されている。

簡単にまとめると、LTSあるいはInnovation Releaseから次のLTSへのアップグレードはインプレース方式のアップグレード(データファイルをそのまま利用する)、および論理アップグレード(ダンプ&リストア)によりサポートされ、ダウングレードは論理ダウングレード(ダンプ&リストア)のみがサポートされる。直近のバージョンで具体例を示すと、次のパターンはインプレース・論理双方の方式でアップグレードが可能だ。
  • 8.x(non-LTS)→8.x(LTS)
  • 8.x(LTS)→9.x(Any)
non-LTSと書いたのは、Innovation Releaseまたは8.0という意味だ。8.0はInnovation Releaseではないからだ。一方、次のケースはアップグレード不可となる。なぜなら、9.xの前に8.xのLTSが存在するからだ。
  • 8.x(non-LTS)→9.x(Any)
ダウングレードについては下記のケースが論理方式で対応可能だ。
  • 8.x(LTS)→8.x(non-LTS)
  • 9.x(Any)→8.x(LTS)
同一LTSバージョンにおいては、アップグレードもダウングレードもインプレース方式および論理方式双方がサポートされる。(仕様変更がないからね!)

レプリケーションも似たような方式で、バージョンが異なる場合、レプリカが次のLTSバージョンまでなら対応可能となる。

まとめ

本稿ではMySQLのリリースモデルが変更され、Innovation ReleaseとLTSというバージョンが出てくるようになったこと、8.1はInnovation Releaseであることを解説した。メジャーバージョンの途中で新機能がモリモリと組み込まれることがなくなったという点は、個人的に大いに歓迎したい。久しぶりのブログ更新となったが、8.1の新機能についても紹介して行きたいと思う。8.0が出たときには力尽きて新機能紹介が出来ていなかったので、そのおさらいなどについてもいずれ書きたい。

0 コメント:

コメントを投稿