mysql崩溃后,在没有备份sql的情况下,通过数据目录下ibdata1进行数据库恢复。
当然,如果你有最近一两天内备份的话,最好使用备份文件进行恢复。
注意:ibdata1是innodb类型的数据文件,数据库文件下仅是表结构。
1. 对存储数据文件夹进行备份,然后删除文件夹
[root@jaofuan ~]# cp -R /www/server/data /www/server/data_bak
[root@jaofuan ~]# rm -rf /www/server/data
我用的是宝塔Linux面板,所以mysql数据文件存在了 /www/server/data 下。
如果不知道你的数据文件在哪,可以在配置文件中查看 datadir 项,可使用 find / -name my.cnf 命令进行查找,my.cnf一般存储在 /etc/my.cnf 下。
2. 初始化mysql
详情可查看 Mysql 初始化设置密码
初始化后,关闭mysql
[root@jaofuan ~]# service mysqld stop
3. 开始恢复
将要恢复的数据库文件夹,从备份中cp到data下。(以blog库为例)
同样将ibdata1,从备份中cp到data下。
[root@jaofuan ~]# cd /www/server
[root@jaofuan server]# cp -R /www/server/data_bak/blog /www/server/data/blog
[root@jaofuan server]# cp -R /www/server/data_bak/ibdata1 /www/server/data/blog
修改blog文件夹和ibdata1文件用户组和用户权限
[root@jaofuan ~]# cd /www/server/data
[root@jaofuan data]# chown -R mysql:mysql /www/server/data/blog
[root@jaofuan data]# chown mysql:mysql /www/server/data/ibdata1
删除ib_logfile0与ib_logfile1日志文件
[root@jaofuan data]# rm -rf /www/server/data/ib_logfile0
[root@jaofuan data]# rm -rf /www/server/data/ib_logfile1
4. 重启mysql
[root@jaofuan data]# service mysqld restart
如果启动成功,OK大功告成
如果启动失败,报错:
MySQL server PID file could not be found! [FAILED]
Starting MySQL..The server quit without updating PID file ([FAILED]ver/data/jaofuan.pid).
执行修复命令,修复前请查看data下是否存在ib_logfile文件,如果有删掉
[root@jaofuan data]# wget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.sh
5. 成功后,尽快对数据进行sql备份
可使用mysqldump命令进行sql备份,此处 -x 为锁定所有数据库中的所有表,以保证数据的一致性
[root@jaofuan data]# mysqladmin -h127.0.0.1 -uroot -p123456 -x blog >/www/server/blog.sql
小编操作时遇到了很多问题,特整理一份文章进行记录。
参考:
从mysql的data目录中恢复数据库
mysql 数据文件恢复教程(1)
mysqldump: 备份数据库报错
版权声明:本文为weixin_41530957原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。