记一次sys 数据库的修复

时间:2022-07-23
本文章向大家介绍记一次sys 数据库的修复,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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. 参考链接