Chinaunix首页 | 论坛 | 博客
  • 博客访问: 560397
  • 博文数量: 113
  • 博客积分: 7005
  • 博客等级: 少将
  • 技术积分: 1275
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-16 11:15
文章分类

全部博文(113)

文章存档

2008年(18)

2007年(17)

2006年(78)

我的朋友

分类: Mysql/postgreSQL

2007-10-16 00:19:22

快速修复mysql数据库
 
有的时候因为停电或者其他原因导致数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如
检查优化并修复所有的数据库用:
# mysqlcheck -A -o -r -p
Enter password:
guestbook.simpgb_avatars OK
guestbook.simpgb_bad_words OK
guestbook.simpgb_banlist OK
guestbook.simpgb_data OK
......
......
......
修复指定的数据库用
# mysqlcheck -A -o -r Database_NAME -p
即可
 
 

附:MySQL数据库表损害修复详解

安装我们的论坛之后,会在mysql数据库中建立两种形式的表,一种是MyISAM,另一种是Heap,目前我们的标准论坛的数

据库中,只有cdb_sessions是Heap形式的,即是我们常说的内存表,这个你可以打开安装时候的install文件夹里面的

discuz.sql文件,可以参照着查看每个表的具体形式!

   对于MyISAM形式的表,在数据库中每建立一个表,都会产生三个文件,后缀名分别是MYI(myindex),MYD(mydata),FRM,

   其中myi为数据库索引文件的后缀名,myd为数据文件的后缀名,frm为表的格式的后缀名,所以,一个表中的记录会存在myd格式的文件中,表的字段信息会存在frm格式的文件中。

   对此种格式的表,一般容易出现myi和myd格式文件的损害,例如:

   1、Can't open 'cdb_posts.MYI'


   2、SELECT groupid,url,title FROM cdb_onlinelist WHERE 1 ORDER BY displayorder Error: Got   error 127 from storage engine

Errno.: 1030

   这两种错误一般都会提示1030错误,即表出现错误,读取不了表中的数据了!

   这种错误,你就得修复一下表了!有三种方法可以修复!

   第一种,可以使用下载的程序包中的utilities/repair.php进行修复

   第二种,可以使用phpmyadmin的修复表的功能进行修复

   第三种,对于有主机权限的用户,可以在mysql的dos安装目录下,使用myisamchk命令进行检查

   具体的请参照http://kb.discuz.net/index.php?title=%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%E6%8D%9F%E5%9D%8F%E7%9A%84%E6%95%B0%E6%8D%AE%E8%A1%A8

   建议先用第一种方法进行修复cdb_sessions是无法修复的表,它只产生一个文件,后缀名为frm,即只有表的格式的文件,这类表的数据只存放在内存中,

   cdb_sessions表中记录了当前登录的用户的登录信息,因此如果此表发生了损害,说明此表的格式文件损害或者在内存中的数据不可读取了,

   一般是读表的时候造成表的锁死了,那只能重建一下,你可以打开安装时候install文件夹里的discuz.sql文件,然后找到cdb_sessions表的建表语句,到phpmyadmin里面执行就行了

   这样,有关discuz的两种类型的表的损坏就可以完全修复了!(截图请参照http://www.discuz.net/thread-235998-1-1.html)
阅读(1107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~