|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
人们常说“成功孕育成功”,这种说法明显非常适合MySQL的情况。MySQL学习教程这个开源数据库号称在全世界有超过110万份的完全安装。你大概在利用MySQL过程当中,各类不测招致数据库表的破坏,并且这些数据常常是最新的数据,一般不成能在备份数据中找到。本章将报告怎样检测MySQL数据库表的妨碍。
表的妨碍检测和修改的一样平常历程以下:
◆反省堕落的表。假如该表反省经由过程,则完成义务,不然必需修复堕落的数据库表。
◆在入手下手修复之前对表文件举行拷贝,以包管数据的平安。
◆入手下手修单数据库表。
◆假如修复失利,从数据库的备份或更新日记中恢单数据。
在利用myisamchk或isamchk反省或修复表之前,应当起首注重:
◆创建数据库备份和利用更新日记,以防修复失利,丧失数据。
◆细心浏览本章内容今后再举行操纵,特别是不该该在浏览“制止与MySQL服务器交互感化”之行进行操纵。由于,在你没有充足的常识之前冒然操纵,大概会引发严峻的成果。
◆假如你在Unix平台上对表举行保护时,应当起首注册到公用的帐户mysql,以免对表读写会见发生一切权的成绩,和损坏数据库目次的一切权限。
数据库表的保护工具
MySQL的myisanchk和isamchk有用程序很相似,基础上它们具有一样的利用办法。它们之间的次要区分时所利用的表的范例。为了反省/修复MyISAM表(.MYI和.MYD),你应当利用myisamchk有用程序。为了反省/修复ISAM表(.ISM和.ISD),你应当利用isamchk有用程序。
◆为了利用任一个利用程序,应指明你要反省或修复的表,myisamchk和isamchk的利用办法为:
shell>myisamchkoptionstbl_nameshell>isamchkoptionstbl_name
假如你乐意,你能够在命令行定名几个表。
◆你也能指定一个名字作为一个索引文件(用“.MYI”或“.ISM”后缀),它同意你经由过程利用形式“*.MYI”或“.ISM”指定在一个目次一切的表。比方,假如你在一个数据库目次,你能够如许在目次下反省一切的表:
shell>myisamchk*.MYIshell>isamchk*.ISM
◆假如你不在数据库目次下,你可指定目次的路径:
shell>myisamchkoptions/path/to/database_dir/*.MYIshell>isamchkoptions/path/to/database_dir/*.ISM
◆你乃至能够经由过程为MySQL数据目次的路径指定一个通配符来感化于一切的数据库中的一切表:
shell>myisamchkoptions/path/to/datadir/*/*.MYIshell>isamchkoptions/path/to/database_dir/*/*.ISM
这个办法没法在windows平台下利用。
注重不管是myisamchk仍是isamchk都不合错误表地点的地位做任何判别,因而,应当大概在包括表文件的目次运转程序,大概指定表的路径名。这同意你将表文件拷贝到另外一个目次中并用该拷贝举行操纵。
反省数据库表
myisamchk和isamchk供应了表的反省办法,这些办法在完全反省表的水平方面有差别。
尺度的办法反省表
一般用尺度的办法就充足了。对表利用尺度的办法举行反省,不利用任何选项间接挪用便可,或用-s或--silent选项的任何一个:
myisamchktbl_nameisamchktbl_name
这能找出一切毛病的99.99%。它不克不及找出的是仅仅触及数据文件的破坏(这很不罕见)。
完整完全的数据反省
为了实行扩大反省,利用--extend-check或-e选项,这个选项反省数据:
myisamchk-etbl_nameisamchk-etbl_name
它做一个完整完全的数据反省(-e意义是“扩大反省”)。它对每行做每一个键的读反省以证明他们的确指向准确的行。这在一个有良多键的年夜表上大概花很长工夫。myisamchk一般将在它发明第一个毛病今后中断。假如你想要取得更多的信息,你能增添--verbose(-v)选项。这使得myisamchk或isamchk持续一向到最多20个毛病。在一样平常利用中,一个复杂的尺度反省(没有除表名之外的参数)就充足了。
中等水平的反省
指定选项--medium-check或-m
myisamchk-mtbl_name
中等水平的反省不如扩大反省完全,但速率快一些。其意义不年夜,较少利用。
假如关于--extend-check反省不呈报毛病,则能够一定表是无缺的。假如你仍旧感到表有成绩,那缘故原由一定在别的中央。应从头反省人亲睦像有成绩的查询以考证查询是准确誊写的。假如你以为成绩多是MySQL服务器的缘故原由,应当思索收拾一份妨碍呈报大概晋级到新的版本上。
大概有效的反省选项:
1.-i或―information打印统计信息,比方:
myisamchk-e-itbl_name
象后面的命令一样,可是-i选项告知myisamchk还打印出一些统计信息。
2.-C,--check-only-changed
只反省上一次反省后被修正的表
而且其固有的弹性使得它易于扩展以处理不断增长的需求,或当需求MySQL学习教程减弱时缩减规模。 |
|