MySQL Advent Calendar 2025 1日目のネタはMySQL Routerのバグの話
と言っても、バグを掘り下げるっていうわけじゃないです。
こういうのあるんで、最新にしとこーぜ!って話を軽ーくするんで、流し読みしてくだせえ。
どんなバグの話するの?
MySQL Routerがクラッシュする系のバグの紹介です。
なんでそんな話をするの?
MySQL Routerを8.4にアップグレードして、Routerがクラッシュするって話、今年よく聞いたんですよ。
なので、MySQL Serverを、InnoDB Cluster構成を8.0から8.4にアップグレードする人がこれから日本でも増えるでしょうから、その準備の参考情報としてってところです。
バグその1(37499075)
The http_server plugin would throw an uncaught exception and terminate when given an invalid URL. Now the exception is caught with a 400 HTTP (Bad Request) error returned to the client. (Bug #37499075)
訳:http_serverプラグインは、無効なURLが渡された場合に未処理の例外をスローして終了していました。現在は例外がキャッチされ、クライアントに400 HTTPエラー(Bad Request)が返されます。(Bug #37499075)
MySQL :: MySQL Router Release Notes :: Changes in MySQL Router 8.4.5 (2025-04-15, LTS Release)
8.4.5で解消したやつです。terminate=止まっちゃった、ってことですね。
http_serverプラグインってことはつまり、MySQL Router REST API関連ですね。
--disable-restオプションでMySQL Rouer REST APIを使わないようにするのもありなんでしょうが、Routerくらい大人しくアップグレードササッとやっちゃうのが吉です。
なぜなら、8.4.5にはもう一つ後述のバグが内在してるから…。
バグその2(37303055)
Under certain circumstances, with Connection Sharing enabled, MySQL Router could crash due to a race condition in the connection pool. MySQL Router tried to close a connection while also making that connection available to another thread. Errors were returned similar to the following: Process Core Dump (PID XXXXXX/UID 0) Resource limits disable core dumping for process XXXXXX (mysqlrouter) (Bug #37303055)
訳:特定の状況下で、接続共有が有効な場合、MySQL Router は接続プール内の競合状態によりクラッシュする可能性があります。MySQL Router は、ある接続を閉じようとする一方で、その接続を別のスレッドでも利用可能にしようとしたためです。以下のようなエラーが返されました:
Process Core Dump (PID XXXXXX/UID 0) Resource limits disable core dumping for process XXXXXX (mysqlrouter)
(Bug #37303055)
MySQL :: MySQL Router Release Notes :: Changes in MySQL Router 8.4.6 (2025-07-22, LTS Release)
8.4.6で解消したやつです。MySQL Routerってコネクションプール機能持ってるんですよ。それ絡みですね。
というわけで、アップグレードするなら8.4.6以上がおススメ!
…と言いたいところですが、そうは問屋が簡単には卸さないのが今のMySQL
MySQL ShellとMySQL Routerは9.xの最新を使え
MySQL :: Supported Compatibility: MySQL Server, Clients, & Tools
一つ前の自分のブログでも書いたのだが、MySQL Routerは9.xの最新を使うべきというのが公式の見解になっている。
正直 キメェ という気持ちはグッと抑えて、安全のために9.xの最新(今現在だと9.5)を使うのが無難である。
まあ、そんなこと言ってると、もうすぐ9.7(かな?)がLTSとしてリリースされるはずなんで、そこで綺麗に揃えましょう。
最後に
明日は @shunyasu さんの「Spatial Indexなどの空間検索の性能調査」です。
Spatial Index周り、自分もあまり調べてないから興味津々です。