MySQLのログに InnoDB: Error: Table “mysql”.”innodb_table_stats” not found. て出てた時の対処法

MySQLのログにエラーが出力されておりました。

2014-11-12 20:58:34 7ff0ac4fb700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2014-11-12 20:58:34 7ff0ac4fb700 InnoDB: Recalculation of persistent statistics requested for table "wordpress"."wp_commentmeta" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.

まあ、Wordpressは問題無く動いているし、「Wordpressのアップデートミスったかなぁ。ストレージエンジン変更しまくってたし、またいつかリストアでもしよ。」なんて考えていたのですが、同じ問題にぶち当たっている人がいたので、見てみたところMySQL5.6のバグらしいとのこと。

修正方法

このファイルを実行すればいいみたいなのですが、ファイルのヘッダの手順には

  1. mysqlスキーマのテーブルを削除する
    ・innodb_index_stats
    ・innodb_table_stats
    ・slave_master_info
    ・slave_relay_log_info
    ・slave_worker_info
  2. 上記テーブルの.frm .ibd ファイルを削除する
  3. このファイルのSQLを実行して上記テーブルを再作成する
  4. mysqlの再起動

をせよとのこと。

mysqlスキーマのテーブルを削除する

mysql> use mysql
Database changed
mysql> drop table innodb_index_stats;
ERROR 1051 (42S02): Unknown table 'mysql.innodb_index_stats'
mysql> drop table innodb_table_stats;
ERROR 1051 (42S02): Unknown table 'mysql.innodb_table_stats'
mysql> drop table slave_master_info;
ERROR 1051 (42S02): Unknown table 'mysql.slave_master_info'
mysql> drop table slave_relay_log_info;
ERROR 1051 (42S02): Unknown table 'mysql.slave_relay_log_info'
mysql> drop table slave_worker_info;
ERROR 1051 (42S02): Unknown table 'mysql.slave_worker_info'

すべてテーブルが存在しなかった。。。

上記テーブルの.frm .ibd ファイルを削除する

cd /var/lib/mysql/mysql

rm -vrf innodb_index_stats*
rm -vrf innodb_table_stats*
rm -vrf slave_master_info*
rm -vrf slave_relay_log_info*
rm -vrf slave_worker_info*

.ibdファイルだけが存在してたっぽい。

このファイルのSQLを実行して上記テーブルを再作成する

mysql -u root -p mysql < five-tables.sql

mysqlの再起動

/etc/init.d/mysql restart

治った!

コメントを残す