https://logmi.jp/tech/articles/327186

セッションの要約と登壇者の自己紹介

yoku0825氏(以下、yoku0825):「ぼくらが選んだ次のMySQL 8.0」の話をします。私たちは、次のMySQLを8.0.28にしました。みなさんには、それぞれ29や30や自分の使いたいバージョンについて調べてもらいたいのですが、量が膨大になるので、今いるバージョンから新しいほうに向かって調べていくのではなく、最新のものからこれはダメだというものまで遡って調べていくのがおすすめです。

パラメーターに現れない、いきなり挙動が変わるかもしれないものは「What Is New」のページか「Release Notes」のページに書いてあります。パラメーターとかのページだけでは見られないのでこのあたりはご注意ください。それから、パラメーターのデフォルト変更系は「MySQL Parameters」というサイトがあります。とても便利なので活用してください。

yoku0825と申します。とある企業でDBA(Database Administrator)をやっています。「オラクれない・ポスグれない・マイエスキューエる」。Twitter、ブログ、日本MySQLユーザ会のメーリングリストやMySQL CasualのSlackで活動しているピンクのお豆腐です。

今日はMySQLユーザ会としての登壇ですが、別にLINEをクビになったわけではありません。特に「LINEだからどういう」という話ではなく、「前の会社にいた時でもこんな話をしていただろうな」というような話をしているので、MySQLユーザ会名義です。LINEのMySQLに特化した細かい話を聞きたい方はこのあたりのリンクを踏んでもらうか、ググってもらえれば聞く機会はいくらでもあると思うのでそちらもよろしくお願いします。

「What Is New in MySQL 8.0」に書かれていること

(スライドを示して)MySQL 8.0 GAになったのは2018年4月20日。その時のバージョンは8.0.11です。2022年8月2日現在、最新版は8.0.30になりました。(※登壇当時)MySQLのドキュメントには「https://dev.mysql.com」の下にmysql-nutshellというHTMLがあります。ここは「What Is New in MySQL 8.0」というページです。

ここから8.0.xと、バージョンに言及して文字列を取り出して並べてみるとなんとこのとおり。普通、What Is Newは「このバージョンで何ができるようになりました」というマイナーバージョンアップの時にエントリーは現れないはずですが、このようになっています。

11はGAなので特に言及はありませんが、そこから15を除いて元気に。20からも、25を除いて元気に。30でも12ヶ所で何らかの「What Is New」の言及があり、31でもうすでに2つあるという謎状態になっています。

(スライドを示して)ちなみに5.7はこんなものです。バージョンに関して言及があるやつは、たぶん8.0の新機能を5.7にバックポートしたんだと思います。

このセッションは過去の自分に贈る1つのプラクティス

「メンテナンスリリースとは一体何だったのか」とずっと言い続けているのですが、そんな中でもバージョンアップはしなくてはいけなくて、とある書籍(※『MySQL徹底入門 第4版 MySQL8.0対応』)を開きました。

第6章の194ページあたりに「5.7と、それ以前の系列内ではアップグレードは不具合の修正に重点が置かれていたので、同一リリース系列内ではとりあえず最新バージョンを使っておけばよかった。致命的なバグがないかどうかだけを確認して一番後ろのバージョンを使えばよかったのですが、MySQL 8.0系列は同一リリース内でも非互換がある可能性がある。

それまでは『現在リリースされているバージョンの中で一番大きなものが一番バグ修正が進んでいるであろう』という感じだったのですが、8.0では新機能が追加されてしまうため、その機能やその周辺に新規バグが内在する可能性がある。バージョンアップはどうしようね。避けるのが望ましいかもしれません」というようなことが書いてあります。

これが書かれたのは2020年ぐらいだったと思いますが、「導入時点での最新バージョンを選んで動作確認をすること。回帰テストを作りましょう。それから、アップグレードをする時はクライアントのバージョンを先に上げること」ということが書いてあったのですが、肝心の次にどれを使うのか。

今いる会社では8.0.19を使っているのですが、8.0.19から8.0.29の間のどこにターゲットを置けばいいのかが一切合切書いていなかったんですね。第6章でした。担当したのは私でした。というわけでこのトークは、そうとしか書きようがなかった当時の自分への1つの調べ方・やり方の提示です。プロポーズです。

次のMySQL 8.0を探す旅に必要なもの

「ぼくらが選んだ次のMySQL 8.0」。今は8.0.19です。2020年1月13日。私が入社したのが2021年6月なので、それよりも1年半ぐらい前に決まって、検証されてそこからずっと塩漬けにされていたんでしょう。フリーズされてLTSとしてサポートされていたんでしょうね。