昨天想着备份数据库,但是没有成功,错误原因是#Got errno 28 on write
查到是因为磁盘空间不足或者mysql设置中max_allowed_packet变量设置过小
在mysql命令行中使用#set global max_allowed_packet = 2*1024*1024*10。将其设置为20M
并且重新启动mysql命令行,再次备份,发现还是同样的错误,怀疑是磁盘空间满,经查看,
[root@AY121231034820cd91077 bin]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 20G 412M 98% /
tmpfs 498M 0 498M 0% /dev/shm
/dev/xvdb1 69G 17G 49G 26% /home
发现第一块磁盘确实满了,但是不知道那些东西放到第一块磁盘,所以将www目录中的一堆不明所以的数据库进行了删除。
删除之后进行备份发现还是出现#Got errno 28 on write,不明所以。。。。。
此时登陆网站发现登陆不成功,错误原因为Table '***' is marked as crashed and should be repaired。
重启服务器,重新打开nginx、mysql、php、都不行,打开mysql的时候出现错误,提示已经把错误写进日志。
查找到mysql的错误日志位置为:/var/log/mysqld.log.打开查看后发现错误如下
150211 13:49:01 [ERROR] /usr/local/mysql/bin/mysqld: Table './erqilu_87/pw_log_userdefend' is marked as crashed and should be repaired
150211 13:51:21 [ERROR] /usr/local/mysql/bin/mysqld: Table './erqilu_87/pw_log_userdefend' is marked as crashed and should be repaired
150211 13:52:02 [ERROR] /usr/local/mysql/bin/mysqld: Table './erqilu_87/pw_log_userdefend' is marked as crashed and should be repaired
查到错误原因有很多:
1.可能是频繁更新查询dede_archives
2.数据库因为某种原因造成了损坏
经查修复方法如下
找到mysql的安装目录的bin/myisamchk(本站是:/usr/local/mysql/bin )工具,这里是在命令行中输入:
myisamchk -c -r /目录名/表名.MYI
这里是:myisamchk -c -r /var/lib/mysql/erqilu_87/pw_log_userdefend.MYI
然后myisamchk 工具会帮助你恢复数据表的索引。不用重新启动mysql,问题就解决了。
二七路网站可以进行正常访问和登陆。
其中连带着还有其他几种修复方法,甚至MYI文件丢失后都可以修复,在此不在赘述。
出现问题修复方法总结
1.先查看日志
2.根据日志进行网上搜索问题解决的办法
3.尝试修复
2015年2月11日14:47:41
备份和恢复数据库的方法经过实践后会另外写出。