タマゴヘビ、アベニーパファー、MR2、色々雑多に書きます
怪しい物を開発するブログ

waiting for table metadata lock でDBが死んだ

mysql
2018.10.27

CopyContentDetectorで障害を起こしてしまったので、メモです。

 

  1. ■DBにアクセスできない
  2. ■今までは何で大丈夫だった?
  3. ■対応方法

■DBにアクセスできない

半年に一回、各テーブルのフラグメントを解消する目的で以下のSQLを実行しています。

ALTER TABLE 【テーブル名】 ENGINE INNODB;  

 

フラグメントを解消することで、ディスクの圧縮や速度低下の防止をすることが出来ます。今回はこのALTER TABLEをしているときにwaiting for table metadata lockが発生してDBが死にました。

mysql5.6では、上記ALTER TABLEはオンラインDDLなので、変更中もデータの取得・更新が出来るようになっています。しかし、何かが原因でトランザクションが長引いたり、トランザクション放ったらかしにすると、waiting for table metadata lockが発生してしまうみたいです。

https://dev.mysql.com/doc/refman/5.6/ja/metadata-locking.html
dev.mysql.com

トランザクション実行中がある→その間に別にalter tableで構造変更→他でトランザクション実行中だから待て。ロック発生→詰まって死ぬ

という感じでしょうか。どうも、alter tableの結果がcommitされる瞬間に発生する感じでした。

 

■今までは何で大丈夫だった?

単純にデータ量が少なかったためです。今までうまく行っていましたが、ずっとwaiting for table metadata lockが発生する危険を含んでいたのだと思います。それが、サーバの台数もかなり増えて同時接続・同時実行数がかなり多くなった、かつ処理するデータ量が多くなって発生する率上がって今回起こった。という感じだと思います。

 

このあたりを見ると、データ量少ないテーブルでも発生するときは発生するみたいですね。

サービス稼働中にMySQLでALTER TABLEしたら Waiting for table metadata lock が溢れて死んだ - Qiita
ALTER TABLE実行する時は注意しましょう、、という事で。##ALTER TABLEALTER TABLEすると以下のような挙動でカラム変更されるようです他のセッションからのREADを許…
qiita.com

 

■対応方法

いろいろあるようですが、waiting for table metadata lockが発生してしまうと、「サーバの再起動」か「止めているクエリをkillでやっつける」の二種類みたいですね。うーん。。。これ、今度からALTER TABLEの必要があるときは、結局メンテナンスモードにしないとだめですね。。

mysql
waiting for table metadata lock
シェアする
X Facebook はてブ
meganeをフォローする
megane

関連記事

mysql

mysqlのログファイルを削除したときの手順

mysql

【CopyContentDetector】mysqlで処理が多くなりすぎて性能不足で遅くなった

mysql

innodb_online_alter_log_max_size関係のエラーでALTER TABLEが止まった

mysql

mysqlのinnodb_log_file_sizeの設定を変更した時の対応

mysql

圧縮しながらmysqldump&圧縮したファイルをmysqlに戻す

mysql

mysqldumpでテーブルロックを発生させない方法

スポンサーリンク
CakePHP + AjaxでのPOSTで受け取った情報が空になる原因
Raspberry Pi3に1.6インチ小型液晶を付けてIPアドレスが確認できるようにしてみる
ホーム
mysql
スポンサーリンク
megane
megane

最近、個人事業主から法人へと進化しました。

エンジニア歴17年位です。PHPとかMysqlを使ってWebシステムを構築します。 Javaも書きます。 CakePHPも使います。 サーバのチューニングもごりごりやります。

あと、お肉と自動車が好きです。Twitterとか申請どうぞ。

meganeをフォローする
タマゴヘビの舌はとても長くて、黒い
2023.03.052025.04.28
Ubuntu20.04でcronのログを/var/log/syslog以外に出力する
2022.10.28
DockerDeskctopで「Cannot remove Docker Compose application…….」とか出る
2022.02.20
RankHistoryに新機能 対象サイトの順位を絞り込んで表示をリリース
2021.09.05
2021年 おためしナガノに参加しました
2021.08.29

カテゴリー

【初心者向け】アベニーパファーの飼育方法まとめてみました
289 views
2018.03.212021.07.13
タマゴヘビを飼育し始めました
253 views
2018.11.042025.04.28
【アクアリウム初心者向け】20cmキューブ水槽にちょうどよいおすすめ機材一式
230 views
2018.10.272025.04.28
AWS EC2が勝手に再起動するので対応した
129 views
2021.05.182021.05.27
ミニ四駆初心者が一番初めに買うと良いパーツ 7点
117 views
2020.03.042020.05.11
怪しい物を開発するブログ
© 2013-2025 株式会社ニューシステムクリエイト.
  • ホーム
  • トップ