您的位置:首页 > 数据库 > MySQL

mysql无法启动

2009-05-06 16:10 309 查看

Innodb由idb数据文件恢复数据

2009年4月28日
阅读评论 发表评论

这里提供一个简单的办法:
1:在新的实例中创建相同的表结构
2:修改/etc/my.cnf,在mysqld段加入 innodb_force_recovery=6 #具体选择多少请参考手册
3:关闭mysqld
4:覆盖备份的idb文件
5:启动mysqld

这时候你会发现数据已经可以读取了。
这里有个技巧,在正常关机的情况下备份idb文件,这种方法可以做到直接copy实现数据迁移,不推荐使用。

情景1:mysql无法启动

[ERROR] /usr/local/mysql/libexec/mysqld: Can't create/write to file '/usr/local/mysql/yejr.pid' (Errcode: 13)

可以看到,日志提醒的是,无法创建文件:/usr/local/mysql/yejr.pid,错误代码(Errcode)为:13。这时候,我们可以通过mysql提供的工具 perror 来查看错误代码 13 具体代表什么意思:
[yejr@imysql ~yejr]# /usr/local/mysql/bin/perror 13
OS error code  13:  Permission denied

这下很明了了,没有权限,只需要修改一下目录属主即可:
[yejr@imysql ~yejr]# chown -R mysql:mysql /usr/local/mysql


情景2:mysql无法启动

Starting mysqld daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/lib/mysql/yejr.pid
mysqld ended

这是屏幕的标准错误输出,谁都无法理解真正是什么意思。很多新手在提问时,也一般只会提供这部分信息,当然是完全不够的。这时候,我们需要看看数据库主目录下的错误日志文件到底记录了什么内容。一般情况下,错误日志文件名为:xxx.err。
[yejr@imysql ~yejr]# more *.err
......
File './yejr-bin.000001' not found (Errcode: 13)
[ERROR] Could not use yejr-bin for logging (error 13). Turning logging off for the whole duration of the MySQL
To turn it on again: fix the cause, shutdown the MySQL server and restart it.
[ERROR] Aborting
[Note] /usr/libexec/mysqld: Shutdown complete
......

错误代码和刚才的一样,也是属于权限的问题,不过这次是要创建binlog。这时候,我们需要先确定是否需要开启 binlog,如果系统的I/O负载不是很高,而且没有完善的备份机制情况下,建议还是开启binlog,至少作为一种应急备份机制。如果不需要开启,我们只需要在 my.cnf 中把类似以下2行注释掉:
#log-bin = xxx
#binlog-format = xxx

这时候就会禁用binlog,然后跟上面的例子一样,修改下目录属性,应该就可以了。
总结:在你不知道该怎么办的时候,第一件事,就是查看 xxx.err 文件,然后把该文件最新部分的内容提供给你要询问的人,以方便他们帮助你解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: