什么是页损坏 mysql_什么导致了MySQL InnoDB损坏且如何防护?

01fac6460a22031b8af8da5848698a70.png

适用于:

MySQL服务器版本5.0及以上

本文信息适用于所有平台。

目标

学习引起InnoDB损坏最常见的原因以及你如何对其进行防护。

解决方案

InnoDB损坏的原因

InnoDB损坏四个主要的原因有:

硬件错误(通常是磁盘或内存)

崩溃 (例如由于断电或操作系统bug引起的)

Bugs

不一致的备份

除了例如使用错误更正代码(ECC)内存外,防止硬件错误的措施很少。

对于由于断电引起的崩溃,UPS是最好的防护。对于有操作系统bug引起的崩溃 (幸好这些是很少发生的),电池备份的磁盘能帮助避免部分写。通常使用innodb_flush_log_at_trx_commit = 1来确保你在同步写入磁盘。

但注意操作系统或磁盘可能并没有实际刷掉写入。因为这个电池备份磁盘是防护。

除非按照更改日志并检查是否需要更新,否则bug很难防护。你能在以下找到更改日志:

MySQL 5.0

MySQL 5.1

MySQL 5.5

MySQL 5.6

MySQL 5.7

备份通常比预期的更常引起损坏 (包括不一致性,即在两个表中的数据不一致

)。这个情况的原因是即使有一个FLUSH TABLES WITH READ LOCK,InnoDB 将继续在底部写入数据文件。这表示即使备份方法对于比如MyISAM有作用,它可能对InnoDB不适用。

在所有情况中,建议经常备份并验证备份。

参考

https://dev.mysql.com/doc/relnotes/mysql/5.5/en/

https://dev.mysql.com/doc/relnotes/mysql/5.6/en/

NOTE:1023132.1 How to Create a Backup of MySQL Server

NOTE:1509073.1 How to Get Started with MySQL Enterprise Backup?

NOTE:1024113.1 InnoDB log buffer flushes to disk after each transaction

https://dev.mysql.com/doc/relnotes/mysql/5.0/en/

https://dev.mysql.com/doc/relnotes/mysql/5.1/en/

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/

https://dev.mysql.com/doc/refman/en/innodbparameters.

html#sysvar_innodb_flush_log_at_trx_commit

https://dev.mysql.com/doc/refman/en/flush.html

NOTE:2017846.1 InnoDB Corruption Recover Guide

NOTE:1502290.1 How to Recover a Corrupted InnoDB Table Definition File

NOTE:1476982.1 What do I do with InnoDB message “Database page corruption on disk or a failed file read of page”

NOTE:2049861.1 Master Note for InnoDB

NOTE:1416063.1 InnoDB Error: “log sequence number is in the future”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值