データベースはすでに2回停止していて、原因を探そうとしました。
show processlist
Waiting for global read lock | INSERT INTO {myisam_table} ...
ここではディスク領域がいっぱいだったので、それをもう少し与えると問題は終わったと思いましたが、翌日の正午に再びハングしました。
show processlist
Waiting for table level lock | UPDATE {myisam_table} ...
何が原因ですか?
Mysqlデフォルトエンジン:InnoDB。
データベースには、MyISAMエンジンとInnoDBエンジンの両方を備えたテーブルが混在しています。
ここに投稿されたログ:
http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/
すべてのバックアップは午前7時に終了し、勤務時間中に実行されることはありません。昼食時にデータベースが動かなくなった。
—
ArturKędzior2013
MyISAMテーブルが1つのDBセッションでロックされている場合、それをロックした別のDBセッションが必要です。次回これが発生したときに、完全なプロセスリストを表示してください。
—
RolandoMySQLDBA 2013
@Arturito
—
マイケル-sqlbot 2013
SHOW FULL PROCESSLIST
では、SHOW PROCESSLIST
各スレッドのクエリ全体を表示できるようにするためではなく、おそらく必要です...しかし、現状ではMyISAM
、関係するテーブルがある場合SELECT
、42686で長時間実行されているクエリが43506でUPDATE
クエリをブロックしているようですは、その後にSELECT
続くすべてのクエリをブロックします。
mysqldump
です。その時にバックアップを実行していましたか?