Mysql innodb錯誤解決 InnoDB: Error: table `mysql`.`innodb_table_stats`
通過ELK監控發現,程序連接mysql DB 失敗,通過看程序的log和mysql的error log發現mysql中出現error
查看Mysql日誌
發現 InnoDB: Error: table `mysql`.`innodb_table_stats` does not exist in the InnoDB internal
這個原因很明顯 ,是mysql庫的innodb_table_stats表損壞了。
首先登錄mysql查看表是否存在? 結果:存在的。
Tables_in_mysql | +---------------------------+ | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | innodb_index_stats | | innodb_table_stats | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | servers | | slave_master_info | | slave_relay_log_info | | slave_worker_info | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user |
mysql> show create table innodb_index_stats;
ERROR 1146 (42S02): Table‘mysql.innodb_index_stats‘ doesn‘t exist
mysql>
猜測是表損壞了,所以打算重新構建表
ls /data/mysql/data/mysql
innodb_table_stats
innodb_index_stats
slave_master_info
slave_relay_log_info
slave_worker_info
發現文件存在,所以直接刪除,重新創建。
rm -rf :
innodb_table_stats
innodb_index_stats
slave_master_info
slave_relay_log_info
slave_worker_info
創建前檢查mysql默認的存儲引擎,如果為MyiSAM ,則在創建的時候,需要指定存儲引擎為INNODB
source /usr/local/mysql/share/mysql_system_tables.sql 這個表的時候,請註意默認的存儲引擎是否為innodb.
個人操作,發現使用以上source並未能將以上損壞的表進行重新構建
嘗試以下操作
1,先看這些表是否還存在,show tables ; 結果:不存在
ls ls /data/mysql/data/mysql/ 結果:不存在
2,嘗試再次drop table innodb_table_stats purge ; (徹底刪除表)
3,手動創建 innodb_table_stats ,結果:成功
4,循環2,3 操作步驟,重新創建以上損壞的表。
本文出自 “crazy_sir” 博客,請務必保留此出處http://douya.blog.51cto.com/6173221/1949232
Mysql innodb錯誤解決 InnoDB: Error: table `mysql`.`innodb_table_stats`