MySQL内核月报 2014.10-MySQL· 捉虫动态·崩溃恢复失败-阿里云开发者社区

开发者社区> db匠> 正文

MySQL内核月报 2014.10-MySQL· 捉虫动态·崩溃恢复失败

简介:
+关注继续查看

现象

  5.6版本,在创建InnoDB表过程中,若发生crash,会导致服务无法启动。


背景

  每个InnoDB表A创建成功后有两个文件A.frm和A.ibd。建表流程如下:

  1、创建A.frm

  2、创建A.ibd

  3、初始化A.ibd

  4、将表A加入InnoDB字典


若crash发生在步骤2之后,则只保留一个完整的A.frm和一个空文件A.idb。


崩溃恢复

  在上述的crash发生后,下一次启动则需要做崩溃恢复。崩溃恢复的一个逻辑是需要遍历数据目录下的所有.ibd文件,验证文件与字典的一致性。

  对于长度为0的.ibd 文件,报错并跳过,继续检测下一个表。

  以上是5.5和5.6共有的逻辑。但5.6的一个新特性破坏了这个规则。


远程目录

  5.6支持create table的时候指定其他目录。语法是create table 里新增参数DATA DIRECTORY.这样一个表就可能存在多个表空间。每个表空间对应一个数据结构(fsp_open_info).

  这意味着在崩溃恢复过程中,需要验证哪一个表空间是可用的(fil_validate_single_table_tablespace),

  验证的方法是尝试读取该表空间的第一个page,若可用则将对应的fsp_open_info::success设置为TRUE。

  而在读取本地默认表空间的第一个页时,若碰到读取失败,直接exit(1),导致程序直接退出。“若文件小于4个page就报错”的逻辑,是在这个exit之后。


分析改进

  其实在这个场景下,多出来的A.frm和A.ibd并不会导致系统严重问题。由于表A还没有记录入系统字典,实际上只需要将这两个文件直接删掉即可。

  因此5.6的这个新增要求过于苛刻。改进方法是将文件大小的判断提前,若发现小于4个page,则直接报错跳过这个表。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySql解决办法:2004:Can't create TCP/IP socket (24)
MySql解决办法:2004:Can't create TCP/IP socket (24)
4 0
错误解决办法:2006:MySQL server has gone away
错误解决办法:2006:MySQL server has gone away
5 0
使用Beego搭建Go语言的Restful API项目
此文章是Go语言开发项目的入门篇,hello word级别,主要讲解基于框架开发go项目的搭建过程
14 0
MySQL 8.0从入门到精通
MySQL 8.0从入门到精通
6 0
万字长文,62道Java核心面试题,一次性打包送给积极向上的你(1)
万字长文,62道Java核心面试题,一次性打包送给积极向上的你
3 0
宝贝,来,满足你,二哥告诉你学 Java 应该买什么书?
宝贝,来,满足你,二哥告诉你学 Java 应该买什么书?
2 0
强烈推荐 10 本我私藏的数据库书单,附读书方法
强烈推荐 10 本我私藏的数据库书单,附读书方法
4 0
mysql多线程访问总结
mysql多线程访问总结
5 0
31道Java核心面试题,一次性打包送给你(1)
31道Java核心面试题,一次性打包送给你
4 0
在 Spring Boot 中使用 HikariCP 连接池
在 Spring Boot 中使用 HikariCP 连接池
3 0
+关注
db匠
rds内核团队秘密研发的全自动卖萌机. 追加特效: 发数据库内核月报. 月报传送: http://mysql.taobao.org/monthly/
497
文章
0
问答
来源圈子
更多
阿里云数据库:帮用户承担一切数据库风险,给您何止是安心!支持关系型数据库:MySQL、SQL Server、PostgreSQL、PPAS(完美兼容Oracle)、自研PB级数据存储的分布式数据库Petadata、自研金融级云数据库OceanBase支持NoSQL数据库:MongoDB、Redis、Memcache更有褚霸、丁奇、德哥、彭立勋、玄惭、叶翔等顶尖数据库专家服务。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载