sql_select_limitを設定したらXtraBackupがsignal 11で転けた

TL;DR

SET GLOBAL sql_select_limit = ? で結果セットのサイズを制限していると、xtrabackupが内部的に発行している SHOW ステートメントの出力結果が切り詰められてクラッシュすることがある。

xtrabackupで遊んでいたら、ある時からおもむろにsignal 11で落ちるようになった。それ以前はフツーにバックアップ取れてたのに。

最初は Unrecognized character \x01; marked by <-- HERE after <-- HERE near column 1 at - line 1374. が怪しいのかと思って色々調べてみてたけれど、なんか正常終了するケースでも出力されているぽい(2.4.5では出なかった && 2.4.6では常に出る)
ステップ実行してみたら、ここを通り抜けた後にsignal 11なのでこれが直接の原因ではなさげ。
次の容疑者(?)は get_mysql_vars なのでここにブレークポイントを打ってステップ実行。

ここ で落ちた。
もう一度そこにブレークポイントを入れて渡してる変数を見てみる。

あれー。いくつかNULLになってる。これがSEGVの原因か。
ここで使っている変数を読み取っているのは このへん で、 やってること はどうも SHOW VARIABLES の出力結果を素直に配列に詰めてるだけに見えるんだけどな。。

(つд⊂)ゴシゴシ
あれ? 明らかにInnoDB関連のパラメーター足りなくね? 100 rowsしかない?

これは引ける…。。あ。
これ を見てた時に SET GLOBAL sql_select_limit= 100 したからいけないのか…。orz
本番で起きるとは思えないけど、こんなことがあったメモ。

投稿日:March 21st 2017

元記事:https://yoku0825.blogspot.com/2017/03/sqlselectlimitxtrabackupsignal-11.html

– PR –
– PR –