热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库中部分数据损坏恢复过程_MySQL

前几天因为MySQL数据库部分数据损坏原因,我尝试了下恢复数据,之后整理以下文档,供各位参考,以备各位同事以后如有类似问题,可以少走些弯路,尽快解决问题。k]@B?QP9ldE-环境:Windows2003B!`*v$O_数据库:MySQLT$nhhJ$R损坏数据文件名:function_prod
前几天因为MySQL数据库部分数据损坏原因,我尝试了下恢复数据,之后整理以下文档,供各位参考,以备各位同事以后如有类似问题,可以少走些弯路,尽快解决问题。 k]>@B?/
QP9/ldE'-
环境:Windows2003 B!`* >v$O_
数据库:MySQL 'T$ nhhJ$R
损坏数据文件名:function_products O.Z=`c g
:Q/S* R):
将数据库内容物理文件直接导入到mysql\data下,每只表各3个文件,依次分别为:.frm .myd .myi。首先我第一想到的是去网上搜索,寻找类似的工具,试图通过工具来恢复已损坏的文件,于是我在google上查找,找到一款名为mysqlrecovery的工具,安装后我用其进行恢复,只可惜效果太不理想,几十MB大的数据文件,恢复之后它提示我竟然只有几十KB。我又想到了MySQL下应有自己本身的修复程序等,于是想通过其来进行恢复,心想应不会太差劲吧,在网上查找了资料,提示:由于临时断电,使用kill -9中止MySQL服务进程,或者是MySQL正在高速运转时进行强制备份操作时等,所有的这些都可能会毁坏MySQL的数据文件。如果在被干扰时,服务正在改变文件,文件可能会留下错误的或不一致的状态。因为这样的毁坏有时是不容易被发现的,当你发现这个错误时可能是很久以后的事了。 ZXC3^ezQ
C,KZo`
于是,当你发现这个问题时,也许所有的备份都有同样的错误。我想我现在碰到的问题可能是这个问题,因为备份的数据也是有部分损坏的数据,所以导致不能完全运行, 意识到myisamchk程序对用来检查和修改的MySQL数据文件的访问应该是唯一的。如果MySQL服务正在使用某一文件,并对myisamchk正在检查的文件进行修改,myisamchk会误以为发生了错误,并会试图进行修复--这将导致MySQL服务的崩溃!这样,要避免这种情况的发生,通常我们需要在工作时关闭MySQL服务。作为选择,你也可以暂时关闭服务以制作一个文件的拷贝,然后在这个拷贝上工作。当你做完了以后,重新关闭服务并使用新的文件取代原来的文件(也许你还需要使用期间的变更日志)。 D$"wL7XW9V
6w?CX4JB*,
MySQL数据目录不是太难理解的。每一个数据库对应一个子目录,每个子目录中包含了对应于这个数据库中的数据表的文件。每一个数据表对应三个文件,它们和表名相同,但是具有不同的扩展名。tblname.frm文件是表的定义,它保存了表中包含的数据列的内容和类型。tblname.myd文件包含了表中的数据。tblname.myi文件包含了表的索引(例如,它可能包含lookup表以帮助提高对表的主键列的查询)。 要检查一个表的错误,只需要运行myisamchk(在MySQL的bin目录下)并提供文件的位置和表名,或者是表的索引文件名: L  '}AKo/
Eyr4>UU^
% myisamchk /usr/local/mysql/var/dbname/tblname &y{ `v2
RV2Fo vn
% myisamchk /usr/local/mysql/var/dbname/tblname.myi A\R=;4+8
"m}H/XQ
上面的两个命令都可以执行对指定表的检查。要检查数据库中所有的表,可以使用通配符: 8jQ Js*.
W=M*@IR
% myisamchk /usr/local/mysql/var/dbname/*.myi U!Bo]T
fRE^=`$7
要检查所有数据库中的所有表,可以使用两个通配符: >GmmB
U;g/LV(i
% myisamchk /usr/local/mysql/var/*/*.myi l  %KBYW
J9mX%5>~Od
如果不带任何选项,myisamchk将对表文件执行普通的检查。如果你对一个表有怀疑,但是普通的检查不能发现任何错误,你可以执行更彻底的检查(但是也更慢!),这需要使用--extend-check选项: =s 8 u5
 xJUG Pd
% myisamchk --extend-check /path/to/tblname :&K5oPxl
U;f55:yx
对错误的检查是没有破坏性的,这意味着你不必担心执行对你的数据文件的检查会使已经存在的问题变得更糟。另一方面,修复选项,虽然通常也是安全的,但是它对你的数据文件的更改是无法撤消的。因为这个原因,我们强烈推荐你试图修复一个被破坏的表文件时首先做个备份,并确保在制作这个备份之前你的MySQL服务是关闭的。 ,#l/JW?*
我在Win2003下通过命令提示符,输入: qo{brmJ$
`%
注:此为记录我当时操作的全部过程d:\documents and settings\administrator>c:c:\>cd MySQLc:\mysql>cd datac:\mysql\data>cd hw_enterpricec:\mysql\data\hw_enterprice>myisamchk function_products.frm'myisamchk' 不是内部或外部命令,也不是可运行的程序或批处理文件。c:\mysql\data\hw_enterprice>cd\c:\>cd mysqlc:\mysql>cd bin注:查看myisamchk的帮助信息c:\mysql\bin>myisamchkmyisamchk ver 2.6 for win95/win98 at i32by monty, for your professional usethis software comes with no warranty: see the public for details.description, check and repair of isam tables.used without options all tables on the command will be checked for errorsusage: myisamchk [options] tables[.myi]global options:-#, --debug=... output debug log. often this is 'd:t:o,filename'-?, --help display this help and exit.-o, --set-variable var=optionchange the value of a variable. please note thatthis option is deprecated; you can set variablesdirectly with '--variable-name=value'.-t, --tmpdir=path path for temporary files-s, --silent only print errors. one can use two -s to makemyisamchk very silent-v, --verbose print more information. this can be used with--description and --check. use many -v for more verbosity! -v, --version print version and exit.-w, --wait wait if table is locked.check options (check is the default action for myisamchk):-c, --check check table for errors-e, --extend-check check the table very throughly. only use this inextreme cases as myisamchk should normally be able tofind out if the table is ok even without this switch-f, --fast check only tables that haven't been closed properly-c, --check-only-changedcheck only tables that have changed since last check-f, --force restart with '-r' if there are any errors in the table.states will be updated as with '--update-state'-i, --information print statistics information about table that is checked-m, --medium-check faster than extend-check, but only finds 99.99% ofall errors. should be good enough for most cases-u --update-state mark tables as crashed if you find any errors-t, --read-only don't mark table as checkedrepair options (when using '-r' or '-o')-b, --backup make a backup of the .myd file as 'filename-time.bak'--correct-checksum correct checksum information for table.-d, --data-file-length=# max length of data file (when recreating datafile when it's full)-e, --extend-check try to recover every possible row from the data filenormally this will also find a lot of garbage rows;don't use this option if you are not totally desperate.-f, --force overwrite old temporary files.-k, --keys-used=# tell myisam to update only some specific keys. # is abit mask of which keys to use. this can be used toget faster inserts!-r, --recover can fix almost anything except unique keys that aren'tunique.-n, --sort-recover forces recovering with sorting even if the temporaryfile would be very big.-p, --parallel-recoveruses the same technique as '-r' and '-n', but createsall the keys in parallel, in different threads.this is alpha code. use at your own risk!-o, --safe-recover uses old recovery method; slower than '-r' but canhandle a couple of cases where '-r' reports that itcan't fix the data file.--character-sets-dir=...directory where character sets are--set-character-set=namechange the character set used by the index-q, --quick faster repair by not modifying the data file.one can give a second '-q' to force myisamchk tomodify the original datafile in case of duplicate keys-u, --unpack unpack file packed with myisampack.other actions:-a, --analyze analyze distribution of keys. will make some joins inMySQL faster. you can check the calculated distributionby using '--description --verbose table_name'.-d, --description prints some information about table.-a, --set-auto-increment[=value]force auto_increment to start at this or higher valueif no value is given, then sets the next auto_incrementvalue to the highest used value for the auto key + 1.-s, --sort-index sort index blocks. this speeds up 'read-next' inapplications-r, --sort-records=#sort records according to an index. this makes yourdata much more localized and may speed up thingsc:\mysql\bin>myisamchk c:\mysql\data\hw_enterprice\function_products.frmmyisamchk: error: 'c:\mysql\data\hw_enterprice\function_products.frm' is not a myisam-tablec:\mysql\bin>myisamchk c:\mysql\data\hw_enterprice\function_products.myichecking myisam file: c:\mysql\data\hw_enterprice\function_products.myidata records: 85207 deleted blocks: 39myisamchk: warning: table is marked as crashedmyisamchk: warning: 1 clients is using or hasn't closed the table properly- check file-size- check key delete-chain- check record delete-chainmyisamchk: error: record delete-link-chain corrupted- check index reference- check data record references index: 1- check data record references index: 2- check data record references index: 3- check record linksmyisamchk: error: wrong bytesec: 0-195-171 at linkstart: 841908myisam-table 'c:\MySQL\data\hw_enterprice\function_products.myi' is corruptedfix it using switch "-r" or "-o"
推荐阅读
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • php课程Json格式规范需要注意的小细节
    JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgramming ... [详细]
author-avatar
手机用户2602918163
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有