肥大化しているエラーログに立ち向かうお話
とあるWordPressが遅いという流れからログを漁っているとMySQLのエラーログがすごいことになっていました。
確認してみると下記のログが大量に吐き出されていました。
InnoDB: Error: Column last_update in table "mysql"."innodb_table_stats" is INT UNSIGNED NOT NULL but should be BINARY(4) NOT NULL (type mismatch)
innodb_table_statsというテーブルのlast_update列タイプがミスマッチらしい(分かってない)
ググりますと下記が参考になりそうでした。
InnoDB: Error: Column last_update in table "mysql"."innodb_table_stats" is INT UNSIGNED NOT NULL but should be BINARY(4) NOT NULL (type mismatch) | Luxian's Notes
アップグレードしたらなおるってことかな!
# mysql_upgrade -u root -p
念のためバックアップをとっておいて上記コマンドを実行。
見事にエラー表示が出て閲覧すらできなくなりました。
みんながみんな同じ環境じゃないってことよね。
バックアップから戻して調査を続けます。
下記が正解っぽいです。
https://www.webdevqa.jp.net/ja/mysql/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E5%AE%9F%E8%A1%8C%E3%81%94%E3%81%A8%E3%81%ABinnodb%E5%86%85%E9%83%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/l966298145/
>この問題は、以前のバージョンからのアップグレード中に発生した、データベース変換手順のバグが原因と考えられる「タイムスタンプ」フィールドの内部表現に関連しています。
バージョン上げたときにバグってたってことかな。
# mysqldump --events --quick --single-transaction mysql > mysql-dump.sql # mysql mysql < mysql-dump.sql # systemctl restart mysql
参考にして上記コマンドを試してみます。
エラーが消えた!
やっぱりエラーログがかるくなるって気分的にいいですね!
コメント