MySQL系统表故障探究
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,最近在巡检的时候,发现mysql错误日志中,报如下错误: 1779986 2015-10-06 00:06:37 7f5215214700 InnoDB: Error: Table "mysql"."
千家信息网最后更新 2026年10月31日MySQL系统表故障探究最近在巡检的时候,发现mysql错误日志中,报如下错误:
在错误日志中追溯原因,发现是在一次故障迁移中,删除过ibdata1文件,在重启之后,自动创建的ibdata1文件,但这几张innodb系统表并没加载到表空间中。这些错误虽然并不影响业务,但很影响备份,在错误日志中大量出现,也是很烦的。
那么对于这样的错误,我们该如何处理?
1、如果是slave备机,停止复制,记录pos等信息(对于不复制mysql库来说,也没有必要做这一步) mysql>stop slave ;
2、删除上述系统表 drop table mysql.innodb_index_stats; drop table mysql.innodb_table_stats;
drop table mysql.slave_master_info;
drop table mysql.slave_relay_log_info;
drop table mysql.slave_worker_info ;
3、删除相关的.frm与 .ibd 文件
rm -rf innodb_*_stats* rm -rf slave_*
4、重新创建上述系统表
注意:不要轻易删除ibdata1文件,在不同的版本、不同的分支,系统表都有可能不太一样,如mysql 5.6 与 MariaDB 10.0的系统表,mysql5.5 与mysql 5.6 的 系统表等等,在做迁移或升级时,很容易忽略掉这些细节,所以在做之前,一定要备份,不要任性而为。
参考文章:http://bugs.mysql.com/bug.php?id=67179
1779986 2015-10-06 00:06:37 7f5215214700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.1779987 2015-10-06 00:06:37 7f5215214700 InnoDB: Recalculation of persistent statistics requested for table "xxxx"."xxxxxx" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.经过排查,发现是mysql 的几张系统表不见了,到底是那几张呢? MySQL 5.6的ibdata1表空间包含了5个InnoDB基础表,如下:mysql> select table_name from information_schema.tables where table_schema='mysql' and engine='InnoDB';+----------------------+| table_name |+----------------------+| innodb_index_stats || innodb_table_stats || slave_master_info || slave_relay_log_info || slave_worker_info |+----------------------+5 rows in set (0.00 sec)在MySQL 5.6之前,如果关闭MySQL后删除ibdata1,再重新启动MySQL的时候ibdata1会被重新创建, 但从MySQL 5.6开始,这5个表不会被重建,究其缘由是因为这几张表的存储引擎是innodb,而且在MySQL5.5 中并没有这几张表。大致来看看5.6与5.5系统表的区别:
MySQL 5.5 系统表 +---------------------------+| columns_priv || db || event || func || help_category || help_keyword || help_relation || help_topic || host || ndb_binlog_index || plugin || proc || procs_priv || proxies_priv || servers || tables_priv || time_zone || time_zone_leap_second || time_zone_name || time_zone_transition || time_zone_transition_type || user |+---------------------------+22 rows in set (0.00 sec)MySQL 5.6 系统表+---------------------------+| 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 |+---------------------------+28 rows in set (0.00 sec)由上述统计可以看到,在mysql5.6 中,除了增加了上述5张表,还添加了general_log 、slow_log 表,并且将5.5中的host表合到了5.6中的user表中。在错误日志中追溯原因,发现是在一次故障迁移中,删除过ibdata1文件,在重启之后,自动创建的ibdata1文件,但这几张innodb系统表并没加载到表空间中。这些错误虽然并不影响业务,但很影响备份,在错误日志中大量出现,也是很烦的。
那么对于这样的错误,我们该如何处理?
1、如果是slave备机,停止复制,记录pos等信息(对于不复制mysql库来说,也没有必要做这一步) mysql>stop slave ;
2、删除上述系统表 drop table mysql.innodb_index_stats; drop table mysql.innodb_table_stats;
drop table mysql.slave_master_info;
drop table mysql.slave_relay_log_info;
drop table mysql.slave_worker_info ;
3、删除相关的.frm与 .ibd 文件
rm -rf innodb_*_stats* rm -rf slave_*
4、重新创建上述系统表
- 从其他机器上,使用mysqldump将这几张表的表结构备份出来,放到该机器上重新执行,备份脚本如下:
#!/bin/shTABLELIST="innodb_index_stats"TABLELIST="${TABLELIST} innodb_table_stats"TABLELIST="${TABLELIST} slave_master_info"TABLELIST="${TABLELIST} slave_relay_log_info"TABLELIST="${TABLELIST} slave_worker_info"mysqldump -uroot -p mysql ${TABLELIST} > mysql_innodb_tables.sql - 将 mysql_innodb_tables.sql拷贝到出现坏表错误的那台数据库机器,并将其导入到系统库mysql库中.
# mysql -uroot -p mysql < mysql_innodb_tables.sql
- 运行FLUSH TABLES(可选)
注意:不要轻易删除ibdata1文件,在不同的版本、不同的分支,系统表都有可能不太一样,如mysql 5.6 与 MariaDB 10.0的系统表,mysql5.5 与mysql 5.6 的 系统表等等,在做迁移或升级时,很容易忽略掉这些细节,所以在做之前,一定要备份,不要任性而为。
参考文章:http://bugs.mysql.com/bug.php?id=67179
系统
错误
备份
文件
日志
机器
不同
数据
数据库
时候
空间
影响
故障
任性
必要
业务
信息
分支
原因
基础
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
博彦科技互联网金融
深圳恒合互联网络科技有限公司
互联网科技有限公司图片
互联网未来科技
北京禾田雨橡互联网科技
融势互联网科技
重庆科技学院互联网
现代科技和互联网有关系吗
中化能源互联网科技招聘
互联网公司科技股
黑科技闪耀互联网之光
如何创新互联网科技
互联网金融科技名词解释
上海科技产业互联网平台
艺电能源互联网科技有限公司招聘
互联网科技的前景
互联网科技对化妆品行业
亚光科技低轨卫星互联网
优雇互联网科技有限公司
今日互联网科技
麻工互联网科技
唐信互联网科技
时间互联网络科技
互联网 视角下的科技创新
哈尔滨秒房互联网科技有限公司
湖南洣水互联网科技有限公司扣款
宁夏众和广鑫互联网科技有限公司
互联网在线教育科技创业
互联网科技包装股份有限公司上市