Home

技術系のメモと日々の雑感

Couldn't execute 'SHOW DATABASES'

毎日取っている MySQL のダンプのサイズが、ある日を境に極端に小さくなった。
試しにコマンドを叩いてみると

mysqldump: Couldn't execute 'SHOW DATABASES': Out of memory (Needed 1675556 bytes) (5)

うわっ!
恐ろしいメッセージ・・・。
このマシンはメモリを 4GB 積んでいるので、innodb_buffer_pool_size には半分の 2GB を割り当ててたんだけど、これが原因だろうな。
そこで実メモリの 4 分の 1 まで減らしてみたら、今のところ大丈夫そう。
いや〜、久しぶりに焦った。
ダンプが取れないままじゃ年を越せないもんねぇ。

mysqladmin flush-hosts と skip-name-resolve

とある MySQL の環境を別のマシンに移動したときに、設定は間違ってないはずなのに接続できなくなった。

$ mysql -u fuga -h hoge.example.com -p
Enter password:
ERROR 1130 (00000): Host 'hoge.example.com' is not allowed to connect to this MySQL server

サブネットで接続元を許可しているから、環境を移動しても特にここの設定を変更する必要はないはずだった。
マニュアルによると、このパターンにハマったときは

mysqladmin flush-hosts

を実行して、MySQL が持っているホスト名キャッシュをクリアしたら治るとのこと。
でも試してみたらダメ。
そこで、my.cnf に

skip-name-resolve

を書いて MySQL のデーモンを再起動する方法を試したら解決した。
この後 skip-name-resolve を消しても問題なかったので、ひょっとしたら mysqladmin flush-hosts を実行した後はデーモンを再起動しないといけないのかもしれないね。