mysql介质故障_Pciessd异常Readonly致Mysql反复crash如何处理?

去年10月份发生一起fio卡变为readonly(和双十一无关),发生一起fio卡变为readonly,造成mysql crash的故障,整理如下。

【机器配置】

System | Dell Inc.; PowerEdge R710;

Processors |physical=2,cores=12,virtual=24,hyperthreading=yes

# Memory #####################################################

Total | 94.40G

Free | 555.50M

Swappiness |vm.swappiness=0

# Disk #####################################################

2 ioMemory devices in this system

Fusion-io driver version: 3.1.5 build 126

Fusion-io ioDrive 640GB *2 –>mdadm –>/dev/md0

ibdata,ib_logfile,bin_log,relay_log on SAS 600GB raid1

【问题表现】

13:28,监控发出***个db_ping告警

mysql的alert log如下:

/u01/mysql/libexec/mysqld: Can’t create/write to file ‘/u01/mysql/tmp/ibU5kXB4′ (   Errcode: 30)

121104 13:28:10  InnoDB: Error: unable to create temporary file; errno: 30

121104 13:28:10 [ERROR] Plugin ‘InnoDB’ init function returned error.

121104 13:28:10 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.

121104 13:28:10 [ERROR] Aborting

InnoDB: Error: tried to read 16384 bytes at offset 0 41517056.

InnoDB: Was only able to read -1.

121104 13:14:59  InnoDB: Operating system error number 5 in a file operation.

InnoDB: Error number 5 means ‘Input/output error’.

InnoDB: Some operating system error numbers are described at

InnoDB: http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html

InnoDB: File operation call: ‘read’.

InnoDB: Cannot continue operation.

mysqld: my_new.cc:51: int __cxa_pure_virtual(): Assertion `! “Aborted: pure virtual     method called.”‘ failed.

121104 13:14:59 – mysqld got signal 6 ;

由上判断IO设备有问题,此时touch /u01/mysql/tmp/ibd:touch: cannot touch `/u01/mysql/tmp/ibd’: Read-only file system

由于是核心集群,有数据强一致需求,通过DBA手工强制主备切换,故障排除。

【问题原因】

fusionIO卡出现readonly

/var/log/message

Nov  4 13:14:59 my160130.cm6 kernel: : fioerr Fusion-io ioDrive 640GB 0000:07:00.0: Single Bit Event Upset Error Dete4ted – interrupt: val[0]: 000ff16

fio-status -a

fct1    Failed: DEVICE IS OFFLINE. ALL READS AND WRITES WILL FAIL!

ioDrive 640GB MLC, Product Number:2TTK9, SN:436946

!! —>There are active errors or warnings on this device!  Read below for details.

ioDrive 640GB MLC, PN:00214401201

Located in slot 0 Center of Pseudo Low-Profile ioDIMM Adapter SN:436946

WARNING: READ-ONLY MODE. ALL WRITES WILL FAIL!

ACTIVE ERRORS:

The ioMemory has encountered an internal error and has been

temporarily disabled.  All reads and writes will fail.

The ioMemory is not allowing write operations.

【问题分析】

•SEUs are transient soft errors, and are non-destructive. A reset or rewriting of the device results in normal device behavior thereafter

fio的控制模块是跑在fpga上的,元数据存储在DRAM和SSD上,断电可恢复。2.x的驱动发生该错误后,会rewriting进行修复。3.x的驱动提高了安全性,发生该错误后,会直接reset,卡read_only等待power recycle

•SEU class errors are caused by cosmic ray particles making it’s way into the NAND controller or by a failing NAND controller

FPGA本身的介质损坏或者宇宙射线,都是该错误的诱因。五月份message中有类似Write Path报错,2.x驱动自动rewrite修复了,3.x的驱动安全级别更高,reset后置为readonly

•Write Path Parity Error

这个错误是SEU错误的前驱,绝大多数可修复。同集群中,有3台发生过并自动修复。

•FPGA的成本相比开芯片低廉很多,编程迭代迅速,但健壮性不开芯片

【数据丢失】

因undo,redo,binlog都在u02的SAS盘上日志完整,备库基本没有延迟,故没有数据丢失;

但由于SEU可能导致当时写入的block错误,造成data不一致,保险起见还是重做备库,利用binlog同步所有数据。

•SEU class of error my result in data on the device being corrupted.The database should be verified or restored from backup

【改进措施】

FPGA老化后,有一定几率发生Single Event Upset错误,核心库要及时替换;

FPGA对宇宙射线敏感,需要控制机房环境,并分散机柜上架;

改进更敏感的message,dmesg告警。

【编辑推荐】

【责任编辑:黄丹 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值