首頁 資料庫 mysql教程 Linux平台MySQL 5 InnoDB系统错误代码0

Linux平台MySQL 5 InnoDB系统错误代码0

Jun 07, 2016 pm 04:57 PM
linux教程

6 (SRV_FORCE_NO_LOG_REDO) 不要在恢复连接中做日志前滚。 数据库不能另外地带着这些选项中被允许的选项来使用。作为一个

mysql5.1.37在复制环境中出错了,错误如下:出错的是一台slave数据库,这台slave是用来做日常备份的。

Version: '5.1.37max-debug' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
InnoDB: Error: tried to read 524288 bytes at offset 0 212992.
InnoDB: Was only able to read 69632.
100903 0:10:18 InnoDB: Operating system error number 0 in a file operation.
InnoDB: Error number 0 means 'Success'.
InnoDB: Some operating system error numbers are described at
InnoDB:
InnoDB: File operation call: 'read'.
InnoDB: Cannot continue operation.
100903 00:10:19 mysqld_safe Number of processes running now: 0
100903 00:10:19 mysqld_safe mysqld restarted
100903 0:10:20 [Note] Plugin 'FEDERATED' is disabled.
100903 0:10:20 [Note] Plugin 'ndbcluster' is disabled.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
100903 0:10:21 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Error: tried to read 557056 bytes at offset 0 212992.
InnoDB: Was only able to read 69632.
100903 0:10:37 InnoDB: Operating system error number 0 in a file operation.
InnoDB: Error number 0 means 'Success'.
InnoDB: Some operating system error numbers are described at
InnoDB:
InnoDB: File operation call: 'read'.
InnoDB: Cannot continue operation.
100903 00:10:41 mysqld_safe mysqld from pid file /dbdata/mysql/mysql.pid ended


这是在晚上发生的,显示数据库在00:10分的时候关闭了,上面给的错误代码0没有任何解释。

仔细回想,每天数据库的全备也是在00:10分的时候,而上面提示的顺序是,首先是InnoDB读取失败,但是操作系统返回0值,不能继续读文件。

然后自动重启,重启过后校验日志,从.idb文件读取表空间信息还原数据恢复现场,但是又出现同样的读取错误,但是操作系统却正常的完成了一次读取,就是读取不到那个位置的数据。

数据库那么大,市场部的人又要立马使用,幸好不是线上直接提供服务的,我可以用其他节点备份,先做下面的操作


#innodb_force_recovery = 4
#skip-slave-start

innodb_force_recovery=4然后启动服务器,这下问题又来了,有一条insert语句过不去,不停的进行重启,当然了这个级别是不允许更新的,那么我只能关闭mysql,然复制也停下来,然后启动mysql,进行check,check也会跳过不可用的数据,check完了,我知道可以用了,注释掉这两行,然后重启,慢慢的等同步完。我知道我丢数据了,但是不知道具体丢了多少。

为了解决问题,采用的方法并不好,其实后来一想,如果要马上起来是可以的,级别改为3就可以了,用不着停掉复制,原因出在恢复的时候无法恢复,无法恢复现场,而回复现场是为了重做或者回滚没有做完的事情。所以并不是log buffer越大越好的,越大恢复的时间就越长。运行速度确实快了不少,但是如果出问题后恢复随之延长。


下面是MySQL手册给出的InnoDB崩溃恢复处理方案,这是没有备份的情况下,如果有其他节点的话,用不着如此做,即使按他的方法做,数据也丢失了,从其他节点恢复过来比较好。

如果数据库页被破坏,你可能想要用SELECT INTO OUTFILE从从数据库转储你的表,通常以这种方法获取的大多数数据是完好的。即使这样,损坏可能导致SELECT * FROM tbl_name或者InnoDB后台操作崩溃或断言,或者甚至使得InnoDB前滚恢复崩溃。 尽管如此,你可以用它来强制InnoDB存储引擎启动同时阻止后台操作运行,以便你能转储你的表。例如:你可以在重启服务器之前,在选项文件的[mysqld]节添加如下的行:
    [mysqld]innodb_force_recovery = 4innodb_force_recovery被允许的非零值如下。一个更大的数字包含所有更小数字的预防措施。如果你能够用一个多数是4的选项值来转储你的表,,那么你是比较安全的,只有一些在损坏的单独页面上的数据会丢失。一个为6的值更夸张,因为数据库页被留在一个陈旧的状态,这个状态反过来可以引发对B树和其它数据库结构的更多破坏。
    1 (SRV_FORCE_IGNORE_CORRUPT)
即使服务器检测到一个损坏的页,也让服务器运行着;试着让SELECT * FROM tbl_name 跳过损坏的索引记录和页,这样有助于转储表。
    2 (SRV_FORCE_NO_BACKGROUND)
阻止主线程运行,如果崩溃可能在净化操作过程中发生,这将阻止它。
    3 (SRV_FORCE_NO_TRX_UNDO)
恢复后不运行事务回滚。
    4 (SRV_FORCE_NO_IBUF_MERGE)
也阻止插入缓冲合并操作。如果你可能会导致一个崩溃。最好不要做这些操作,不要计算表统计表。
    5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
启动数据库之时不查看未完成日志:InnoDB把未完成的事务视为已提交的。
    6 (SRV_FORCE_NO_LOG_REDO)
不要在恢复连接中做日志前滚。
    数据库不能另外地带着这些选项中被允许的选项来使用。作为一个安全措施,当innodb_force_recovery被设置为大于0的值时,InnoDB阻止用户执行INSERT, UPDATE或DELETE操作.
    即使强制恢复被使用,你也可以DROP或CREATE表。如果你知道一个给定的表正在导致回滚崩溃,你可以移除它。你也可以用这个来停止由失败的大宗导入或失败的ALTER TABLE导致的失控回滚。你可以杀掉mysqld进程,然后设置innodb_force_recovery为3,使得数据库被挂起而不需要回滚,然后舍弃导致失控回滚的表。

linux

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在 Linux 下使用工作管理員 在 Linux 下使用工作管理員 Aug 15, 2024 am 07:30 AM

在 Linux 下使用工作管理員

解決Zabbix中文監控伺服器圖形圖表顯示亂碼 解決Zabbix中文監控伺服器圖形圖表顯示亂碼 Jul 31, 2024 pm 02:10 PM

解決Zabbix中文監控伺服器圖形圖表顯示亂碼

7個方法幫你查看Linux用戶的註冊日期 7個方法幫你查看Linux用戶的註冊日期 Aug 24, 2024 am 07:31 AM

7個方法幫你查看Linux用戶的註冊日期

如果linux系統下WPS缺失字型導致檔案亂碼該怎麼辦? 如果linux系統下WPS缺失字型導致檔案亂碼該怎麼辦? Jul 31, 2024 am 12:41 AM

如果linux系統下WPS缺失字型導致檔案亂碼該怎麼辦?

5分鐘教你加字體到Fedora 5分鐘教你加字體到Fedora Jul 23, 2024 am 09:45 AM

5分鐘教你加字體到Fedora

折騰!在樹莓派上運行DOS 折騰!在樹莓派上運行DOS Jul 19, 2024 pm 05:23 PM

折騰!在樹莓派上運行DOS

如何使用一條網路線讓兩台ubuntu主機連網 如何使用一條網路線讓兩台ubuntu主機連網 Aug 07, 2024 pm 01:39 PM

如何使用一條網路線讓兩台ubuntu主機連網

如何隱藏你的 Linux 的命令列歷史 如何隱藏你的 Linux 的命令列歷史 Aug 17, 2024 am 07:34 AM

如何隱藏你的 Linux 的命令列歷史

See all articles