たまにしか使わないので、よく忘れてしまうMySQLのロック処理。
この機会メモ!
mysqldump 時にread lock (読み込みのみ許可)をする際は、下記オプションをつける。
mysqldump -u root -p --lock-all-tables -A > dump20110120.sql
「–lock-all-tables」 = FLUSH TABLES WITH READ LOCKと同じ。(全テーブルをreadロック)
テーブルをreadロック
mysql> LOCK TABLES friends READ; READロックを取得
mysql> LOCK TABLES friends WRITE; WRITEロックを取得
mysql> LOCK TABLES table_a READ, table_b WRITE; 複数のテーブルを同時にロック
テーブルのロックを解除する場合は、以下のようにする。
mysql> UNLOCK TABLES;
※ロック中は、挙動としてselectやupdateをした際に、ロックがはずれるまで応答をまつ。