ヘプタゴンの技術ブログ

サーバ/ネットワーク/linux/AWSとか青森を拠点でやってます

Mysqlがテーブルロックされなくて困った話

元旦からバックアップ用のスクリプトを書いてたのですが、
mysqlを読み専用にしてバックアップを取ろうとしたのですが、
ロックが効いていない模様。。。

具体的には、

#!/bin/sh
:
mysql -u root -p"$_Mysql_Password" -e "flush tables with read lock;"
/bin/sh dbbackup.sh
mysql -u root -p"$_Mysql_Password" -e "unlock tables;"
:

と書いたのですが、3のところでどうやらロックされていない感じ。
コマンド単体で実行してみてもエラーもでない。

しばらくググったら、こんなのが。
http://www.mysql.gr.jp/mysqlml/mysql/msg/13772

セッション切れたらロックも外れちゃうのね。。。
とういうことで、以下のようにmysql内からシェルを実行するように変更。

#!/bin/sh
:
mysql -u root -p"$_Mysql_Password" -e "flush tables with read lock; system /bin/sh dbbackup.sh; unlock tables;"
:

これ知らなかった。。。(恥)