,,,,,经过排查,发现是mysql的几张系统表不见了,到底是那几张呢?
<>以前mysql>从information_schema选择table_name。表table_schema=mysql和引擎=InnoDB的;
+ - - - - - - - - - - - - - - - - - - - - - - - +
| table_name |
+ - - - - - - - - - - - - - - - - - - - - - - - +
| innodb_index_stats |
| innodb_table_stats |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
+ - - - - - - - - - - - - - - - - - - - - - - - +
5行集(0.00秒)
>之前
由上述统计可以看的到,在mysql5.6中,除了增加了上述5张表,还添加了general_log, slow_log表,并且将5.5中的主机表合到中了5.6的用户表中。
,,,,,,,在错误日志中追溯原因,发现是在一次故障迁移中,删除过ibdata1文件,在重启之后,自动创建的ibdata1文件,但这几张innodb系统表并没加载到表空间中。这些错误虽然并不影响业务,但很影响备份,在错误日志中大量出现,也是很烦的。
那么对于这样的错误,我们该如何处理?,
2,删除上述系统表
3,删除相关的.frm与.ibd文件
4,重新创建上述系统表
,,,,,,,在错误日志中追溯原因,发现是在一次故障迁移中,删除过ibdata1文件,在重启之后,自动创建的ibdata1文件,但这几张innodb系统表并没加载到表空间中。这些错误虽然并不影响业务,但很影响备份,在错误日志中大量出现,也是很烦的。
那么对于这样的错误,我们该如何处理?,
2,删除上述系统表
3,删除相关的.frm与.ibd文件
4,重新创建上述系统表
-
<李>
从其他机器上,将这几张表的表结构备份出来,放到该机器上重新执行,备份脚本如下:
# !/bin/sh TABLELIST=" innodb_index_stats " TABLELIST=" $ {TABLELIST} innodb_table_stats” TABLELIST=" $ {TABLELIST} slave_master_info” TABLELIST=" $ {TABLELIST} slave_relay_log_info” TABLELIST=" $ {TABLELIST} slave_worker_info” mysql, mysqldump -uroot - p $ {TABLELIST}祝辞mysql_innodb_tables.sql >之前 李> <李> 将mysql_innodb_tables.sql拷贝到出现坏表错误的那台数据库机器,并将其导入到系统库mysql库中。# mysql -uroot mysql - p & lt;mysql_innodb_tables.sql >之前 李> <李> 运行刷新表(可选) 李> 不要轻易删除ibdata1文件,在不同的版本,不同的分支,系统表都有可能不太一样,如mysql 5.6与10.0 MariaDB的系统表,mysql5.5与mysql 5.6的系统表等等,在做迁移或升级时,很容易忽略掉这些细节,所以在做之前,一定要备份,不要任性而为。
MySQL系统表故障探究