FLUSH TABLES WITH READ LOCKが解除できなくて焦った話
とあるメンテ作業で、
FLUSH TABLES WITH READ LOCK;
を使って更新がかからないようにロックをかけた。
その後、使用してるWindowsがフリーズしてしまい、強制再起動をかけた。
別の端末から
UNLOCK TABLES
してみたけど、ロックが外れない。
とりあえずログインしてるユーザを確認してみる。
w
$ w 02:06:46 up 7 days, 13:25, 4 users, load average: 1.07, 0.86, 0.43 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT hoge_fuga pts/1 172.22.188.150 00:24 59:38 0.03s 0.01s sshd: hogehoge [priv] hoge_fuga pts/2 172.22.188.150 01:06 59:50 0.01s 0.01s -bash hoge_fuga pts/3 172.22.246.70 01:26 24:38 0.01s 0.00s mysql -uroot hoge_fuga pts/4 172.22.188.150 02:06 0.00s 0.00s 0.00s w
やっぱりいっぱいいた。
プロセスIDを確認
ps ax | grep sshd
21591 ? Ss 0:00 sshd: hoge_fuga [priv] 21593 ? S 0:00 sshd: hoge_fuga@pts/1 21751 ? Ss 0:00 sshd: hoge_fuga [priv] 21754 ? S 0:00 sshd: hoge_fuga@pts/2 21790 ? Ss 0:00 sshd: hoge_fuga [priv] 21792 ? S 0:00 sshd: hoge_fuga@pts/3 21846 ? Ss 0:00 sshd: hoge_fuga [priv] 21848 ? S 0:00 sshd: hoge_fuga@pts/4
pts/4以外を全部killしていく。
kill 21593 kill 21754 kill 21792
これでDB側にcreate databaseしてみたら、更新できた。
いやー焦った。ありえないタイミングでフリーズしないでほしい。