`
JasonChi
  • 浏览: 94754 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

打雷断电引起的mysql数据表出错 解决

阅读更多
首先强制修复数据,将数据导出,my.ini中设置innodb_force_recovery=1,重启mysql。
然后重新创建一个数据库 将导出数据导入

引用

今天经历了一次痛苦的mysql表修复操作,感觉还是比较有意义的,写出来供大家参考
某客户的mysql出现异常,经常自动停止,err中如下记录
090614 2:47:09 [Note] D:\MySQL\bin\mysqld-nt: ready for connections.
Version: '5.0.17-nt' socket: '' port: 3306 MySQL Community Edition (GPL)
InnoDB: Error: page n:o stored in the page read in is 3755989959, should be 19641!
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 19641.
InnoDB: You may have to recover from a backup.

由于客户对mysql不是很了解,也没有对对应的库进行过备份,所以也就没有办法从备份恢复了,之前也有碰到过,不过当时是一条记录的问题,判断方式就是用mysqldump导处数据时肯定在固定的记录上停止,这个当时简单的处理就是把对应记录删除后手动添加上去了,这次的却比较复杂,尝试先备份数据,每次mysqldump都会出错,错误点不是在同一个表,只导一个表时id也不一样,这样就怀疑库问题了,由于使用的innodb引擎,按照网上的说法“innodb表损坏,可能导致mysqld不断地crash。在用户访问到有问题数据的位置就可能导致crash。而mysql目前没有修复innodb表的工具,只能用innodb_force_recovery=1,避免在导出数据时再crash。”在my.cnf中设置好后重启库,再用mysqldump或者select *把出问题的表导出来。然后重新导入(删除原表)。如果数据量大的话,就得慢慢等了。还好比较幸运的是,增加强制修复参数后,完整地导出了数据。其他工作就是从新创建数据库并导入数据了。在增加强制修复参数后发现err日志大小飙增,比数据库本身都还大

InnoDB: See also http://dev.mysql.com/doc/mysql/en/Forcing_recovery.html
InnoDB: about forcing recovery.
InnoDB: Ending processing because of a corrupt database page.
090615 15:35:41 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...
090615 15:35:42 InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 1804286759.
InnoDB: Doing recovery: scanned up to log sequence number 0 1804286759
InnoDB: Last MySQL binlog file position 0 0, file name
090615 15:35:42 InnoDB: Started; log sequence number 0 1804286759
InnoDB: !!! innodb_force_recovery is set to 1 !!!
090615 15:35:42 [Note] D:\MySQL\bin\mysqld-nt: ready for connections.
Version: '5.0.17-nt' socket: '' port: 3306 MySQL Community Edition (GPL)

这里还碰到一个问题,在加了强制修复参数后,如果对数据库进行写入参数会出现:
ERROR 1030 (HY000): Got error -1 from storage engine


不过发现高兴地过早了,新导入的数据还是有问题,这样就怀疑数据库本身故障了,由于本身只提供了一个应用程序的应用,也只有一个用户库,之前已经备份好了,卸载mysql,重新导入OK。


导入优化:

mysql恢复的导入过程是一个痛苦的过程,30多万条记录,导了2个多小时,后同事在网上找到一个方法,在导出时合理使用几个参数,可以大大加快导入的速度。
-e 使用包括几个VALUES列表的多行Insert语法;
-max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
-net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。

注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值大,否则可能出错。

首先确定目标库的参数值,这个mysql版本相同的默认都相同,当然也可以在mysql.cnf中修改
mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
mysql> show variables like 'net_buffer_length';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| net_buffer_length | 16384 |
+-------------------+-------+
1 row in set (0.00 sec)


根据参数值书写mysqldump命令,如:
C:\Documents and Settings\Administrator>mysqldump -uusername -ppassword --def
ault-character-set=gbk --opt --add-drop-table databasename -e --max_allowed_pac
ket=1048576 --net_buffer_length=16384 > D:/090615.sql

之前2个多小时才能导入的sql现在7分钟内就可以完成了。真的很惊讶!!


对于这些参数可以看看 mysqldump的帮助和以下的文章

http://www.ixdba.net/article/53/243.html
http://dev.mysql.com/doc/refman/5.1/zh/using-mysql-programs.html


分享到:
评论

相关推荐

    闪电打雷 简易的小动画

    闪电打雷闪电打雷闪电打雷闪电打雷闪电打雷vv

    打雷屏保DFDDD.EXE

    "打雷屏保DFDDD.EXE"是一款动态屏幕保护程序,用于在用户无操作时为电脑屏幕增添生动的视觉效果。这款屏保模拟了真实的打雷闪电场景,为用户提供了一种独特的视觉体验,同时也可以在一定程度上保护显示器,避免长...

    会打雷下雨的屏保

    【标题】:“会打雷下雨的屏保” 这个标题指的是一个具有动态效果的屏幕保护程序,它模拟了雷雨天气的场景。在计算机不活动时,这种屏保可以活跃地展示雷电交加、雨水倾盆的画面,为用户的电脑增添生动的视觉体验。...

    EH-4数据处理若干建议

    ### EH-4数据处理若干建议 #### 一、引言 在福泉铝土矿整装勘查项目中,通过对高频大地电磁测深和高密度电法地电断面的成果图进行观察,发现利用EMAGE-2D软件处理EH4数据,特别是采用张量模式数据并进行快速松弛二...

    windows打雷游戏代码

    这是一个很好的windows打雷游戏代码

    js 特效 html 特效 打雷闪电效果

    js 特效 html 特效 打雷闪电效果

    javascript经典特效---打雷闪电效果.rar

    本教程将聚焦于一个经典的特效——打雷闪电效果,它能够为网页增添强烈的氛围感,比如在游戏场景、恐怖主题或者天气应用中都能派上用场。 实现JavaScript打雷闪电效果主要涉及以下几个核心知识点: 1. **HTML结构*...

    最优秀的打雷下雨桌面屏保

    动态屏保,正如“最优秀的打雷下雨桌面屏保”所示,是一种能够展示动态场景的屏保类型。这种屏保不仅具有观赏性,还能增加用户的娱乐体验。"打雷下雨"的屏保可以模拟真实的天气效果,通过高仿真度的图形和声音效果,...

    3D合成孔径打雷城乡算法

    最近的3D合成孔径雷达城乡算法,是目前合成孔径雷达的最新方向

    小班下学期安全教案《遇到打雷怎么办》润新教育.txt

    小班下学期安全教案《遇到打雷怎么办》润新教育.txt

    打雷视频.aep

    打雷视频.aep

    小学语文常用歇后语分类大全有关打雷的歇后语

    2. 打雷不下雨,装样子 - 描述那些只会虚张声势、空有其表,却没有实际行动的人或事。 3. 雷声大雨点小 - 形象地表示事情声势浩大,但实际上效果微乎其微,常常用来批评那些只说不做或承诺多于行动的情况。 4. ...

    打雷屏保,非常炫,欢迎大家下载试用

    打雷屏保是一种创新的计算机屏幕保护程序,旨在在用户无操作电脑时提供一种动态、引人入胜的视觉体验。这款屏保以其逼真的打雷、闪电和雨滴效果而受到用户的欢迎,为静态的电脑屏幕增添了一抹生动的自然元素。下面将...

    无法联网解决办法

    ### 无法联网解决办法 #### 常见问题及解决方案 **1. 驱动程序安装错误** - **现象**: 在设备管理器中,网卡设备旁边出现黄色惊叹号。 - **解决方法**: 更新或重新安装正确的驱动程序。可以通过访问制造商的官方...

    信息学奥赛一本通 题目数据

    这个压缩包内的文件名虽然经过了特殊编码,但我们可以推测其中包含的是C++编程题目的数据,可能是题目描述、输入输出示例、解决方案或者是与《信息学奥赛一本通C++第五版》配套的光盘资源。这些资源可能包括源代码...

    js特效打雷闪电效果

    在本案例中,我们讨论的是如何利用JavaScript实现一种特殊的视觉效果——打雷闪电特效。这个特效可以增强网页的氛围感,比如用于恐怖主题或天气模拟等场景。 首先,`js打雷闪电效果.htm`文件是一个HTML文件,其中...

    打雷对电脑有危害吗.docx

    打雷对电脑确实存在潜在的危害,这主要归因于雷电产生的高压电和强烈的电磁脉冲。当雷暴发生时,雷电可能会沿着电线传输,尤其是没有适当防雷设施的环境,会对电子设备,如电脑,造成损害。下面将详细解释这种危害的...

    下雨天气等级图片

    在IT行业中,图像处理和数据可视化是至关重要的领域,尤其在气象预报和环境监测中。"下雨天气等级图片"这个主题涉及到的是如何用图形来表示不同的天气状况,这对于天气应用程序、网站设计、甚至是教育和科普都有深远...

    H5打雷下雨闪电动画特效.zip

    "CSS特效"是指使用CSS(层叠样式表)创建的视觉效果。CSS3引入了许多新的选择器和属性,如`keyframes`,使得创建复杂的动画成为可能。在这个H5特效中,CSS可能被用来定义动画的时间序列、速度曲线以及各个阶段的样式...

Global site tag (gtag.js) - Google Analytics