历史信息查看请查看个人网页www.zhaibibei.cn

这是一个坚持Oracle,Python,MySQL原创内容的公众号,欢迎关注


这个专题讲一些MySQL日常运维的异常处理


1. 现象

公司一套MySQL数据库的error日志被撑得很大

查看后发现大量报错

Incorrect information in file:    './sys/x$session.frm'

这时查看sys文件夹,发现里面的文件大小都为0


2. 原因查找

sys 数据库是MySQL 5.7后引入的一个系统数据库

用于分析系统性能

具体产生报错的原因未找到

这时想办法修复


3. 问题解决

这里采用还原其他MySQL中sys数据库解决

3.1 备份sys库

找个正常的sys数据库进行备份

mysqldump -usystem -p -S /data/mysql/data/mysql.sock --single-transaction --master-data=2 --set-gtid-purged=off -E -R --triggers --databases sys > /home/mysql/sys.sql

3.2 还原sys库

停止应用

备份整个数据库

删除sys

drop database sys;

重启数据库

service mysqld restart

导入

mysql -usystem -p -S /data/mysql/data/mysql.sock < /home/mysql/sys.sql

再次备份主库

mysqldump -usystem -p -S /data/mysql/data/mysql.sock --single-transaction --master-data=2 --set-gtid-purged=off -E -R --triggers --all-databases > /home/mysql/all.sql

重建复制

4. 注意事项

  • sys库导出需导出所有内容,包括表 视图 存储过程等

否则会报错:

can not create 
  • drop sys库后需要重启实例

否则报错:

Got error 168 from storage engine

这里分享个sql导出后的文本

sys.txt


5. 参考链接