通过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 操作步骤,重新创建以上损坏的表。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。