> 历史信息查看请查看个人网页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导出后的文本

[attachment:442]


------

##5. 参考链接

无



--------