mysql ibdata1 恢复_mysql误删ibdata1,还未重启时的恢复办法

一、mysql运行中,删除ibdata1文件

[root@orderer data]# rm -rf ibdata1

[root@orderer data]#rm -rf ib_logfile0

[root@orderer data]#rm -rf ib_logfile1

[root@orderer data]#

[root@orderer data]# ll??? 12436

-rw-r----- 1 mysql mysql 56 1? 20 09:13auto.cnf-rw------- 1 mysql mysql 1680 1? 20 09:13 ca-key.pem-rw-r--r-- 1 mysql mysql 1112 1? 20 09:13ca.pem-rw-r--r-- 1 mysql mysql 1112 1? 20 09:13 client-cert.pem-rw------- 1 mysql mysql 1676 1? 20 09:13 client-key.pem-rw-r----- 1 mysql mysql 220 1? 20 11:39ib_buffer_pool-rw-r----- 1 mysql mysql 12582912 1? 20 11:40 ibtmp1

二、这种情况下,mysql还能正常运行,在这种状态下,我们可以从proc目录下对应的文件夹恢复这三个文件

查看当前mysqld服务的进程号

[root@orderer data]# ps -ef|grepmysqld

root10696 3934 0 11:40 pts/3 00:00:00 /bin/sh /home/mysql-5.7.26/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf

mysql10855 10696 0 11:40 pts/3 00:00:01 /home/mysql-5.7.26/bin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=/home/mysql-5.7.26 --datadir=/home/mysql-5.7.26/data --plugin-dir=/home/mysql-5.7.26/lib/plugin --user=mysql --log-error=/home/mysql-5.7.26/log/mysqld.log --pid-file=/home/mysql-5.7.26/run/mysqld.pid --socket=/home/mysql-5.7.26/mysql.sock

root12705 10188 0 11:58 pts/5 00:00:00 grep --color=auto mysqld

[root@orderer data]#

当前进程号位10855,再执行如下命令查看ibdata 和ib_log相关文件

[root@orderer fd]# cd /proc/10855/fd

[root@orderer fd]# ll|grep -e ibdata -e ib_

lrwx------ 1 root root 64 1? 20 11:42 10 -> /home/mysql-5.7.26/data/ibdata1 (deleted)

lrwx------ 1 root root 64 1? 20 11:42 4 -> /home/mysql-5.7.26/data/ib_logfile0 (deleted)

lrwx------ 1 root root 64 1? 20 11:42 9 -> /home/mysql-5.7.26/data/ib_logfile1 (deleted)

可以看到这3个文件被标记了deleted,只要mysql服务部停止,proc下面就存在这3个文件

但是不能直接把文件复制过去,这样会造成数据文件损坏,我们必须保证所有buffer pool中的数据修改都保存到了硬盘文件上面, 为此,首先要停止更多的写入/更新/删除操作,然后等待innodb flush pages to disk. 停止写入的话,可以把网站应用关闭,或者lock tables: 通过锁表停止写入:

mysql>flush tables with read lock;

Query OK,0 rows affected (0.00sec)

mysq

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值